.NET Zone is brought to you in partnership with:

John Cook is an applied mathematician working in Houston, Texas. His career has been a blend of research, software development, consulting, and management. John is a DZone MVB and is not an employee of DZone and has posted 164 posts at DZone. You can read more from them at their website. View Full User Profile

Writing Software for Someone Else is Hard. For Yourself, it's Easy.

  • submit to reddit

One of the differences between amateur and professional software development is whether you’re writing software for yourself or for someone else. It’s like the difference between keeping a journal and being a journalist.

People who have only written software for their own use have no idea how much work goes into writing software for others. You have to imagine a thousand things a user might do that you would never do. You have to decide which of these things you will accommodate, and which you will disallow. And when you decide to disallow an action, you have to decide how to do so while causing minimal irritation to the user.

GUI applications are particularly hard to write, not because it’s difficult to draw buttons and boxes on a screen, but because it’s difficult to think of all the ways a user could arrive at a particular state.

In between writing software for yourself and writing software for others is writing software for people very much like yourself. Open source software started out this way, alpha programmers writing software for alpha programmers. Since then the OSS community has gotten much better at writing software for general users.

Published at DZone with permission of John Cook, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Paul Russel replied on Sun, 2012/06/10 - 6:21am

I read something once that described software as a 2×2 matrix. One axis is “for me” versus “for others”. The other axis is “on my machine” vs “on other machines”.

Moving from the easy choice to the hard choice on each axis is something like 10x the labor, maybe more.

Thus, you can move from “It works for me on my machine” to “it works for me on any machine” with 10x the labor.

…and, of course, you can move to the far corner “it works for anyone on any machine” with 100x the labor.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.