With a Good Continuous Testing Process, You Can Get “GOOD & CHEAP & FAST” in Software Development
Today I saw another post about “only can pick two out of GOOD, CHEAP, and FAST” in my LinkedIn feeds. This paradigm might be right for other industries, but it is not true for software development in most cases.
One of my colleagues, a cylcing lover and good agile project manger, once told me this: “for a bycycle, quality, light and price, you can only pick two”. I agree.
The software industry is quite different from the others. A top software developer’s productivity is far far higher than an average one. This comment was from a former Microsoft CIO and it was quoted in “The 8th Habit” book by Stephen Covey, who is one of the most respected business mentors at our time.
Mark Zuckerberg wrote the initial Facebook code in 2 weeks (see the interview)
Nathaniel Blecharczyk, a 24-year-old computer science student at Harvard, the third co-founder of Airbnb, built the first incarnation of Airbedandbreakfast.com practically single-handedly using Ruby on Rails.
Imagine you are a manager of a team consisting of two 100x developers, “Good, Cheap, and Fast” shall be quite natural, right? I know some may think: “we are not lucky enough to get even one 10x developer”. Staffing can be a subjective topic, I would rather focus on a good process to enhance and maintain the team’s productivity. For me, the process is Continuous Testing: execute the regression suite (containing comprehensive automated end-to-end tests) frequently in a CT server and enable the team to act quickly on feedback.
Whenever I speak to a conference session or user group meeting, I always tell people, “If you aren’t doing continuous integration now, go back to your office and drop everything and get your CI going. It isn’t hard to do, … A programmer can do it in a matter of days or less. There’s no excuse to not do CI.”
— Lisa Crispin’s blog article “The Team’s Pulse: CI/Build Process” (2010–08–23)
To illustrate how a good CT process can help the teams to achieve “Good, Fast and Cheap”, I will share some software projects I have involved in over the years.
- My own apps
I started developing my own apps in 2006, all in my spare time.
- (2006 — present) TestWise, a functional testing IDE. TestWise was demonstrated at Agile 2009 conference’s AAFTT workshop in Chicago, and was a finalist in the 2010 Ruby Award.
- (2012 — present) SiteWise CMS — Content Management System. All AgileWay products’ sites, as well as some local businesses’ websites, are hosted on SiteWise.
- (2013 — present) ClinicWise — a practice management software I originally developed for my brother’s dental clinic. It took me 40 hours from the idea to the first production release. Later, ClinicWise has been made publicly available, and clients have expanded to physios as well.
- (2014 — present) BuildWise — Continuous Testing Server. BuildWise received the runner-up prize of the 2018 Ruby Award in Japan.
- (2018 — present) WhenWise — Online service/resource booking app. My daughter had this idea on an overseas trip, and she implemented the initial version (very basic) for her high-school project. I helped to turn it into a commercial product and it is currently used by a few local businesses. My daughter booked her first driving lesson on her own app.
- the above apps all have commercial customers. I also created the AdminWise app for a charity organisation. Another app SupportWise is for our internal use.
For more information, please read “Reflections of Software I Created over the Last 14 Years in My Spare Time”.
2. Government Project
Between 2007–2010, I helped to implement DevOps (no such term back then) in a government project, that is, the team had the capability to release to production daily. The project team took one low-budget IT project that received no bids from government-credited IT firms. We did better than delivering on time on budget. Because the customers were so impressed with our team’s efficiency, they engaged us for a similar project at the same time. We completed the two side projects with very happy customers. Yes, these two were side projects because our team was still enhancing and maintaining our main application.
The development of the above projects all shared the same process: Continuous Testing (CT in short). We took test automation seriously, and the team’s highest priority is to maintain the green build at the end of each day.
Some may wonder that “ I can resonate GOOD and FAST from your projects, and CHEAP in terms of staffing cost. How about CHEAP in terms of software/hardware setup?”. The software I used is all free (100% freedom, $0 or near-$0 price) and open-source (for frameworks).
- Automation Framework: raw Selenium WebDriver (Ruby) for web apps, Appium (Ruby) for desktop app
- Test Syntax Framework: RSpec
- Testing Tool: TestWise, come with free mode or $15/month for a license
- CT Server: BuildWise server (free and open-source)
- Parallel Testing Lab
- Hardware: 4 Mac Minis (one serve as CT Server)
- Software: VMWare Fusion software (US$199); 9 BuildWise Agents, free mode or $15/month for a license
Once the CT process is in place, achieving “Cheap, Good, and Fast” becomes normal.
Q & A
- You mentioned “40 hours” to create and implement ClinicWise. I had a quick look at the system, it is a very feature-rich app for a 50+ people team. How could that possible?
The 40-hour version is the first release which only included very basic business features and was just enough to create bookings, take notes and accept payment. After the initial version, my brother sent me feedback daily, and I implemented them into the system. After passing the automated regression test (in BuildWise), I pushed the new build to production. It took a few months to grow the ClinicWise into a good state.
As you can imagine, my biggest effort (of all) was spent on Test Automation and Continuous Testing which have greatly enhanced my productivity. There are many more benefits of doing these. Please read my articles in the Benefits of Continuous Testing Series.