How we code to never fail

  • Automate setup as much as possible to reduce time and costs for new developers or changing environments.
  • Offer maximum portability for having the availability to move the software to any place at any time.
  • Use the cloud and modern deployment strategies to avoid administration work.
  • Get rid of differences between development / staging / production, to minimize unexpected issues.
  • Be ready to scale at any time, without big architecture changes or development works.
  • Monitor applications logs and resources to be informed about issues before your customer does that.
  • Use best practices and contribute to open source projects. We don’t have to reinvent the wheel, we are not alone with our problems.
  • Implement the “green light” which tells us, if our product is still working as we expect.
  • A codebase is defined as a git repository
  • One git repository has a file called README.md which describes: What this repository is good for, How to run checks and tests, How to contribute, How to deploy
  • Every codebase can be a port of a distributed system and is runnable and deployable as it is.
  • When a codebase has to be shared between two or more repositories, we call it a “dependency” and should be managed and versioned by pip, npm, maven, composer or other dependency management tools.
  • Define a code style for your codebase and check it every time changes are made to improve readability
  • All state data should be saved in external data stores “Databases” or “File systems” and not on process it is running.
  • Only cache can be saved on the machine “RAM” or “File system”
  • Administrative commands like DB migrations, running tests, deployment command, should be defined in each codebase.
  • Small tasks are better understood and motivation is higher to accomplish more tasks per day
  • Small MRs are always better reviewed
  • Small commits describe your work better.
  • Know-How transfer is more precise
  • Quality will be improved

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store