Micro-ISV 01: Is Micro-ISV or a one-man software shop possible to succeed?
Yes, Micro-ISV is feasible, thanks to advancements in software technologies
Welcome to our new “Becoming Micro Independent Software Vendor” series.
Micro-ISV is an independent software vendor with fewer than 10 (typically, 2 - 4) or even just one software developer [Wikipedia]. Micro-ISV is a mini StartUp, which is a dream of many software professionals. I first knew this term from reading the book, Micro-ISV: From Vision to Reality.
What are the differences between Micro-ISV and StartUp?
Besides the size, Micro-ISVs differ StartUps as below:
Aim for Monthly Recurring Revenue (MRR)
Generally speaking, a Micro-ISV initially aims to be profitable, from sustainable passive income, rather than growing the user base at a loss.More Family Oriented
A Micro-ISV can start as small as one person, like my company. My wife handles the paperwork and exploratory testing. A few years later, my children also started to help.
Self-Created Software Product(s)
A StartUp can be a consulting or service-offering firm, while a Micro-ISV’s business is more about self-created software products/apps.
Often started with working part-time
That’s probably the main difference. A StartUp is generally more formalized, while Micro-ISV is not.Less (or no) External Funding
One of the first things a software startup does is to get external funding. For a typical Micro-ISV, there are no investors until a product is a good shape. The initial work is done at home with self-supplied equipment.
More technical-focus
With no or little investment from outsiders, a Micro-ISV owner makes decisions, for good or bad, based on his/her view (quite often technical-influenced). For example, more than one company/individual with commercial interests in my TestWise software, suggested I raise TestWise’s price from $500 to $5000 or more. I rejected.
Micro-ISV is more Feasible than Ever
Micro-ISV is certainly possible, even more so now, thanks to advancements in software technologies, such as:
Deploy servers in a cloud platform, instead of running them in your garage.
Many free and excellent software such as Linux (OS), Git (for source control), and Selenium WebDriver (for test automation).
For most platforms, developing kits (such as macOS Xcode) and resources are completely free. (back in the old days, a MSDN subscription is quite expensive)
Automation, in particular for testing, dramatically increases development productivity and saves time.
Outsource some of the work, such as Graphic Design, is quite easy
…
“Owing a successful product and being your own boss” is most software professionals’ ultimate goal. Here, I am not talking about multi-billion enterprises, such as Apple, Google, Amazon, Facebook, BaseCamp and Airbnb, …, etc. Rather, a more realistic small business that generates enough passive income to feed the family, or better, financial freedom. Of course, it is still a hard-to-achieve goal.
After all, life is about competition with your peers.
I started working as a contractor programmer in 2000. Since then, I have met many senior software programmers (some solo, some with one or two partners) who had adventures in developing their side apps. Needless to say, most failed. Even so, a large percentage had no regrets. After all, it is a dream that many software engineers want to pursue.
Surely, building a successful Micro-ISV is not easy. The first-timer’s failure rate is very high.
The main reason I wrote down this series is to pass on things I wish I had known earlier to my daughter. Besides general advice that you may find in business-coaching books, I provide very specific ones that I learned it hard way. Those lessons can be blunt to some, e.g. spend 60+% of your development effort on Test Automation, no defect tracking, no Jira, daily production deployment, …, etc. Those worked very well for me.
Also, because those lessons are valuable (at least to me), I will make the future articles only available to my paid subscribers. If you find my articles useful, thank my daughter.
About myself
I consider myself a non-ambitious type of person, finding and keeping a job is my top priority as the sole income earner of the family. After working 3.5 years in a research centre, like many, I joined a large commercial company (Nortel Networks, which was rated one of the top 10 most promising companies in the world in 1999) and hoped for a long and stable career there.
However, the Dot-com bubble busted five months after I started working at Nortel, and our newly-opened branch was among the first ones closed. I received a good severance package and learned a good lesson, “when a company says, ‘our staff is its best asset’, that’s bullshit”. No longer believing in the so-called career path, I started contracting.
I contracted for about 5 years as a senior Java programmer, and one event in 2005 changed my professional life. I was extremely fortunate to have a pair programmed for 6 weeks with one world-class software engineer, from whom I learned test automation and continuous integration.
After practising web test automation (via UI) for a few months, I found myself much more productive than my peers (all senior Java contractors). Shortly after, I started leading development in some projects. At one particular one, I had the freedom to implement my new-learned understanding (Continuous Testing Driven) of SDLC in a team, with great success.
My starting to develop my own software was unplanned. One business analyst wanted to try running our automated tests, but using a coding IDE was too complex for him. As a trial and an attempt to practise my Ruby programming, I started developing a simple tool to edit and run Watir tests. Frankly, when I first showed it to the business analyst, I was slightly embarrassed by the app’s over-simplified User Interface. To my surprise, the business analyst liked it and used it daily. So, I continued developing this app, later known as iTest2 and then TestWise, in my spare time.
The success of TestWise (my team members used it daily) boosted my confidence. In the coming years, I created (and maintained) several software and apps.
I consider myself a successful Micro-ISV in the technical aspects, but not in Sales/Marketing. I share my lessons and regrets here as well.
The Software/Apps I developed
In 2007, I, with two business partners, formed a start-up for a sports management app, but it was unsuccessful. Since then, I developed all the below software solely, in my spare time while working as a software consultant.
Active Commerical Software and Apps:
TestWise (2006 - present), next-gen functional testing IDE, a desktop app on Windows, macOS and Linux platforms.
(2010 Fukuoka International Ruby Award Finalist)BuildWise (2014-present), a Continuous Testing solution, consisting of a BuildWise server and BuildWise agents.
(2018 Fukuoka International Ruby Award Winner)WhenWise (2018 — present), an online service booking app, a Progressive Web App (PWA) that works on smartphones and browsers.
TestWisely (2022 - present), a cloud-based continuous testing platform (functional, performance and load testing). TestWisely is a SaaS (software as a service).
No longer active in the development, but still in maintaining mode:
ClinicWise (2013 — present), clinical practice management software
SiteWise CMS (2012 — present), content management system
All of the above has commercial customers.
Deprecated:
LoadWise (2010 – 2013) for load-testing web apps. I deprecated it because this traditional protocol-based load-testing tool does not support dynamic websites.
StoryWise (2014 - 2019), an extension of RedMine to generate a requirement traceability matrix. In 2020, I incorporated some of StoryWise’s features into BuildWise).
Own Use:
SupportWise (2014 -present), our internal system to provide support to our customers.
What does this series cover?
The links to below individual articles, accessible to paid subscribers only, will be set when published.
I will share the lessons (good, bad or regrets) I learned:
Prepare
Assess the capability and resources to start developing your own apps.
Be different from how the work is done at the job
Doing it solo or with one or two partners?
Quit the job, or do it in your spare time?
What kind of apps shall I develop?
Development
Which coding language or framework?
Deployment: make it quick and simple
Release Early (within 10 days), Release Often (every day)
Database
Graphic Design
Queueing
Multi Server-Environments
Third-party services: Google/Facebook Auth, Email Gateway, Payment Gateway.
Testing
Automated End-to-End Testing is Micro-ISV’s best friend
Continuous Testing, full regression testing (including end-to-env) under 30 minutes.
Seeding Test Data
Exploratory Testing
Email Testing with Fake SMTP server
Project Management
No Jira or any digital user stories board
No defect tracking at all
Business
Business Structure
Partner Agreement
Business Branding: company name, website, email address, business cards, …, etc
Aiming for profit, for most Micro-ISVs anyway
Be aware of competitors, but don’t worry about them, focus on your unique advantages.
Marketing
Domain, Web Hosting, SEO
Social media or newsletter marketing, mostly, are useless
Build a brand
Showcase
My experience with Google Ads
Support
One command to retrieve Scrambling production data to the local server
Documentation, prefer the markdown format (generate book format)
Technical Support by a support ticking system, not Email
Practices
How do I typically implement a user story?
How do I typically handle a reported defect or change request?