Official Guidebolt Software-Design Guide
We have different types of software:
We like these programming languages:
Python is good for general-purpose scripting and abstract programming.
PHP is good for fast-deploy web-development. We like the LEMP stack (linux, nginx, mysql, php).
C is good for embedded programming and simpler general-purpose programs.
C++ is good for more complex general-purpose programs with performance optimization.
Joint Strike Fighter AV C++ Coding Standards, 2005, Lockheed Martin
NASA - JPL Institutional Coding Standard for the C Programming Language (2009)
NASA - The Power of Ten - Rules for Developing Safety Critical Code (2006)
MISRA - C Coding Guidelines for Critical Systems (2004)
All source code must be ultimately organized in a single-umbrella-element (file or folder) per software-module. The single-umbrella must be specific to that module.
REASON: A single umbrella element is easier to share, back-up, and reference. It is clear where supporting data should be organized; at the start of the file or within the top folder (ex. README file, docs folder).
All source code must be organized with documentation to make it useful (ex. compile, install, run). This documentation should be proportional to the complexity/specialness of the use-process.
All long-term source-code and supporting-data must be version-controlled with GIT.