Carpenter or Sculptor? post
Now, this might sound like a weird thing to say, but as a programmer I think you fall in one of two categories: you're a carpenter or you're a sculptor. This relates to how you build your applications from scratch, and it says a lot about your programming style.
A carpenter starts with a few pieces of wood and then starts cutting them, shaping them and building something. Carpenter developers are the ones most likely to keep their code small and elegant, like they are a craftsman building a nice piece of furniture. They will measure and cut and shape smaller pieces to make something bigger. They start of small, and seem to know exactly how to fit the pieces together, often creating code that is easy to extend. Sometimes there are few unnecessary pieces (think of it as intricated carvings) but, damnit, their code always looks good. Sadly, this is not me.
Sculptor developers, on the other hand, start off with a large block of raw code. Then they start to see the application and start to chip away at, smoothing things, carving what you see inside it. You find flaws that are hard to overcome, but you do your best to work around them. In the end, you keep going until you see the vision you had at the beginning, and you've removed everything that isn't needed to make the vision happen. This is how I tend to do things.
Which method is better? I'm not really sure. I think the carpenter will get stuff done faster because they start with less, slowly adding onto it by concentrating on making sure everything fits together nicely. The sculptor takes longer because they create a huge base of code and that start removing things, or reshaping the application as they go along. In the end, you get to the same point, a working application, but was it worth all the effort?
I started thinking about this today because I'm building an Ajax-powered playlist editor for my IPTV project at work. I banged out a ton of code for the editor and, frankly, I'm not happy with it all. I feel like I've done this the brute-force way and that I will be doing some heavy refactoring to get to that elegant, "metrosexual" code that my boss seems to effortlessly create. He's a carpenter in the way he builds his code, and I'm striving to learn all I can. His refactoring skills are great, which is good for a sculptor like me. Could I ever be a carpenter? I find it unlikely, but I can learn to apply a precision chainsaw to my big block of raw code to get to the finished product faster. Let me know in the comments what category you feel you are under.