Showing posts with label general. Show all posts
Showing posts with label general. Show all posts

Sunday, April 6, 2008

About being a good programmer

I consider myself to be a good programmer. I am my own worst critic, I always question methods and don't use methods "just because I did last time". I always assess if they are appropriate for the new challenge.
I also try to keep up with new technologies and trends in development and although I can be a bit too enthusiastic about certain things, I never really use new technology just because it's new.

At the office my team is currently at the end of a very big (for us) project. As always, the time was short and the deadline was set in stone, but no one really knew exactly what we had to build. So me and 6 colleagues started working on the project. It was jump-started by a Software Architect, who created the very basic architecture and then I took over.
The system is basically a routing and handling system for product provisioning and we envisioned a program where we would just write a plug-in for a specific product to handle the product specific tasks. That way we can easily extend the system for new products.
In the initial planning we had the system to handle 4 products, of course this soon turned into 5 products and then 6 products. So me and two other colleagues set off, each assigned his own product(s), to build the plug-ins.
One of the colleagues copied the basic architecture of his plug-ins from my plug-ins, but the other colleague took a whole different route.

After initial programming was done and we were in the test phase, we finally had time for code reviews. So as I was reviewing the code of the colleague who took a very different route then I did, I found it hard to determine what he was doing. I didn't get it and his solution seemed overly complex to me. Then he explained his architecture....

I was shocked. His architecture was much better then mine. I was so set in the mind-set of my architecture that I failed to see the beauty of his decisions. I was shocked and ashamed. Ashamed because I thought my design was better then his before he explained it to me.

This reiterated a very important lesson to me. I am not perfect, I won't always do the best thing. I might not even be close from time to time.
One of the things I consider add to me being a good programmer, is that I will admit if I am wrong and that I will accept a better solution, even if my solution was the inferior one. I'm not too proud to admit I am not perfect, but somehow, this time, it kind of sneaked up on me.

The lesson I take away from this? Don't judge too soon and don't think you've got the best solution. There will always be a better solution.

Sunday, March 16, 2008

Thoughts on Coding

I've been programming for close to 14 years now. I started programming in x86 assembly, then moved to Turbo Pascal, then Turbo C++, Visual C++, PHP and finally C#. It started out as a hobby and finally it turned into work.

I still program for fun, although not nearly as much as I used to. I'm very busy at work, so when I get home I'd rather play some video-game, watch a movie or spend some time with friends.
I do read a lot about programming or programming-related stuff though. I read a whole host of different weblogs and try to keep up on the latest advancements and technologies.

So, why the weblog? Well, there have been countless times where I ran into a problem, or didn't know how to fix a particular problem and finally found the answer on some persons weblog. These things have been of tremendous value to me. Since I also figure things out on my own on an almost daily basis and since I think a lot about design stuff and a lot of other things programmers have to deal with, I thought: "why not put these on a weblog?" I mean, maybe someone out there has the same problem and maybe I can help him out by explaining my solution. And maybe I have a really crazy idea and I would like some feedback on it by other programmers. A weblog is a dialogue after all.

So, if anyone has questions, or remarks about anything I post here. Leave them in the comments and we can discuss them. I'm looking forward to it.