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.


Very interesting approach to the coding habits and indeed very clear:) At the moment you’ve got me in trouble, because I can’t figure out which type I am – maybe something in between.
Sadly today’s commercialized market needs more carpenters than sculptors. Hiring sculptors is a risky proposition.
@Tarique: I think the carpenters vs. sculptors argument is also one of perception vs. reality. Sculpters will bang out a large body of code and then slowly whittle away at it until they get it the way they want. It looks like “busy work” at times, while the carpenter starts small and builds up to the application. Can you change the way your brain is wired to develop applications? That`s a good question.
I like to think I try to start things out as a Carpenter – planning the overall structure of the application and getting some of the pieces in place. Unfortunately, somewhere in the middle I look up and there’s this huge slab of code sitting in front of me, begging to be hacked away at.
Of course, there’s never time for that in the middle of a project (never seems to be enough time for anything really) so the code sits and waits. It’s a Venus De Milo waiting for someone to come along and give it the arms it’s been missing. Usually, this comes along when someone – usually not the original developer of the app – comes in and needs to change something. Then, we hear the real cry of the Carpenter:
“Who wrote this piece of crap?”
The worst part of it is when the person saying: who wrote this shit – is you.
I think what you describe here are the differences between programmer and developer. See also http://www.hacknot.info/hacknot/action/showEntry?eid=90 for a good article about this topic.
@Daniel: While that article is an interesting read, it also makes “programmers” out to be idiots and “developers” out to be some sort of genius. This idea that “programmers play and developers work” smacks of so much elitism that I don’t know where to start.
Everyone starts out as a “programmer” and becomes a “developer” over time. I’d say I’m 2/3 developer and 1/3 programmer right now. Still like new technologies enough that I tend to try and use new ones, but I’m vastly improved at taking the time to think about what it is I’m actually doing and try to keep the amount of “busy work” to a minimum. It’s an art, not a science.
Sure, the article paints a bit a black and white image even though in reality there exist many gray tones. I don’t think that developers are “better” than programmers, they simply have other strengths (and weaknesses). The programmers strength is usually the implementation of “something” in code, whereas the strength of a developer is more the analysis and design of “something” than its implementation.