Your rush life leaves you with little time to update, fix or continue a years-old project you once started. With incorrect design and architecture, such project is dead. How to start a project that you can maintain after a long time.

Programming language, Infrastructure and repository

Choose a stable programming language and use stable packages. using packages that has no support will result in finding out alternatives in the long run. a good example for that is v4l2camera. for prototyping, I usually use python. for REST APIs, I use flask. I created a flask template with logging and configuration here.

Infrastructure: Where do you run your code? is it a Debian based OS? is it Arduino Uno… This is important due to changes that deprecate your code.

Repository: Repository is important in order to keep track of your changes.

Easy installation and running

Invest time in automating running your project with one command. use Makefiles or npm if it is relevant. If there is any dependency, document it in a README file. This is important since you are going to forget the small steps and configurations need to be done in order to get it running. if you reinstalled a new Raspian, you won’t need to apt-get all the packages, your automated script will do it for you.

Bullet Proof Basis – The holy branch

Before you release your first Alpha, do all the necessary refactoring and enrich your comments and README files. Your code should be almost bug-free and all the temporary steps should be designed correctly. no hardcoded passwords and usernames should be left. after doing so, Branch your master and work on any new feature or risky steps. After your first bulletproof featureless alpha, the master branch becomes a holly branch.


Tests are important in order to make sure that after any future touch to the code, you do not ruin previous functionality.