Google
 

Monday, August 20, 2007

5 Tips to Gaining Software Development Experience

In the 10 years I've been programming professionally, it has become overly aparent that there is a huge difference between skill and experience. While others could seemingly tell the difference when I first started, I couldn't. To me it seemed that skill and experience were one in the same and you needed one to have the other, but that's not always true.

Insight

Over the years I've had the great fortune to work with a number of skilled and experienced people. In many case they were simultaneously skilled and experienced, but I began to notice that some people, while they knew what they were talking about couldn't program worth a damn, an others who were very skilled programmers didn't have enough experience to think ahead, or identify possible pitfalls that a more experienced programmer would.

Lately I've worked with quite a few young, very skilled programmers right out of college. I found that after helping them out a few times, they'd be constantly asking for my review and approval on their code. Nine times out of ten, I'd look at it and send them away with a couple things to rethink redesign. Their code was mostly well written and efficient, but it lacked the insight that experience brings.

That lead me to wonder how we gain experience. When I was gaining mine, I didn't have a senior programmer to review my code nor did I automatically write perfectly manageable code. Throughout those years, there was alot of trial and error. I spent alot of time rewriting poorly thought out code, gaining experience, and learning to lean on my experience. Now that I understand what experience is, and how to respect and utilize it, here's what I propose for unexperienced programmers.

The 5 Tips

  1. If you have the opportunity, pay attention to those with more experience than you, read through their code, and ask questions when you don't understand why they would do something the way they did. Most of the time you'll probably hear "I didn't have enought time to do it the right way," or "I don't remember," but sometimes you'll get an explanation that will teach you something.
  2. Work on your own little projects in your free time. The more code you write, the more experience you'll gain. I've found that little side projects that I don't have much time to work on teach me more in the end than my paying work. This happens because when you work on something every day, you don't have to look back as much to re-familiarize yourself with the code. When you work on something for a couple of hours a week or month, you are constantly forced to read back through your own code to remember what you were doing. Poor documentation in this case is a plus since the less you remember the more you'll have to re-analyze your own code.
  3. Keep yourself up-to-date on new technologies. Often times new technologies will give you ideas to improve upon things you have written in the past. While you probably won't have time to go back and rewrite these things, you'll certainly have the experience to do it right the next time you do something similar.
  4. Teach yourself to receive criticism in a positive way. If someone has the balls to tell you you're the worst programmer they've ever know, sure, give them hell. If they simply tell you that you probably should have done something differently and attempt to show you a better way, listen to them and consider it experience gained. If you're completely sure they're way off base, ignore it for now, reconsider it later, and if it's still completely wrong, just forget it.
  5. When you see others struggling with their own problems in code, try to help them out. For one, if you do succeed in helping them, you get a complimentary ego boost. If not, when the problem is solved, you'll likely be clued in on the solution. And once again gain experience and knowledge that may help you out in the future.

For those of you who are already experienced programmers and have read through this, I hope you'll help out those who work under you and are just getting their start. Mainly for those of you who are just starting out, I wish you the best. I know for me, the climb to where I am today has not been easy, and without the help of others I would not be where I am.

No comments: