Ask HN: Good Software Engineering Guidelines to Implement in Company
- What abstractions to use and why, how to design them
- Common patterns and solutions, what to use and what to avoid
- What test at what level and why
- How to structure code in files/libraries/packages
- How to contribute and review changes
- How to document code
- ...
Please suggest it in comments. It would be great if decisions are justified, like: "Here are N foundational principles and here are how they implemented on each level".A bit about a problem I want to solve: From a team of 5-7 people we grew to several distributed teams and have newcomers from various backgrounds (c#, python, go, while we mainly write in typescript). What I see more and more is that each team or even each employee solves problems differently, using different abstractions etc. (and it is easy to do because we have microservice-ish architecture) - because there is no more shared approach. Frequently, when I contribute to other people code I have to spend time just to understand what's happening, how code is laid out and why (too often it is just personal preference). I imagine other employees have the same problems too, and it affects overall effectiveness - a lot of time wasted on unnecessary cognitive load.
It seems like engineering guidelines, if composed carefully, would help solve at least some of these problems.