I have blogged about this for some time now, that I am working on an e-commerce app for another startup. This is another post on that top and in this non-technical post, i will be talking about the project managing aspects this project. Here, I will focus on the managerial aspects such as establishing a plan, setting milestones and deliverables.
At this stage, I am a one-man startup and while this is a project for another startup, technically the founders can only help testing. For the last couple of weeks, I have just gone on an unorganised development spree. Here’s what I mean,
- I wake up in the morning and start my computer
- open Visual Studio Code
- Start the node environment,
- See what the app looks like
- Start adding/fixing things
This development style is something that you may adopt in the last stage before release. At that stage, there’s chaos and you fix whatever bug you find to finish the product and release it. It’s fire fighting, you fix one bug and move onto the next one. At this stage, however, I feel I should follow a stricter schedule and focus on one problem at a time.
Being the only technical person (developer, sys admin, project manager etc) at my startup right now, I feel I could achieve more with better planning. Here’s a scenario,
- I am adding admin page to add items where the item data is saved to a NoSql cloud db and files uploaded to cloud storage
- I realise it would be good to improve app speed if it renders smaller images
- We can do that by adding a serverless function in the Cloud platform (Firebase)
- I start writing the serverless function
- Wait, that serverless function needs to integrate with another cloud platform (Google Cloud) and it would make our job easier
- However, there are additional costs to it, will the founders be ok with the costs?
- If we change the entire app to use Observables i.e. streaming data, does this have long-term benefits for the overall product vision?
- Ohh wait, I added a new service, dam!!! Now this makes the code more tightly coupled. Ohh man, now what if we want to change our cloud provider in the future? e.g. from Firebase to AWS Amplify
etc etc, so there are questions popping up left, right and centre and I don’t think I am adopting the most efficient approach at tackling them. I think I would do better, if at any given time, I just focus on one thing. Say, if I am doing UI development and an unrelated database issue that surfaces, I should log that on JIRA and continue with UI development.
A lot of my time is consumed by unplanned tasks, so even when focused on a task, I discover and pursue other equally important tasks. This behaviour sets me off course, I go off a tangent which delays the original task I was working on. Hence, I feel if I set clearer goals and maintain better discipline I should be able to stay on course. I think a good start for this would be to have a set of deliverables (or milestones, call it whatever you want) that I am chasing. I have setup milestones for other projects at My Day To-Do in the past, but not for this project yet.
Agile project management
Agile is a big thing and I am always fuzzy on specific terminology on these things i.e. I don’t always know the exact terms. I mean, given my experience, this is what I have been doing for years. For the work as I did as a consultant for Aurora Consultants in Perth as well as an independent consultant in Sydney. It’s always been about building something with non-technical stakeholders by giving them regular updates on work. A lot of the time, the updates are just some interface tweaks, as the backend is built. I started using this approach to manage expectations. In my experience, non-technical stakeholders almost never understand the hard work that goes in building a backend. To them they need some visual confirmation to justify the money being spent. Therefore, I adopted this iterative approach to building client-solutions. It just seemed natural to me. Honestly, to me, I see every aspect of my job as an extension of “separation of concerns” principle or just “Divide and Conquer”.
p.s. Separation of Concerns, Divide & Conquer……I know, I am such a software haha
I must that the one new thing that I learned from Agile are User Stories. User stories are awesome, they are intuitive and it’s a great way to think about things.
All right, now let’s talk about the milestones for this project.
I will just list the milestones here but not specify any dates or timelines.
- Admin page to CRUD items, Categories
- Customer page where they can browse items
- Add items to cart and checkout
- Search, filter and sort items
- Create an account and sign-in
- Customers to view order history
- They have social media login
- Integrate customer payments via a payment processor
- Final e2e testing of all components
- Separate prod, dev environments, collect app store assets and prepare for release
- Release the app!!!
This paragraph is really just a personal rant more than anything else. Until August, 2018 was the best year for My Day To-Do, the sales were up, there was more user feedback, I released 5 new apps etc etc I was highly motivated and extremely organised. Unfortunately, life had another unexpected twist for me. My partner and I had been having problems, while I thought it was something that we could resolve. However, she broke up with me at the end of year and I didn’t try to convince her to come back. This time, it seemed a lot more serious than the first 6 times she had ended things. The months prior to it were bad but I persisted through it. I mean, she was going through a tough time on her end and I was her punching bag. It’s all right, we all need an outlet and relationships are about supporting your partner through everything. I really didn’t have to try too hard to convince myself. She was good looking, had a PHD in Physics from a top university, great cook and naturally talented. E.g. if she watches a music video on YouTube, where people are dancing to certain steps she can memorize the steps and could dance on those exact steps! Yes, that much talent!!!! The talent had looks, intelligence and cooking skills to go with it. So her short temper was totally justified. However it all got a bit too much for me and so I didn’t try to convince her to stay in the relationship the 7th time. I keep thinking, I should have been more patient but anyway, let’s see how we go. One more thing, through our relationship, I kept hearing how I was wasting my time on my startup.
Anyway after the breakup, I decided to move out of my apartment of 7 years and suburb of 10 years so I could be closer to family. November, December and the first 2 weeks of January were not that great. I was so unfocused and all I wanted to do was just solve these one-off problems. I mean, just write a bunch of recursive code for the heck of it. Solving something recursively is just therapeutic. So in that period, no planning on system design, architecture, scaling etc but just solving one-off problems.
However as of the last 3 weeks, things are getting back on track so I figured time to get organised again.
In hindsight, I wish had prepared some contingency for unexpected life events. The contingency I had was for my code i.e. it’s backed up and well documented. Again, my original job is a software engineer…
Hmm, ok, my personal nonsense aside, the point I was trying to get across was, having a proper project management strategy is just as important for a startup than any other organisation. Startup is a place where you have to wear many hats, and having a clear structure on what to do is just more productive. I know, I am not saying anything new or ground breaking, but sharing my experience. Also, you need. I never liked those sysadmin tasks, here I have no choice and now, I know
a) If needed, I can do those, do them well
c) and I am still don’t like them
Anyway the internet is a great platform to share your thoughts, I hope you find something useful from this article. Happy reading!
My apps: https://mydaytodo.com/apps/
Also, if you can leave a review on the App Store or Google Play Store, that would help too.