Whether I like it or not, I have to come to terms with the problem.
Over the last few years my coding/programming skills have started to deteriorate.
Not that I’m losing my skill to write code that works. But just that I haven’t had a chance to evolve the quality, compactness and flow of code that I write.

I think I can understand why this is happening … I just don’t know if I can fix it immediately or without changing the reasons I code.

1) Over the last few years, I haven’t had anyone more experienced look over my code. The company is too busy getting products completed, keeping customers happy and trying to meet deadlines. No time to spend on going back and looking at code that works. A mentality of “If it works, forget it” has snuck in.

2) I haven’t had my peers look at my code in years. I got all my clean coding skills through peer-review. All those hours in the computer science labs in school and college and on weekends. With people like Umang, Rags, Kashyap, Chirayu, Jim, Suramya, Arvind, Jace, Vatsa, Gautam, Yathin, Vinay and a few more usual suspects who took up each others code and ideas as challenges and made you work harder to code better.

3) I try to read new technical literature to keep myself updated on a regular basis. But lately this has been articles and books on stuff like RFID, GPRS, Ajax, C#, SQL, GUI design, etc. Not books on the ideas behind actually refactoring code, optimizing logic and balancing functionality with speed.

4) I haven’t updated myself on newer ways of doing old things. Heck, I must have been the latest learner of Try…catch blocks and exception handling amongst all my friends in more structured organisations like Yahoo, M$, Talisma, Open Source projects, etc.

Why has this happened?
Where did I get off the highway?

1) Being a business owner has given me opportunities to learn about newer things beyond coding … like managing employees, dealing with customers, how marketing works, getting to be a better salesperson, knowing when to sell and when to just inform, actually designing entire systems from a business perspective rather than a technical one. This was a good thing. But it let my coding skills languish away.
2) Having to manage my employees has gotten me to become a better over-all technical person, but left out too many small gaps that went unseen for a long time.

3) I’ve been too focused on getting the job done right, without looking to getting the job done elegantly. Elegance is what a good programmer strives for. On-time delivery is for us business folks ;-)

What can I do about this?

1) Hire better coders and learning from them? Thats one really expensive way to learn.

2) Go back to the basics (not QBasic guys) and refactor some of the old stuff, compare them to open source code to get better ideas? Again, time consuming. Thats a commodity I don’t have as long as I am to be in a startup phase.

3) Get friends to review some of my code, and forward me ideas on what I’ve been missing over the last few years but they learnt through their re-training programs and research on the web? This one has the best chance of success. Hit them for ideas and deal with the humilation of hearing “I don’t believe you wrote that crap” for the next few months.

Sounds like I had fun writing this post … sadly, no. This post has been one of the toughest for me to write.
Not because I’ve had to bare it all and wait for judgement. But for the fact that I’ve finally had to understand that I cannot do everything perfect all of the time.

Now that I’ve said it, it feels much better. But there is still that angry customer in Florida. The really really late project for the ones in Michigan. And before I forget, the crazy bugfixes without which I could get our product line shut down for a few months.


bad programmers