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.
Design Element
Some Perspective on Writing Software
Posted May 2, 2006 — 14 comments below




 

stridey — May 02, 06 1153

Everything you say seems so obvious once you've said it, which is probably the sign that you're right on the button. Slavishly coding in misery only reduces developer productivity and the app's end quality, and yet it's the status quo. Everybody wants to be able to comfortably code well-thought-out products, but the question is, how do we get there? It seems like as long as there are deadlines (and there always will be, at some point), the work so easily reverts back to the Bad Way. I look forward to seeing more articles in this series (if that's what you end up doing)

Andy Lee — May 02, 06 1154

the thing you think you're writing often turns out to be something different than the finished product

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

I agree completely and I'm also looking forward to more articles in this series.

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

What company do you work for Scott?

Your blog is awesome, please keep posting!

Scott Stevenson — May 03, 06 1157 Scotty the Leopard

What company do you work for Scott?

I work independently right now.

Ben — May 03, 06 1158

I work independently right now.

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

Perspective is a wonderful thing.

Glad you're back on track.

Looking forward to your future insights.

Colin Doncaster — May 04, 06 1160

I imagine a lot of what you're stating stems from the fact that at some point development becomes a part of a business, developing a product for an end user. Once money, marketing and sales become a factor the initial "fun" involved can easily become secondary to making sure quotas are met. Programming is an art and unhappy programmers are like arists/musicians who end up selling out - you end up compromising you're creations to meet market demands. But how to break free of this conundrum? It's almost as profound as asking "what's the meaning of life." It becomes increasingly difficult when selling out means a fairly substantial lifestyle gain ( you can afford the latest gadgets, house, car, travel ) which becomes comfortable, and the concept of throwing it all away to reinvent yourself isn't an option.

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

Software engineers and programmers are the most philosophical, navel-gazing, introspective, logorrheac professionals on the planet. From Joel Spolsky to Fred Brooks software writers seem to mistake the ability to Type with the ability to Write and Think. There is no competition in the volume of prose from doctors, mathemeticians, physicists, mechanical engineers, accountants, or even writers, who usually know enough not to write endlessly about writing itself. Software people spew on endlessly about the nature of thinking involved in counting to ten. Perhaps we have enough of this?

Scott Stevenson — May 04, 06 1163 Scotty the Leopard

Perhaps we have enough of this?

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

software writers seem to mistake the ability to Type with the ability to Write and Think

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

Scott,

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 Scotty the Leopard

Once money, marketing and sales become a factor the initial "fun" involved can easily become secondary to making sure quotas are met

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

I'm considering leaving the industry because I can't compete with developers who give up so much of their life to build the new online world. Developers are all too often abused for their skills and are generally open to the abuse because they are able to justify the long hours and stress because they are building something which actually really IS cool. Get old enough and you see what has really happened, the jocks at the top have walked away with the money and have more time to lead a healthy balanced life.




 

Comments Temporarily Disabled

I had to temporarily disable comments due to spam. I'll re-enable them soon.





Copyright © Scott Stevenson 2004-2015