In 2017, I had the pleasure to be part of a team in it's very early stages and had the chance to shape the future. I had an idea of how things should be from previous expierences, but I didn't lose an opportunity to question my assumptions in every step we took. That helped me organize better in my head, my knowledge about setting up a development team from scratch.

In this post, I will like to lay down this process, decissions you will have to make along the way and your options. As in 2018, I will follow this guide if the opportunity shows up again and I will guide any fellow that want's to learn more about the process here.

Infrastructure

Hosting service/(VM|P|C)aaS/Serverless/

Lay down a plan that will take in consideration the business model and shape the infrastructure from the very beggining all the way to the target goal.

For example, you may think that it would be best to set up a kubernetes cluster with container and enable blue/green deployments that will be reviewed through Jenkins. The wisest decision you could take is start up by setting up much simpler infrastructure but set up a plan that will take you there step by step over the next few months or even years. Analyze the tradeoffs, check how fast you must be there and act accordingly.

Source control/Git Flow

Git flow, brancing, PRs/Code reviews, Releases, Tags,

Automation

My first coding mentor once said to me, the third time you will have to do something, you should that it's time to automate it. Not earlier, not later. Ofcourse 3 it's not some kind of a rule, but it's my personal preference and it has worked for me quite well all these years. Sometimes automation may take even more time than to do the actual task so consider the actual gain from the automation.

Development Process

Agile, Scrum, Meetings, Teams/Leaders,

Documentation