I don’t often write posts about my work life, but I feel like I’ve been complaining to my coworkers and superiors about the same few problems over the past few months and I wanted somewhere to write some things… So here we are.
I’m going to start with a simple premise:
Good software is as much an art as a science. Good art takes time.
This is something few people outside of the software industry seem to understand. I don’t write commercial software, but I write line-of-business applications for my company. We’re a small team – currently around 10 developers – and we’re tasked with writing new software to solve various problems and help everyone work more efficiently. We tend to do fairly well, but the team is so small the work comes in faster than we can complete it, and the focus has shifted from doing things right to doing things fast. While I can understand the need to get things done quickly, I’m disappointed that we’re not trying to create good software anymore. I want to take pride in my work; I want to be able to show someone something I’ve worked on and be happy to say “I made this”. When someone comes to me and tells me my software is causing problems, that’s a failure on my part.
There are many cliches that apply to software development, but one I use repeatedly is the 80-20 rule, because it can be applied almost anywhere. For instance: “20% of the work takes 80% of the time.” I usually call that 20% “polish”. This was a bad idea: now my boss wants to cut out the “polish” and just leave things part-done or with a terrible user experience.
I’m sure I’m not the only developer in a situation where getting things done fast is more important than getting things done right, and I’m sure I’m not the only developer who would prefer to take the time to create a fantastic piece of software over just shoving something out there.
Think about most of the software you actually enjoy using. It’s probably not a line-of-business application. It’s more likely to be something social, something easy to use, something that just works. I’d be willing to bet the teams creating that software didn’t start off saying, “We’re going to publish this in a year.” They probably started with a simple idea, implemented it, then iterated on that idea, gradually improving it over time until it was ready. If they had arbitrarily chosen a deadline, it wouldn’t be as great as it is. And we’re not talking about software that doesn’t make money. We’re talking about software from places like Facebook and Google and Apple and even occasionally Microsoft (I like Excel).