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.
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.
Sigh.
31 Aug 2006 at 2:42 am
Here’s a suggestion: pick an open-source project that you like and contribute to it. The act of reading other people’s code is enough get your creativity pumping, and also when you check code back in, there are many eyeballs to view it for you. Plus, you’re also contributing to the collective work of humanity :)
Good luck!
31 Aug 2006 at 4:09 am
Jim:
Like I said … “time consuming. Thats a commodity I don’t have as long as I am to be in a startup phase”
But you might be right … I cannot sit and complain if I’m not willing to take the first steps.
You do realize, however, that I’m going to contribute to an Open Source Win32 app?!
Oops, did I just hear that foot of yours kick you? hehe
Thanks for the ideas, as always.
31 Aug 2006 at 1:17 pm
try…catch is like threading. It can only lead to a mess, more than 99% of the people who use it make a mess of it, yet “knowing” it is considered maturity. Blah!
Suggestion: Get a CTO, one who knows stuff from assembly, to process scheduling all the way till browser connection pooling (hint hint). Of course there is a huge gap in the windows and/or java world.
Writing efficient code is needed only when you need to be more efficient code. Writing “maintainable” code as vauge as it gets. Ususally the idea is to lower the entry barrier for someone else to take over. So unless you hire/fire a lot, it should not be important.
Most of programming community gets ahead of itself by trying to be purists at the start of the project and making compromises halfway trhough to meet the deadline. Spagetti code written from day #1 should be better ;-)
27 Oct 2006 at 1:28 am
I believe it’s not purists and pure-coders are the problem.
Purist Software architects and SRS doc-writers are the problem.