A couple weeks ago Joel Spolsky posted a great transcript of his talk to Yale computer science students. Among other things, he talks about why it sucks to work as a programmer at a company whose focus is not software:
You never get to do things the right way. You always have to do things the expedient way…. as soon as your program gets good enough, you have to stop working on it. Once the core functionality is there, the main problem is solved, there is absolutely no return-on-investment, no business reason to make the software any better. So all of these in house programs look like a dog’s breakfast: because it’s just not worth a penny to make them look nice. Forget any pride in workmanship or craftsmanship you learned in CS323. You’re going to churn out embarrassing junk, and then, you’re going to rush off to patch up last year’s embarrassing junk which is starting to break down because it wasn’t done right in the first place…. When you’re working on products, you can keep refining and polishing and refactoring and improving, and if you work for Facebook, you can spend a whole month optimizing the Ajax name-choosing gizmo so that it’s really fast and really cool, and all that effort is worthwhile because it makes your product better than the competition.
Joel couldn’t have said it any better. Great programmers are craftspeople, and like designers, musicians or writers, they have a strong sense of pride in their work. They want to create something that’s great, not something that just gets the job done. They also want to work with and for people who value the work in the same way. It’s no fun working for management who just wants to know that the job was accomplished as cheaply as possible.
I have to admit this is one of the reasons why I started my own software company. I wanted more control over the work I did. If a new client comes to me with work that seems absolutely boring or a time frame that makes it impossible to do the job right, I have the option to turn it down. If I want to spend the next three days working on an Ajax gizmo just for the fun of it, then I can do that. Sure, I have to worry about the profitability of turning down clients and spending time on non-revenue projects. But I’d rather come to work each day feeling motivated, and leave feeling proud of the work I did, even if that means that I don’t make as much money as the next guy.
It sucks for companies too
From a December 2007 SBA study:
It was once assumed that college graduates would graduate and then go to work for a Fortune 500 firm; that is still true for many people. What is also true, though, is that more students today see entrepreneurship as a viable option for their careers.
I have to assume that since more students look to starting their own business, and since it’s getting easier for them to do so, it’s going to get harder and harder for non-tech companies to find good programming talent. Especially since they already have to compete against guys like Joel who convince them to go work for Fog Creek and get lots of really cool perks.
And it’s getting worse and worse for those companies as good software becomes more important to their business. Customers expect the same experience from the e-commerce website of a HVAC company as they do from Amazon. And if that internal workflow software really worked as well as applications like Gmail, then maybe production costs could be cut enough to remain competitive.
Or will dependency on technology ultimately drive good businesses to manage their IT departments like software companies? Where does that leave everyone else?


7 responses so far ↓
1 Douglas Karr // Dec 17, 2007 at 6:11 pm
Is it a problem with the type of company or the size of a company? The problems with development that you speak of and that Joel speaks to are things that I’ve seen in large companies but not small ones.
I’ve worked for both, I think it’s when you get too many hands in the kitchen that the soup starts to get spoiled and people have to take shortcuts to get the food on the table.
2 Ian // Dec 18, 2007 at 8:28 am
I am going to start working in the phrase “dog’s breakfast” into my daily conversation.
That’s why I prefer your programming services Ade - because I know you view every project like Michaelangelo views a marble slab.
3 Shon // Dec 18, 2007 at 9:46 am
This is interesting post thanks for it Ade
4 ade // Dec 18, 2007 at 10:12 am
@Douglas You might be right about large vs small organizations. Large organizations are big enough where management asks the Finance department to analyze the salary costs in the IT department. Then they go to IT management and ask them to justify projects against 2007 objectives defined in the yearly off-site.
In small organizations, it’s more likely that Bob peeks over Joe’s shoulder to see what he’s working on, and makes an educated guess about whether it’s worth the time. At lunch he asks Joe if he’s happy doing what he’s doing.
5 ade // Dec 18, 2007 at 10:18 am
@Ian thanks, but there’s no way you can legitimately compare me to Michaelangelo. Well, unless it’s this Michaelangelo, then I think you’re spot on.
6 links for 2007-12-18 | The Marketing Technology Blog // Dec 18, 2007 at 10:27 am
[...] Why it sucks to be an in-house programmer | Ade in Business Great programmers are craftspeople, and like designers, musicians or writers, they have a strong sense of pride in their work. (tags: programming development) [...]
7 Justin Lacey // Dec 18, 2007 at 2:14 pm
Interesting point about it becoming easier for students to start their own business and that it is making it harder for companies to find talent.
Having done development in both a Fortune 500 company and a smaller “do it all under one roof” company, I knew I had to strike out on my own to develop solutions the way I wanted them to be crafted.
However, it will be up to our smaller companies to define our strengths and fill in our gaps together in order to have a high consistent impact for our clients and industry.
Leave a Comment