DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Daniel Gregory
Daniel Gregory

Posted on • Originally published at mrmadhat.com

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.

Top comments (2)

Collapse
 
webdevchallenges profile image
Marc

Hello Daniel, it looks like you put a lot of effort in writing and researching this post. It also seems like you already know a bit about software development and don't start from scratch.

I am also very interested in building a SaaS Product. I might not be an expert yet but I may have some tips for you to save you from mistakes I made so far.

  • I learned HTML, CSS, Javascript and Node.js first. You can already build solid applications with these few technologies and it is not that hard - one year is enough time to build something
  • Stop writing and telling everyone about your goals - the moment you tell someone, you already feel accomplished and lose a bit of motivation (at least I do)
  • I like to use Gitlab (you should learn git first btw) which already helps you with three of your points: Test Driven Development, Deployment and Tooling and Productivity with its built in CI which also helps with automating things
  • Reach the MVP (Minimum viable product) phase as soon as possible and by that validate your idea as soon as possible (Validating a product)
  • Dont stress technological perfection - you always will have to make compromisses
  • Get feedback as soon as possible
  • Don't underestimate the importance of UI/UX - I can recommend the ebook "Refactoring UI". It helped me a lot and you can read it within a few hours
  • Stop theorizing and start executing. Theorizing and researching is an illusion of productivity. Execution is actual productivity

Keep me updated on your journey if you like: info@webdevchallenges.com

Collapse
 
mrmadhat profile image
Daniel Gregory

Thanks Marc! No, I'm not starting from scratch, I already work as a WordPress developer and have done for many years but I feel I have become stagnant and trapped in a wordpress bubble so the above is attempt to push myself out of my comfort zone. I am comfortable with HTML, CSS/SCSS, Javascript, Git and I've spend quite a lot of time learning react. Next on my list of things is TDD with react and node, I was considering learning python instead of node because I like the idea of using it for web development and being able to create command line tools but I decided node was the way to go considering I'm already comfortable with js and what I want to accomplish.

Thanks very much for your comment I agree with all of your suggestions, now is the time to get to work instead of theorising! I'm currently working on a MVP at the moment but in my rush to get started I didn't include tests from the get go and now I'm having to work back to add them in. This is one of the big reasons for the post, to define my values for learning/development so I go about it in the right way.

Become a Moderator Do you want us to help make DEV a better place?

Fill out this survey and help us by becoming a tag moderator here at DEV.