Great artists steal
Take the best ideas & practices from software and web development.
Strength in numbers
Trade the simplicity of large monolithic packages for the agility and flexibility of multiple, smaller ones.
Microservices for the nanoscale
Build large structures with independent libraries communicating via shared data schemas (i.e. transactions).
Room for growth
Create simple base libraries, but design for extensibility via high-level main functions with numerous potential entry points for customization.
Keep it simple
Never allow downstream code to dictate the inclusion of hacks and kludges into a generic package.
Keep it clean
Slow, but quality growth via demanding code reviews.