Most of this is generic and basically equivalent to saying follow best practices. Hopefully this section will be refined more clearly to possess the high-level approach to a healthy technology mindset.
- Code design, cleanliness, isolation, and ability to move and change is more important than the implementation of the code itself.
- The algorithmic approach to how the problem is solved is clearly needed to make the software "work".
- Following good code quality and design ensures that business changes don't destabilize the system.
- Code cleanliness and simplicity is just as important as the logic of the code!
- Use the most appropriate technology for the task at hand.
- The newest and most exciting technology is not always the best choice.
- At the same time, the old stable technology may be stale and out of date.
- Picking the best technology for a project that is new and unknown by most of the company's engineers will have additional challenges getting adoption.
- If a project is long-term, at times even if the technology is not well known...it may be worth the time and effort to adopt this technology.
- Version control, best practices.
- Don't store binary files in Git, use a proper binary versioning system.
- Store code related documentation alongside in git. Ideally documentation within your code repository should be updated alongside the code.
- Backup VCS repositories, you can corrupt and/or delete files that you cannot easily fix.
- Design for least privilege access for all security controls.
- Don't take shortcuts, don't be lazy and reuse security groups.
- Prefer never allowing entire subnets or address blocks.
- Use security groups as sources and limit the ports to only those you need.
- Don't use the same public keys for every system and especially across environments.
- All database calls must be executed by type safe technologies that follow type checking, proper error handling and logging levels.
- Generally, databases must utilize ORM technologies. Ideally, queries should not be written by hand.
- Try to use abstractions whenever possible as the storage mechanisms may change over time. You don't want to have to rewrite everything.
- All data transferred in any public connection, and preferably even in private connections must be encrypted with the latest standards in
encryption.
- A public connection such as over the public internet. Even VPC's that are either publicly accessible or a lot of users and sensitive data. The golden rule is data must never be transferred at all publicly unencrypted.
- Encryption does not always have to be using a TLS connection. Data may be encrypted at one end and sent over the wire without any additional encryption and be acceptable.
- Consult with the CTO and or CISO on best practices and specifics.