For a while now I've been feeling like something has been missing in my programming work. I've referred to it as 'craftsmanship' when trying to express the sentiment to someone else. You know, the ability to really hone something to as close to perfections as possible give you current skill set.
But that, unfortunately, is not what most programming is about. It’s about trying to come up with a working solution in a problem domain that you don’t fully understand and don’t have time to understand.
The big reason that craftsmanship has been lacking for me is budgets. Clients often don't want to pay for 2 hours of toying with a way to do something just to see if its a few less lines of code. They don't want to pay for a few hours of playing with the UI so that it's a perfect blend of features and simplicity with that perfect interaction that makes a user raise their eyebrows in appreciation.
Never mind that this type of interaction and attention is something that clients say they want. Almost every developer learns quickly that what a clients says and what they are willing to pay for are drastically different things.
Every project quickly turns in to a crunch with a few extra features tossed in. Then a difficult problem comes up and we still work hard to make a deadline since we really want to please a client. The things that suffer are the little items that would really make a site 'pop'.
So now you've got a project that's certainly functional but overall it's a bit of a mediocre example of the high hopes you had in your head. Maybe some programmers learn to lower their hopes, they get jaded. In the 5 years I've been programming I haven't become jaded yet, resigned maybe but I still try to fight the spiral to mediocre interaction.
I can see why some become totally jaded and give up though. Working on project after project that end up being 'only okay' gets tiring. Now it is true that the common denominator is me.
I'm the one on these projects. The clients are different, so maybe I just can't deliver? Maybe I'm some interaction genius waiting to be unleashed on the right project?
After talking to many other developers, I don't think it's me not delivering. I like to think that it is in fact me aspiring for so much more than I can do. Unfortunately at some point I have to make sure my kid is fed and has a house. That's going to trump a few hours of extra unbilled work on a project every time.
Do you have any solutions to getting the time to make that project pop?
Quote from Programming in the 21st Century.