Quality and the one-person software company

I’ve never been able to give my main product the full quality treatment I’d like. Possibly like many of you, my main testing strategy is to release an update and await customer feedback.

Code review, apparently, is a really good way to improve software quality, but this isn’t easy to do when there is just one programmer in the company. Rigorous system testing falls by the wayside too, like many useful but tedious parts of running a business when it all depends on you.

After six years, I’ve finally got a QA guy on board for a short term spell, and it is doing wonders for improving my product, Poker Copilot. I wrote about the experience here. An excerpt:

Until now, quality control in Poker Copilot has been a combination of unit testing, my own haphazard system testing, and customer feedback. It is clear to me now that this is not enough. Having a person dedicated – even for a few weeks at a time – to quality control is unbeatable for making a software product top-notch.

I’m keen to hear any ideas you have for improving product quality in a sustainable way for the one-person company.

3 Likes

If you have some vocal customers who provide useful feedback, perhaps they can become beta testers for new versions. Some other suggestions:

  • Try using the idea of test-driven development to design new pieces of code from the view of a user of it (consumer of the API). This helps make consistent APIs which are also testable. Keeping as much code separate from the GUI layer also keeps it more easily testable.
  • Periodically sit down with your app and a notebook, and try to view your app as a new user would. Note all the confusing bits or places where the app could be better.

Both of these get easier with practice.

1 Like

I definitely feel the same way. Ironically, I am making a code review tool. I think the biggest thing you can do is just cut down on the amount of stuff your software does. It’s hard but less surface area means less testing.

Vocal users are also really helpful. Make sure to communicate that to them, so they keep being vocal.

Thanks for sharing your experience Steve, this sounds like a good idea. Would you mind sharing how you found the QA person?

Would you mind sharing how you found the QA person?

Daniel, I know him from my personal network.

1 Like

I have a test suite for the stuff I work on. It’s something that has saved me in too many occasions to not have.

1 Like

Defence in depth:

Totally agree with you on this. Over my 22 years developing applications, the best software is the one that gets continuous use as it’s being developed. I am planning to do just like you and have a QA person work with me to help improve the quality of my product.

If it wasn’t for the fact that I have a partner who can sit on the outside of development and give me constant feedback our software would be in shambles.

Code quality is great but when push comes to shove UI/UX is the game changer, because that’s all the customer sees and cares about. Is it easy to use?

I use feedback as a chance to improve my codebase incrementally (TDD) along with UI/UX and business goals. This has at least been my experience and has worked really well for pivoting vast amounts of code.

Just to note I use a framework w/ automation for just about everything so I’m able to stand on the shoulders of very talented people.

  • AWS Beanstalk (Basically your server admin)
  • Laravel (powerful framework for server side)
  • Composer, Bower, npm (manage all of my packages)
  • Grunt (automate everything)
  • AngularJS (powerful framework for client side)
  • Bootstrap ((powerful framework for css)
  • etc.

I’ve had this tab open to add a reply this first thing this morning (its not last thing at night), and I feel I should appreciate the irony that I’ve been doing support work all day, but having done a whole day of support, I just can’t bring myself to be amused!

I’m a library author (DataTables) so I have a slightly skewed perspective on this possibly. Libraries which your app depends upon should be unit tested - I feel it is my responsibility to ensure that DataTables has certain standards for example, so I think @michaeljcalkins’s point about standing on the shoulders of third party libraries is an excellent point. There is no point in testing if Bootstrap has a 1px border on table cells with a particular class.

For me, its all about maximising coverage, while minimising effort (and therefore maximising your productivity and therefore profitability). Use some automated testing, use some users as beta testers - find the right balance that minimises support requests and churn, without writing tens of thousands of automated tests that require a full time employee just to maintain. What that balance is, will vary for everyone.

A good friend of mine is superb at QA - has him to take a look at a system that you think is perfect and he’ll find bugs no problem (might say as much about me as him perhaps :-)), so I ask him to brutalise my new software sometimes.

What do you all think about of a “Gorilla QA” service? Someone who will spend an hour or six bashing your system around and filing bugs? A service you’d pay for?

Regards,
Allan

1 Like

Great ideas @michaeljcalkins! Using automation to the maximum extend can improve software quality – specially for testing & deployment. This reminds me to take some time to write Python scripts to help in my development effort.

1 Like