Improving Your Development Habits

From As3gaming

Jump to: navigation, search

This article is syndicated from gamepoetry.com with the approval of the original author.

For a few years I worked with a coder genius, a college mate named Tim, who has since gone off to bigger and better places (namely tech development and research in 3d graphics rendering at Nvidia, Sony and now at Intel). By far the most capable and efficient coder I’ve ever met, Tim was also a one man coding gestapo. He had a 0-tolerance policy against crappy code. At the time, I thought I was a pretty decent coder. I was not. I was approaching an engineering task like a caveman and I’m embarrassed to even think about the crap I was producing back then.

Our project was collaborative, but Tim was in charge of signing off on code submissions. Every time I submitted code I would wait anxiously to see what he had to say about it. At first, I “just wanted to get stuff done” and was just hoping I could sneak a couple bad choices by him - which almost never worked - so that I could move on to the next feature. The truth of the matter is that Tim was writing more code than me, in less time, and it was better written, more efficient and traced in a gold lining (okay, maybe not that last one).

Part of that is Tim is just a really intelligent guy, but, as I noticed, a lot of it was the attitude that Tim brought to coding. Tim followed a set of basic rules that applied to the code he produced. They were apart of his coding habit, because he had integrated them into his work flow long before, and as a result they were second nature. The result was code efficiency and quality that I simply could not compete with, even though I was (supposedly) just focusing on getting the features in place and not really concerned with quality.

Tim was also constantly researching new methods to improve the quality and speed of his code output. Not soon after I felt like I had just managed to master a particular habit did I feel that Tim was already introducing me to a new methodology that was even more powerful. At times I felt like it was impossible to keep up with Tim, and wanted to just resign myself to mediocrity.

Luckily, Tim never relented. He kept beating me with his dogmatic coding approach and it started to sink in. I began to notice that each code revision would take less and less time, and Tim would have fewer and fewer comments. I noticed that I was accomplishing more, it was taking less time to implement, but more importantly, the code was becoming easier to work with. I could return to code I wrote months beforehand and work with it like I had just completed it.

Through my work with Tim and his indoctrination of the importance of improving your craft, I’ve managed to develop a set of coding habits that help me to design, implement and debug complex software architectures with minimal effort.

If speed and quality of implementation is important to you, you should consider yourself an eternal student of your trade. If you’re not actively thinking about improving your craft, then you are already off your peak. If you think you don’t need to improve, then your ego has perhaps gotten a little out of check. If you don’t believe me, that’s fine, you’re beyond help anyway. :)

Don’t ever stop being a student. There is always something out there that someone can do better than you. Be happy that they’re willing to teach you. Learn it, integrate it, make it a habit, and that is how you can become a master of your trade.

Now that we’re done with the theory of it all, what can you do to start improving your development habits? Well, you’ve read this far, so you’re obviously on the right track. The best thing you can do is keep your head up and stay objective. Read good books, follow insightful blogs, talk to the other people in your field about the good habits they’ve developed, and lastly experiment. You cannot adapt new ideas if you don’t try them out.

This article will be followed later by specific personal habits that can help improve your work quality and throughput.

Personal tools