Hey there guys! So, I chose this topic as my first ever article, since it’s closest to my heart. As a Saas co-founder and CTO, my team and I went through our fair share of bugs and issues. The key to this, persistence, and creating a set of best practices, circulate these internally on notion.so. To my customers, worry not 😉 and to my fellow coders, I feel you!
These are my two cents on the topic:
- Define & document: As your Saas team grows bigger along with your product, it’ll be increasingly difficult to explain every aspect of your code to new team members. A good way to overcome a lot of these troubles, is to define and document. For example, on Reportcard, an event is a single occurrence of a subject being taught for a specified duration scheduled on the calendar, while, a class is a group of such events. Documenting these definitions, on both the code, and a centralised “internal knowledgebase” will prove to be very helpful.
- Feedback loop: A term that I learnt from the book “The Lean Startup” by Eric Ries. You don’t want to be stuck building swanky features that into your development time, instead, a good way is to always mvp your feature idea, and release it to set a of customers. Build the rest of this feature is solely based on the customer feedback. And trust me, there’ll be lots of feedback, so prioritise them. I’m happy discuss this further with anyone, hit me up here!
- Branch your code: Every now and then, there are going to be huge “ground breaking” features, that look easy to implement, but are a lot harder to release. Use github! GitHub allows you to have private repositories, for free! Branches come to rescue every-single-time. Always branch every new feature, feature enhancement, or bug release, irrespective of how small or large. Only merge to master what you’re sure of. Make it a habit to only merge after it’s tested and validated entirely, this way, you’re never erroneously pushing out code your customers shouldn’t be seeing.
- Good old manual testing: What is code? A set of instructions to be run by a computer to automate processes, hence most of the code your writing can actually be worked on a piece of paper (yes, it really can!). Get a book and pen, write down all use possible cases, and get cracking! That said, make it a habit to have yourself, and all your coders write basic unit tests, use a CI, like Circle CI to help you automate these tests when you push to GitHub, you don’t want your CRUD functions to fail in production, do you.
- Multiple environments: Our good friends at Digital Ocean help startup’s with free credits through their Hatch Program. This enables us to test on multiple server environments, locally, a QA/UAT server, the staging server (closer to home) and finally the production server.
Lastly, never let bugs bog you down. They come and they go Make them your friends, nurture them, and never be afraid to release soon!