Monday, January 31, 2011

Building equity with products

Software development is an awesome thing offering both pain and joy, but beyond that, it puts developers in a unique position. We can literally create a product out of thin air that solves a problem and adds value. Most of us do it for companies and receive compensation for it, others do it for their own business (we will leave out the hobbyists who do it for fun and the open source community in this discussion.) Which one builds equity and what should we pursue?

Let's start our look with default route people usually take en masse-- the employment route. Why is this the default? Schools prepare us for today's jobs or to become university professors. The institution of school was built to serve industrial means and as such must crank out good skilled employees who can serve the needs of industry. Sir Ken Robinson does a magnificent job at explaining how the system works and why it is deficient for tomorrows needs. How can school be preparing us for an unknown future? What will happen five years from now? One year from now? No one knows yet we pretend to be preparing our children for it... But I digress...

Going to school can be good thing and prepares us to meet the needs of industry today. As developers, a lot of us will study computer science and learn great things like discrete mathematics, hard sciences, math, programming, data structures, software engineering, etc. With this knowledge and skills at hand, we then hope to enter the workforce to build and/or enhance applications. This is an extremely pleasurable experience. Working on something you are passionate about and getting payed for it is the ultimate thing ever in my opinion. Here some of the other benefits of employment:
  • Steady and predictable income
  • Career progression
  • Working with a team
  • Growing personally and professionally
  • Learning new skills, technical and otherwise, from more experienced developers
  • Managing projects and teams
  • Working with people across regions and different cultures
  • Learning best practices
  • Getting to see what powers a company and how its technology infrastructure is structured
There are many more benefits to employment but there are some drawbacks as well. One I have come to notice as of late:
  • Ownership of your work belongs to your employer
In a corporate environment you get to build really cool stuff but own nothing and just take home what you have learned. The code is theirs and will be used to grow drive revenue or save money. Sometimes this revenue or savings can be in the millions. At my old employer, we used a vendors matching engine that was essentially nothing more than a 2-3 month project (at most), which the firm payed about 1-2 million for up front and had a maintenance cost of $200,000 dollars a year. Guest how many times we had to call them for support? Twice in 5 years. It's design was simple and elegant: a 2 tier C++ application hitting the database. Our applications fed it trade data from hooks we built to the database. The database had a series of triggers that called stored procedures or plain SQL that would take action upon receiving new trade data. It would perform matches when possible, report near matches, failed matches, and other exceptions to the users for their intervention. The matching engine was very flexible in the sense that we owned the database and were able to make schema and core changes to the database logic at will. 1-2 million dollars plus $200,000 a year for something we estimated would have taken 2 guys to build in 2-3 months. Amazing isn't it? Who would have thought that much effort would have that much of a return without being a rock star? Let's do some simple math here. Let's assume they would have paid 1 million dollars for it. That means that the 2 guys I mentioned in our estimate would have made $500,000 each (excluding the support income). Now assuming the worst case of our estimate, let's say it would have taken them 3 months to build. They would have each made about $167,000 per month. Not a bad wage huh? Remember this was just one bank paying this. Others banks would have probably paid the same with little hassle once they would have seen the competition pick it up.

Now obviously I am ignoring some costs here. The one cost of many I am ignoring here are the marketing costs and other miscellaneous costs. This would take down their earnings quite a bit. Another thing I failed to mention here is as well is how hard it is to sell to enterprise businesses or the Fortune 500. It can be incredibly hard from what I hear and can take forever for it to clear and for money and software to exchange hands. But the point I am trying to drive home here is the equity these guys would build from owning this software and that would increase overtime when enhanced it new features. Targeting small businesses would increase their chances of success as well (at a much cheaper price.)

This leads us to the final point of the blog and that is one of building equity. When you write software that you plan on renting or selling to the public, you are building equity overtime and increasing your net worth. The software business is sort of a copy and paste business model: build it once and correctly (or correct enough) then copy and ship the product to as many customers as you can acquire. The effort is not duplicated like when you are employed and have to constantly build newer things. You just have to build something people want or need once (with maintenance cycles of course) well enough and people will pay. Good thing about building a product is that it belongs to you and you can do whatever you like with it. One question you may have at this point is: how do I find a product people want or need? For starters, what do you want or need that does not exist or exists but does not meet your needs? What do family and friends our yours in unrelated areas of life want or need? What do people in the hobbies you enjoy want or need? There are many ways to find niches as described in this new book I am reading called Start Small, Stay Small: A Developer's Guide to Launching a Startup. I think any technical entrepreneur with ambition to get into the game should definitely pick up this book and add it to their arsenal. There is not talk here of chasing VC's and seeking millions in funding to get started. It basically teaches you how to build it in your spare time and on your budget. I cannot put the book down and have already started to employ his advice on market research using Google Adsense and other tools available online. Amazing read check it out.

Follow me on Twitter mrosario2012