Learning Roadmap: Creating Software as a Service
Tags: learning, saas
Published: 2019-11-05 22:13:26

---
title: Learning Roadmap: Creating Software as a Service
published: true
description: Feedback wanted: One of my main focuses for 2020 is to learn how to develop and release Software as a Service (SaaS). This article outlines the process I’m going to take over the course of the year to accomplish that goal.
tags: help, learning, SaaS
canonical_url: https://mrmadhat.com/development/learning-roadmap-creating-software-as-a-service/
---

Hi Everyone!

This is my first post on dev.to, I've been working on creating a roadmap to direct my learning for the next year and I'd really appreciate some feedback and ways that I could improve it. I'd also be interested in any articles/resources that cover the topic of creating software as a service and anything else that you think could be useful. Thanks in advance 😀

Here is what I have so far:

One of my main focuses for 2020 is to learn how to develop and release Software as a Service (SaaS). This article outlines the process I’m going to take over the course of the year to accomplish that goal. To start, I want to clarify exactly what I mean when I say Software as a Service to narrow the scope of my learning and ensure I remain focused on a single specific objective.

## My Definition of SaaS

My definition of Software as a Service is a web app–such as trello–whose business model is based on recurring payment in exchange for access to some or all of the software. The software must provide a service to the end user which is valuable, value is created by saving the customer time, money or both. My focus will be to create standalone web apps and as a result software that exists solely to extend other software, such as WordPress plugins, are not included in my definition.

## What does success look like?

I will know that I have been successful when one or more of the following is true:

- I have a working piece of software that is publicly available
- I have a working piece of software that is publicly available that can accept payment in exchange for access to some or all of the features
- The software I create has a paying customer
- The software I create has over 10 paying customers
- The software I create has over 100 paying customers

Success is not all or nothing, it should be looked at as a scale of success. Failure is also expected and welcomed throughout the learning process but recovery should be quick and lessons should be learnt from the failure.

## Approach to learning

My approach to learning will involve understanding just enough theory to be able to put what I want to learn into practice. I will constantly seek out the quickest way to gain a solid understanding about a subject. For example, if I want to learn about agile development I could spend hours reading a book about agile or, I may find a website that explains the topic well, watch some videos and gain enough understanding so that I reach a point where I feel confident enough to put what I’ve learnt into practice quicker. After attempting what I’ve learnt I expect one of three outcomes:

1. What I have learnt is sufficient enough to allow me to complete the task at hand efficiently
2. What I have learnt is sufficient but not efficient
3. What I have learnt is insufficient, meaning I cannot complete the task

I imagine item number one will be a rarity but welcomed non the less, items two and three are more probable and in situations where one of them is the outcome I will return to theory to better understand the task I’m trying to complete. I hope this approach to learning will give me a quick feedback loop which will allow me to move forward quickly and efficiently.

## Learning Guidelines

The list below is an initial outline of the items I feel I need to learn/get better at to achieve the goals above, I expect this list to change and grow throughout the year:

- Development and deployment of robust software for the web
  - Agile software development
  - Aspects of SaaS
  - Software Architecture
  - Languages and frameworks
  - Test Driven Development
  - Databases
  - Deployment
  - Tooling and Productivity
- Business aspects
  - Validating a product
  - Identifying opportunities and value
  - Marketing the product/software

## Conclusion

The above is an attempt to gain clarity of thought and clearly specify what it is that I want to achieve in the coming year. Although this article seems to take a somewhat set in stone attitude towards my learning process it should be noted that I expect the above to change throughout the year. This is merely the first step in documenting what I want to achieve and is part of a larger plan to document the overall ‘story’. I know that there are many, many people out there who are smarter and more experienced than I am in the area of software development and I welcome your thoughts, feedback and criticism.