So how do you become one of the survivors and thrivers?
First and foremost, love what you do. I guarantee that the path will be steep at times, flooded with lessons, and littered with occasionally humiliating prat-falls. On the up side, you will enjoy breathtaking heights of personal satisfaction, be awash with new things to learn, and gain a greater appreciation for the people around you who help dust you off and get you back on your feet. The love of coding is what will get you through those rough patches.
Second, embrace change. Your degree, certificate, training or tinkering will give you a good start, but it is only the beginning. The minute you plop yourself down in front of a computer to code for cash, you'll begin climbing a constant learning curve. On the up side, in two years the playing field is leveled because the technology has changed in that short period. The first two years in the industry are critical. Get past that and do a good job and you'll have no problem finding a gig.
Third, be curious. How does that code work? Get a copy of the code and look at it, play with it, change it. Did you break it? Who cares, you'll learn to do it right by doing it wrong. Go get a fresh copy and try again. Working locally of course! Have a fun idea? Build it. Maybe you'll finish, maybe you won't, but the insights gained along the way will be valuable. Practice. Visit CodeKata (http://codekata.pragprog.com/) or Coding Dojo (http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue) and do some of the exercises, then explore how others solved them. These are great for developers of all levels.
So you have the motivation. Do you have the skills?
I've got nothing to say about talent. Sure, I know some people who leave me gobsmacked by their talent, but talent is nothing without motivation and skill behind it.
Here is your mantra:
1.You will never know everything.
2.You will make mistakes.
3.Every once in a while you will fail.
And there is a cure for each of those: fellow programmers. Lone wolves and cowboys are the first to burn out in this field. They may be motivated, skilled and talented, but they cannot know everything, never make a mistake nor avoid failure. Cultivate good relationships with your peers, treasure them, be there for them and they will be there for you. Never slag their code, never blame them for your failings, no matter how justified you feel in the moment. Apologize if you do. Profusely. If you do not understand why they did something, be curious and ask. Get advice, admit when you're stuck. If something is broken and it is not yours, gently let the author know so that they have an opportunity to learn from it. Offer to help fix it, particularly if they're slammed.
And here's the thing – according to Steve McConnell in “Code Complete”, the industry average is 15 to 50 errors per 1000 lines of code (depending on the language used). This is by professionals - good programmers doing the best job they can under a deadline. Accept that if you write code, you will make mistakes. Some of it will be subtle, perhaps even harmless, and some of it will crash under conditions you did not even know existed while building it. Job experience and constant learning will train you to avoid common pitfalls, but there are plenty of other kinds of mistakes to go around.
Remember, you will be hired to solve problems for which no off-the-shelf solution exists. If such a solution existed, they wouldn't be paying you.
That also underlines the reason why any company that has a mature in-house code base will insist that you reuse existing code on your projects or use a well-known framework. Code that has been in use for a while and proven to be stable is nearly always better than what you can throw together, no matter how brilliant your approach. On the upside, you get to focus upon the new stuff. Do you really want to solve problems that have already been figured out by other people? Of course not!
Add new comment