View RSS Feed

//no comment

Iterate, Iterate, Iterate

Rate this Entry
Developing software is a process; often, a never ending one. Most of the time, software is being constantly improved with bug fixes, new features, and quality of life enhancements. All software is shitty. The point is not to make the software perfect, but to envision that it will be perfect someday. For 99% of projects, this day never comes.

TradeSkillMaster is a perfect example of the never-ending nature of software development. Hundreds of new features have gone into the addon over the past 2 years, and thousands of bugs have been fixed. There is always something new and exciting that can be added, and doing so also brings along a set of new and (not so) exciting bugs to fix.

Right now, our suggestions thread is 54 pages long. While most of these suggestions have been added to the addon since they were written, I'm sure I could very easily make a list of 100 things from the suggestions thread which I'd like to implement in TSM and haven't yet done so.

At the same time as users are making suggestions, I (and the other devs) are constantly dreaming up and discussing major changes we'd like to work towards. These big goals are heavily shaped by all the user suggestions we've seen. Rather than instantly reacting and implementing exactly what the user wants, it's often beneficial to take a step back, look at the root pain-point the suggestion is trying to address, and then try and find the best solution for that pain-point.

Having an sense of direction is important when developing software. Of course, this should be influenced by the users, but in the world of free-software, the programmer's main responsibility is not to satisfy the wishes of each individual user, but rather create something as powerful and useful as possible for the greater community.

The way to do this is to work towards a major goal (ex. TSM0.1, TSM1.0, TSM2.0, etc) and once it's done, release it to the community. Initially, people may not like some of the changes, but after all the "change is bad" responses, it's time to take a few steps back and respond to the feedback and fix bugs. This results in a lot of relatively small updates containing bug fixes and possibly minor changes. Then, once the product is mostly bug-free and you're out of minor tweaks to add to it, it's time to start the entire process over again with the next big change. This iterative process can seem never-ending, and it is, but the pursuit of perfection in software is what makes it so much fun .

Updated November 25th, 2012 at 11:41 AM by Sapu94

World of Warcraft , Off-Topic , Development


  1. Pliaksi's Avatar
    Good post. As a non-professional software developer who has always done it for free, I can definitely relate.

    P.S. My software is also shitty
  2. Icecreamtruk's Avatar
    Good points. Keep Lexus'ing the software life-cycle!
  3. Stede's Avatar
    With something as ambitious as TSM, there is no set model to follow for integrating all these features into a single add-on. You guys are pioneering it, and pioneering any big project means that, at some point, you'll stop in the middle of the woods and realize that there's a better / faster / more user-friendly way to go about navigating through. Because as you develop something like this, the main point is to continue to gain an understanding of, fundamentally, what the user is thinking. A lot of development teams lose sight of that - for a myriad of reasons.
  4. Kathroman's Avatar
    You mentioning that the suggestions page is 54 pages long made me think of something I read in an ebook from 37Signals:

    Essentially, in a project with as many people as involved as this: your features usually end up prioritizing themselves. Either through multiple people asking for the same things over and over, or from bug reports. People will always come by and offer small suggestions for minor tweaks or improvements that might even be extremely simple to implement. The stuff that people REALLY want, though? You won't even have to ask for them.
  5. kipperflip's Avatar
    Red, green, refactor.

    I'm not trying to be profound, but I think those three words potentially say it all. Think of it, code it, make it better.