Technical Standards
These technical standards are a set of general guidelines for software development that I have curated over time to support the creation of high-quality, high-value software products.
Technical standards define what “good” looks like from a technical perspective. The scope is broad, covering all aspects of the software development lifecycle: requirements specification, system design, coding conventions, testing strategies, deployment, and monitoring. But the focus of technical standards is on the desired end state, not the means of getting there. Methods and tools that help us to achieve our design goals – things like iterative and incremental development driven by feedback loops – are out-of-scope.
The focus here is on concrete standards and verifiable end states, rather than abstract principles of programming and software design. For those topics, see my digital garden.
Technical standards are owned by the technical stakeholders in a software project. In an enterprise context, the act of including a technology in a technical standard signifies that it is approved for use in development, testing, and production. Organization-level standardization helps contain technical sprawl, particularly in large-scale distributed systems.
Requirements levels
The capitalized words REQUIRED, MUST, MUST NOT, RECOMMENDED, SHOULD, SHOULD NOT, OPTIONAL, and MAY are to be interpreted as described in IETF RFC 2119.
Index
- TS-1 Software Requirements Specification
- TS-2 Software Design Qualities
- TS-3 Design Docs
- TS-4 Modeling
- TS-5 Application Architecture
- TS-6 Distributed System Design
- TS-7 Code Design
- TS-8 Issue Tracking
- TS-9 Version Control
- TS-10 Releasing
- TS-11 Versioning
- TS-12 Quality Assurance
- TS-13 Functional Testing
- TS-14 Performance Testing
- TS-15 User Interfaces
- TS-16 Command Line Interfaces (CLIs)
- TS-17 Graphical User Interfaces (GUIs)
- TS-18 Web GUIs
- TS-19 Search Engine Optimization (SEO)
- TS-20 Network APIs
- TS-21 HTTP APIs
- TS-22 Webhooks
- TS-23 Messages and Events
- TS-24 User Manuals
- TS-25 Technical Documentation
- TS-26 Technical Writing Style Guide
- TS-27 Markdown
- TS-28 AsciiDoc
- TS-29 JSON Schema
- TS-30 YAML
- TS-31 Unix Shells and POSIX Standards
- TS-32 Bash
- TS-33 Java
- TS-34 PHP
- TS-35 Python
- TS-36 ECMAScript (JavaScript/TypeScript)
- TS-37 Web Platform APIs
- TS-38 Node.js Applications
- TS-39 HTML
- TS-40 CSS
- TS-41 React
- TS-42 Vue
- TS-43 Relational Databases and SQL
- TS-44 Non-Relational (NoSQL) Databases
- TS-45 Data Migrations
- TS-46 Distributed Data and Caching
- TS-47 Dates and Times
- TS-48 Environment Variables
- TS-49 Cloud Platform Engineering
- TS-50 Cloud Economics
- TS-51 Amazon Web Services (AWS)
- TS-52 Security and Secrets Management
- TS-53 Privacy and Data Protection
- TS-54 Threat Modeling
- TS-55 Authentication and Authorization
- TS-56 JSON Web Tokens (JWTs)
- TS-57 Logging, Monitoring, Observability
- TS-58 Docker
- TS-59 Terraform
- TS-60 GitHub Actions
- TS-61 AI Tools
- TS-62 Make
- TS-63 URL Design