Reflections of Software I Created in My Spare Time Since 2006
Test Automation and Continuous Testing make programmers highly productive.
After announcing my latest app WhenWise, I took the time to review the software I developed these years:
TestWise — functional testing IDE (2006 — present, first public release in 2009). Demonstrated at Agile 2009 conference’s AAFTT workshop in Chicago, listed as the first testing tool by Agile testing book author Lisa Crispin, and a finalist in the 2010 Ruby Award. For 14 years, on the days when I program or test, I use TestWise.
AdminWise (2012 — present). A small admin system I created for a charity organization, and have been maintaining for free. It is still in use.
ClinicWise — practice management software (2013 — present). A system I originally developed for my brother’s dental clinic, ClinicWise helped his clinic become one of the most successful dental clinics in the region. Later, ClinicWise was made publicly available, and clients expanded to Physios as well. In 2020, I started merging ClinicWise into WhenWise, our new app.
BuildWise — Continuous Testing Server (2014 — present). Continuous testing is a key process of DevOps/Agile. Tools, such as BuildWise, enable real Agile/DevOps: to develop high-quality software at great efficiency. BuildWise received the runner-up prize of the 2018 Ruby Award in Japan.
SiteWise CMS (2012 — present) — Content Management System. Frustrated by the existing web publishing platform (due to lack of flexibility), I created my own. All AgileWay products’ sites are hosted on SiteWise, as well as some businesses.
LoadWise (2010–2013) for load testing web apps. It has got some commercial interests, including the US Department of Homeland Security. However, with more web apps adopting AJAX, the approach does not work well. Though it is still commercially feasible, I shelved it. I am now experimenting with a simpler loading testing approach with BuildWise.
SupportWise (2014 -present) — our internal support system. AgileWay customers raise support tickets and manage purchases/renewals there.
StoryWise (2010–2017), an extension of RedMine to generate a requirement traceability matrix. While StoryWise is still working well and appealing to software managers, I rarely use it myself, so I took it offline. In the future, I might offer fee-for-service for customers who want this feature. (Update as of 2020: I incorporated the requirement traceability matrix into BuildWise).
TestWise Recorder (2009 Firefox version, 2018 Chrome), a simple-to-use Selenium WebDriver recorder.
WhenWise (2018 — present), an online service booking app.
TestWisely (2021 - Present), a Cloud-based Continuous Testing platform
Money is not the primary reason I developed these software, they are either free or around a $10/month fee (to cover infrastructure costs). For example, ten years ago, a commercial testing tool cost about US$10,000 (and no good, which has been proven now). I made the TestWise community edition free. With the new TestWise 6, people may use it in a free mode (with the minor inconvenience of execution limit per start, no Ads). So a young IT professional/student in a third-world country can have a chance to learn test automation.
I don’t actively promote these software and I rejected some commercial interests for a simple and sound-silly reason: they are a part of my daily life, but I am not ready yet for a change.
Why did I create these software then?
As a programmer, I want to create something that lasts for a while.
I started my first programming job in 1997, since then, I have worked on numerous software projects. Most of them became either deprecated or have been replaced. I surely got paid for the job. However, as a software programmer, one day, I looked back, what have I achieved in my life? I remember at one colleague’s funeral, no one mentioned his work when they paid tribute to him. It seemed that his 30-year working time in software had never existed. This made me ponder the meaning of human life. I wanted to use my programming skills to create something that can be a part of users’ daily activity (with good experience, of course) for a relatively long period.Turn regular whining at work to your creativity at home.
I found that new-generation programmers complain a lot, “Sh*t this, Sh*t that”. Let’s face it, the managers are very unlikely to listen to you. Beyond them, there are upper management and customers. If you end up using a ‘Sh*t’ framework or a bad architecture, that’s normal. Fighting with it usually does no good besides increasing your own stress level. Instead, work on your own software at home and improve the skills that you have control of, and then you are the boss.Create software to solve my own problems.
Back in 2007, I found it incredibly efficient for my team’s performance when programmers start writing automated UI tests (using Watir, there was no Selenium WebDriver then). However, traditional coding IDE did not fit well. Therefore, I created TestWise.
The first version of TestWise was so basic that I felt embarrassed to show it. But one Business Analyst liked it. His comment, “it is simple to use”, gave me the confidence to continue. Same for BuildWise, after seeing every failed attempt to run UI tests in Jenkins, Bamboo, and TeamCity, instead of wasting my time with them (they were CI servers, but were not designed for executing UI tests). I decided to create my own Continuous Testing server: BuildWise (later, I found out Facebook/Google also went creating their own CT servers, of course, theirs are much bigger scale, see Facebook’s impressive Testing Lab).
Now I use TestWise and BuildWise daily to develop/maintain web apps; SupportWise to answer customers’ supporting tickets; SiteWise to update web pages and documentation, and WhenWise to book my test automation/CT coaching services.
My realizations on web app development: Automated Regression Testing and Continuous Testing are vitally important in agile software development. Sadly, most programmers/managers do NOT understand this. I worked with many talented software contractors, and a fair percentage of them have worked on their side projects. Virtually every side project I heard of failed (they no longer existed — most failed before getting 3rd customer). There were a few ones with great potential, however, they still failed due to poor quality or rush changes breaking current features.
It is hard to do a side project, and that’s why a good process of quality control (with automation) is a must. The topic is far more profound. What I can say here is that I spent 70%+ effort on test automation and continuous testing, this enables me to develop/maintain apps with great efficiency, and stress-free.
Originally published on LinkedIn on October 8, 2018 (edited in 2021–02–06)
Further reading: