Some Perspective on Writing Software

Some Perspective on Writing Software

Posted May 2, 2006 — 14 comments below Posted May 2, 2006 — 14 comments below

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.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 thatare 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.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.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.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.