Tag Archives: application development

The first 5 steps to building your own SaaS application

This post is for non developer founders who want to build a SaaS application.

Software as a Service (SaaS) is a relatively small market – at $19 Billion in total revenues, it seems large, but compared to $250 Billion of the overall software market it seems minuscule. It has grown from nothing to this large number in the last 10 years. Similar to the eCommerce market, which seems large but is less than 15% of overall retail, the opportunities will start to be in the niches is my prediction.

The big question is when and how will it grow and where are the opportunities. While there are many specialist firms focusing on SaaS alone, the incumbent software companies (the largest of who are Microsoft, SAP, Oracle, etc.) are also making their own investments to move their businesses from selling licensed software to services.

One of the key opportunities I see is that ability for smaller, niche markets to be targeted using SaaS. Since the deployment model, time to value and cost are so much lower now than 10 years ago,  it is easy to build a niche product that can gain rapid fan following among the target customers and *if that customer base* does grow and end up having more budget it can be a lucrative market.

I do get the question often about the steps to build a SaaS business. Even if you dont intend to build a Venture funded business, the economics of SaaS are determined by cost of customer acquisition (CAC) and cost of servicing the customer (developing, operating and maintaining the software).

What I am increasingly starting to see is that most prototypes are either built by a developer founder, or outsourced (by a non technical founder) to “prove that the market exists“.

1. The first step I’d recommend before you start development, is to sign up 15-20 beta customers. Target people you know well who will stick through your crappy alpha, beta and version 1, so you can convince them that the value does exist when you iterate quickly.

For early beta customers, there are many techniques you can use including: a) setting up a launch page and promoting that launch page on social media b) setting up a launch page and buying Google adwords to drive signups and following up with signups via email c) blogging about the topic to share what you know about that market d) interviewing influential users before you launch or e) setup an email newsletter of great content for that industry and have many potential users subscribe to that newsletter.

2. The next step is to create an activity model and user flows.

User flow Diagram
User flow Diagram

This step is to ensure that you can know exactly what are the top 3 features you need to implement first which will make your product “must have” to solve the problem for your users.

In fact if you can identify the top feature (just one) that people will come back and use everyday, you should be good to go to the next step. Validate the top feature with your beta customer list, so you are building what they will use.

3. The next step is to create a mockup using wireframes. These are typically good to show the screens your user will go through and the experience as well. I would get a lot of feedback on the list of steps and screens before I build the prototype.

Iphone Wireframe
Iphone Wireframe

Typically in your first pass stick to under 7 screens would be my suggestion. That’s enough for a 45 second to 1 min “demo” and should give your users a feel for what the app will do. If they ask you for “one” feature that matters more to them than the ones you have, dont mock it up yet, but put it on your list until you have enough users interested.

4. Design your database schema. A database schema is good to share with your developers entities that exist in your application and what their relationship are. I tend to use DB Schema or just Freemind to show to fields without the datatypes.

DB Schema
DB Schema

5. Understand and select your “stack”. Even if you want to outsource your application development I’d recommend you talk to a few developer friends who can educate you on the stacks they use – what the front end languages and libraries would be, what the back end language would be and the database options. You will be more confident when you talk to your outsourcing company and also be able to help make tradeoffs when you need them.

Advertisements

What has changed for developers in the last 20 years

I asked this question on Hacker News last week to understand the shifts in software development over the last 20 years. From 1995 to 2015, there has been a dramatic change in the developer ecosystem. I thought I’d summarize all the changes and try to make sense of the trends. In this post I am only going to focus on the identification of the trends, as opposed to the analysis. I would love your thoughts on trends I may have missed.

1. The rise of open source options: In 1995, there were about 5 open source languages for the web including Perl. Now there are over 100 languages including Ruby, PhP and Javascript.

2. Plethora of libraries and frameworks: From < 10 libraries and frameworks to over 200 (Bootstrap, Javascript frameworks, etc.) The only libraries available in 1995 were those for Javascript. Today, there are over 100 libraries and frameworks for Php alone.

3. From waterfall approach to development to Agile: Most early software development was based on Requirements -> Design -> Architecture -> Development -> Testing -> Release. Now with agile methodologies being followed by many development teams, we are seeing a rise of faster release and in many cases daily releases.

4. Client-server application development to Web apps to Mobile apps: The overall changes are from PC (dekstop / laptop) client software to web applications and now to mobile applications. We have gone from native clients to browser based apps back to native mobile apps all over again.

5. Phenomenal rise of consumer apps, thanks to mobile : Personal finance (Intuit), to 1+ Million consumer apps thanks to mobile. PC’s were largely (90%) used for “work” with few consumers having home PC’s. The home PC’s rose thanks to the web, but now everyone has a mobile phone. Which has led to a phenomenal increase in # of consumer apps, not just business or productivity apps.

6. Increased availability of application level API’s: From providers such as Facebook, Twitter, and others on programmable web. The abstraction of core API’s from just Operating system SDK’s to application level API’s has made the move for apps to be built on the next level of the application stack.

7. Ease of looking up coding examples, tutorials and sample code: Thanks to Stack Overflow and Github, there are many more samples, code snippets and examples that developers can use to be more productive quicker.

8. Rise of coding / hacking schools: From no programming skills to employed developer in less than 6 months. Most developers, 20 years ago, needed to have an education in Computer science, before they could code. With the rise of frameworks and libraries, along with higher level languages, there has been a significant rise in number of coding schools and bootcamps to get anyone with any degree be a developer in less than 6 months.

9. Increase in the number of indie developer (solo): With the rise of consumer mobile apps and mobile games, there has been a significant rise in # of solo developers who are able to make a living based on building applications for niche audiences.

10. The change in market share of complied versus interpreted languages: 20 years ago, most programs and applications were compiled (C, C++) and the share of interpreted languages was small. Now, with Javascript Ruby and Php taking the forefront, most applications are interpreted not compiled. The only exception is mobile apps – which are still compiled.

11. The rise of DevOps: Developers are now being asked to not just build and architect, but also release and push their apps to production. Roles that were previously performed by specialized system administrators and release engineers are now performed by the software developers themselves.

12. The fall of software testing: More developers are also being asked to test their own code and software applications, instead of handing off the testing to a separate team.

13. The changes in app distribution – App Stores: Discovering, installing and using apps is a much more smoother and easier process now than before thanks to App stores.

14. The availability of Cloud infrastructure for app development: The biggest change for developers over the last 10 years has been the rise of AWS and other cloud services, which allow developers to provision, build and deploy instances and machines much faster than 20 years ago.

I’d love your feedback on the relative ranking of these trends and if I have missed any trends I’d love your feedback on those as well.