Some Perspective on Writing Software
I took a few weeks off and I feel like I'm returning with a fresh perspective on the idea of writing software for Mac OS X. I'm not promising all of this will make sense right away. I'm sort of figuring it out as I go. Hopefully there's some insight in here somewhere.Yes, We're Human
It hit me like a brick wall as I started to think about coming back to work. The software industry has a culture of being too tightly wound. It's hard to see when you're swimming in it, but it's definitely there.
This takes a lot of different forms, but the result is that too much software ends up being bad, late or both. Developers, managers and users are unhappy, and everyone is looking around trying to figure out what happened. No matter how you arrange the pieces of the puzzle, there's no escaping the reality that humans are still the ones making and using software.
If developers are put into an environment with high stress, tight deadlines, low pay and few resources, the wheels are going to come off the thing sooner or later. If you want good results, you have to invest in the basic building blocks. Obvious? It should be, but looking around, I'm not so sure. Maybe we just forget.
On a related note, let's remember that users are also human. The user experience is second only to whether the application can accomplish the desired task. Experience includes design, icons, ease of use, clarity, and usefulness. Creating features that aren't helpful or easy to activate is wasted time and code.
Happy developers are productive developers. Happy users are paying users. Whatever it takes (within reason) to make developers and users happy is in the best interest of the project.
Software is an Iterative, Deep Process
Practically everyone tends to underestimate the time it will take to complete software. A big part of this is that the thing you think you're writing often turns out to be something different than the finished product. More importantly, writing software is not like painting a fence. You can't really see how things are doing at a glance.
Yes, project management tools try to address this with charts and graphs, but those tools really don't speak the language of code or interaction. You have to walk through various aspects of an app and look at the source to get a feel for how things are developing. This can only happen as the app is being built, so refining plans and schedules as you go is inevitable.
The Brain Needs to Breathe
It takes bright people to write good software. In particular, modern apps benefit from creators who have both technical and creative sides to them. The catch is that such bright people need stimulation and room to be creative. Being stuck doing the same mundane tasks day after day (particularly in low pay or high stress situations) will just cause the brain to shut off. This is counter productive.
If bright people are not given an outlet, they'll consciously or subconsciously create one. This might take the form of adding a new feature or rewriting some block of code. From the outside, this looks like a needless delay, but I think it's just the brain gasping for air. I think Google might be on to something with the 20% time projects.
Fun is Required
The most successful apps in our corner of the universe celebrate the idea of fun. Delicious Monster is full of character and culture. Not only does this kind of thing make a final product more appealing, but it inspires the people who work on it. Reading about how the Mac itself was created really drives this home.
Not every aspect of software development has to (or can be) been boiled down to bullet points, market research and focus groups. My experience is that some of the best ideas are based on gut feelings and instincts.
I feel like this might be the start of a series of posts. We'll see what happens. I'd be interested in hearing from anyone who has had similar thoughts.

Some Perspective on Writing Software
Posted May 2, 2006 — 14 comments below
Posted May 2, 2006 — 14 comments below
stridey — May 02, 06 1153
Andy Lee — May 02, 06 1154
I think traditional by-the-book managers must have a lot of trouble with this aspect of the process. I think this is a lot of the appeal of being an independent developer, where you have the nimbleness and decision-making authority to change gears as your vision of the product evolves.
The flip side of this is the need to have a vision in the first place. I've been on too many projects where it was not clear what we were trying to accomplish. That's a great way to make everybody feel like they're wasting their time.
P.S. Given that style tags are allowed, it would be nice if there were a Preview button for comments here.
Daniel Lyons — May 02, 06 1155
However, as someone currently working on boring stuff for too little money and with too much stress, I'm having a hard time seeing how to get from where I am to where I want to be. Nine out of ten job openings are doing similarly boring things to what I'm doing now. A friend and I are trying to start a company, but all the interesting niches seem taken, and obviously that will only increase the stress and reduce the money even further.
Without getting too personal I'm sure you won't be able to deliver useful advice. But in a market glutted with degreed, intelligent programmers, I just don't see how we are supposed to achieve the dream of interesting work, high salaries and distant deadlines.
Joshua — May 03, 06 1156
Your blog is awesome, please keep posting!
Scott Stevenson — May 03, 06 1157
I work independently right now.
Ben — May 03, 06 1158
I've wondered for a while now if you worked for a co. and what you do from a mac dev point of view.
Is it rude to ask if you could elaborate into your Cocoa/Mac development history, if possible note projects you've worked on working for a co. (if you have) and/or projects you've worked on by yourself? Perhaps this a blog post request more than a comment?
I read your blog constantly, and use your http://www.cocoadevcentral.com/ resource often as I learn more about Cocoa and mac development, and I am sure that I am not the only one who is interested in your Mac development history.
Steve Johnson — May 04, 06 1159
Glad you're back on track.
Looking forward to your future insights.
Colin Doncaster — May 04, 06 1160
This doesn't mean you should run out and sell your house/car/kids but if you're serious about changing your situation then accept the fact you'll have to make sacrifices.
And a link, Steve Jobs commencement address he gave at Stanford last year.
Fred — May 04, 06 1162
Scott Stevenson — May 04, 06 1163
Is this directed at me? I'd like to assume not. In any case, I think the driving factor is that software development is something none of us have really perfected. Even people that have been doing it for ten or fifteen years struggle at times.
I don't think that stepping back and sharing thoughts on your work is really all that ridiculous. But then again, the site subhead says "all typing by Scott Stevenson" for a reason. :)
Andy Lee — May 04, 06 1164
Yeah, I hate when people do that. It's like people who mistake the ability to post a comment with the ability to be insightful.
There is no competition in the volume of prose from (...)
Check the business section of your local bookstore if you want to see massive amounts of "navel-gazing" prose.
Perhaps we have enough of this?
If by "this" you mean comments that complain about the existence of the page they appear on, I agree.
Andy Lee — May 04, 06 1165
I assumed Fred was a troll. If so, and he comes back, I promise not to take any more bait. On the other hand if he was just a random visitor who decided this site's not for him, I assume we won't see him again.
Scott Stevenson — May 05, 06 1167
I think this is a slightly different angle than what I'm going for. My point is that you need a good environment to get good results. Ridiculous deadlines, poor pay, high stress, and so on all contribute to a poor environment.
True, a lot of this can be overlooked if the thing being worked on is more for fun and less for profit, but some try to transplant the "minimal resources for fun" approach into a for-profit scenario.
Tigger — Sep 03, 06 1696