First steps

Introduction

Welcome back to my journey on how to build a SaaS application. If you missed out on why I started this journey and what it is actually about, make sure to read my last post.

First things first: Unfortunately I had to find out the hard way, that working a regular 9-to-5 job, exercising 5 times per week, reading 20 pages per day, having daily quality time with my wife, seeing friends and basically managing life itself, all while trying to work on a side project is really exhausting and time consuming. So I will probably need to cut back a bit on other parts since I promised myself that this side project will be my number one priority for the coming weeks. Well at least during my spare time. So to get things done in time I need to find a way of structuring my days a little better and reduce on my other things I do on a (almost) daily basis.

Retrospective

After you heared my whining and complaining, let’s have a look at the goals I set for this week (06.01.20 – 12.1.20) and what I actually accomplished.

  • ☑ Define MVP functionality more concretely ()
  • ☐ Write User Stories
  • ☐ Wireframes + Mockups
  • ☑ Get as far as possible with proof of concept implementation

As you can see I stopped the planning after I defined the functionality for the Minimal Viable Product (MVP). Even though this might look like I skipped right to the fun part (programming), it was a rather well-considered decision. First I need you to understand, the important thing to me right now is to launch this product as quickly as possible with minimal effort. In order to reach this goal, I need to cut back as much as possible on everything that is not 100% needed.

The reason for not sketching out any Wireframes and Mockups is pretty simple, so I will start with this one. First: I really suck at it, so it would have soaked up a lot of time. And second, I decided to use a framework for the User Interface. So basically I get almost everything that is related to the user interface out of the box. As soon as the MVP is finished I will invest more time on that, but for now I go the route of minimal resistance.

The reason for not writing User Stories is a little harder. I even started writing out almost half of the stories, but after realising that the stories where just longer versions of my definitions for the functionality, I stopped investing more time.

MVP functionality

Here are the MVP functionalities I defined

ADMINISTRATOR:

  • Register a company account
  • Create teams
  • Create users
  • Mark certain users as team leader

TEAMLEADERS:

  • Create Users
  • Assign users to teams
  • Set settings for sprints
    • sprint duration
    • pairing session duration
  • Track sessions per sprint (MVP ???)
  • Set goals for sprints (MVP ???)
    • number of pairing sessions per sprint
    • number of hours done in pair programming
    • number of minimum pairing partners per user
  • Create new pairing session overviews for the next sprint
  • Edit pairing sessions of past sprints in case of wrong entries

USERS:

  • Change my password and username
  • Look at current and past pairing session overviews per sprint
  • Search for specific pairing sessions (by sprint or date)
  • Increase the number of sessions done with a pairing partner in current sprint
  • Decrease the number of sessions done with a pairing partner in case of wrong entry
  • See the current progress in consideration of defined goals (MVP ???)
  • See the progress compared to sessions from previous sprint (MVP ???)

Work done

While writing down the functionality I realized that maybe not everything is needed for the very first version. I started questioning a few features, like setting goals for the team. Personally I think that teams will get the most benefit out of tracking their pair programming sessions in one single place immediately after the session is done. It is especially important that this one place can be accessed from anywhere. From personal experience I can say that sometimes my colleagues and I miss out on tracking our sessions immediately and forget to do it all together. So the tracking system must be accessible from anywhere, simple and done quickly. Everything else will come next. This is why I decided to leave out everyhing that is marked with (MVP ???). But I wanted to write it down here, so that you can follow my process and my reasoning behind my decisions.

Since I have more experience with the backend part of development, this part is almost done. At least most of the functionality, in it’s simplest form, is finished. The frontend part is where I have less experience with so it soakes up more time since I have to look up a lot and make silly mistakes. But thats part of the process and one reason for this whole project: becoming better at both parts of the development world.

Progress

Total time invested: 15 hours
Progress:
Currently you are able to log in as the administrator, create teams and users and assign user to teams. Then sign in as a user and interact with the pair programming overview (although, this part is currently just a dummy in the frontend and not yet fully interactive with the backend.) Plus I have set up automated testing and some deployment processes I need on a regular basis.

All in all I am incredibly happy with the progress I made within just one week. But to be honest, I was able to use a lot of code I had already written for other projects. Additionally, the complexity of this project is insanely low. So it was no problem whatsover doing this “easy part” after work. I expect the progress to slow down a lot as soon as I hit mayor problems or work on things I have not done a million times.

Next weeks goals (13.01.20 – 19.1.20)

I am pretty sure that the next week will be almost no progress at all. Since I will be attending a golang meetup and have two personal appointments, I am almost certain that I will find only few hours to work on this. But let’s see how far I can get.

What I want to get done until next week is this:

  • Finish the User Interface for the pairing sessions
  • Mark user as team leader
  • Login as team leader
  • Only show things in the User Interface that belong to the permissions of the logged in user.

If you like to never miss out, make sure to check out my Twitter @langhorstthomas.

Categories: Blog Posts