Temporary code is permanent code.
"Temporary" code gets written when the "right" solution is ambiguous or impractical so that higher-priority tasks may be unblocked.
It is typical for priorities to never shift back to focus on the issue that the temporary code addresses.
Assume that any "temporary" code you write will remain untouched in production for years.
You are only as smart as your logs.
Inaccurate documentation is worse than no documentation.
Almost all documentation becomes inaccurate over time as code is updated.
Documentation is rarely kept fully in sync with code because it often doubles the required effort.
Code should be self-documenting to the greatest extent possible, to avoid the need for non-code
documentation.
Strangler Fig Application - Martin Fowler:
"Much of my career has involved rewrites of critical systems.
You would think such a thing as easy - just make the new one do what the old one did.
Yet they are always much more complex than they seem, and overflowing with risk.
[...]
An alternative route is to gradually create a new system around the edges of the old, letting it grow slowly over several years until the old system is strangled."
Best IDEs: JetBrains.
A proper IDE is arguably single most important tool that a developer relies on.
True professionals use the best tools available, and in my experience there is
little question that JetBrains products stand firmly above the rest in their quality and capability.
Full CI/CD is mandatory.
Automate your deployment process relentlessly, even - in fact, especially - critical systems that have high risk and blast radius.
Your deployments will inevitably fail one way or another whether they are automated or manual.
When they are automated, you are in a position to verifiably prevent the failure from happening ever again with code.
When they are manual, you are stuck telling people to be superhuman and never make mistakes, an approach that does not scale.