Starphix
Sources / Software Engineering
The Lab / Sources
27 notes · CC BY 4.0

Software Engineering

The research behind course 003: architecture, patterns, testing, DevOps, security, performance.

Working notes from the research behind the course: mechanisms, tables, failure modes and sources. They are written for an engineer, not a beginner — the course is the beginner-facing version of the same material.

Read the course →

NoteLength
Overview
SoftEngine — Software Engineering Best Practices Vault
A curated knowledge depot of high-level software engineering principles, patterns, and practices for building maintainable, scalable, and secure…
716 words
Architecture
Architectural Styles
Comparison of major architectural patterns for structuring software systems. Each style manages dependencies differently and suits different contexts.
1080 words
Architecture Decision Records (ADRs)
An Architecture Decision Record (ADR) captures a significant architectural decision, its context, and consequences. ADRs create a decision log…
1186 words
Software Design Principles
Fundamental principles for arranging code so it can be understood, changed, and extended over time. These are compressed experience — tools with a…
1180 words
Domain-Driven Design (DDD)
DDD is an approach to software design that emphasizes modeling the problem domain accurately and using that domain model as the foundation for…
1101 words
DevOps
CI/CD Best Practices
Continuous Integration and Continuous Delivery practices for reliable, fast software delivery.
1297 words
Observability
The ability to understand system state from its outputs. Three pillars + modern extensions.
1049 words
Documentation
Documentation Principles
Effective documentation practices for software engineering teams.
1036 words
Languages
Go
Idiomatic Go patterns, concurrency, and modern tooling for maintainable Go systems.
1577 words
JVM: Kotlin, Scala, Java
Modern patterns, tooling, and best practices for the JVM ecosystem.
1571 words
Language-Agnostic Principles
Universal patterns that apply regardless of programming language.
553 words
Python
Pythonic patterns, modern tooling, and best practices for maintainable Python systems.
1050 words
Rust
Ownership, borrowing, async, and idiomatic patterns for safe, performant Rust systems.
1698 words
TypeScript / JavaScript
Modern patterns, tooling, and best practices for the JavaScript/TypeScript ecosystem.
1038 words
Methodologies
Agile Principles & Methodologies
Core values, principles, and major frameworks for iterative, adaptive software development.
1359 words
Engineering Culture
Building a learning organization where people do their best work.
1068 words
Team Topologies
Organizational design for fast flow. Team structure should match architecture (Conway's Law in reverse).
750 words
Patterns
Design Patterns
Recurring solutions to common software design problems. Use as vocabulary, not as checklist.
1191 words
Performance
Performance Engineering
A structured, repeatable approach to meeting performance objectives throughout the software lifecycle.
1508 words
Security
Secure Coding Practices
Based on OWASP Secure Coding Practices, Top 10 Proactive Controls, and Developer Guide.
1337 words
Supply Chain Security
Securing the software supply chain from source to production.
1213 words
Testing
Test Pyramid & Testing Strategies
A strategic model for software testing emphasizing an optimized approach across different test levels.
1022 words
Tools
Build Tools
Compilation, bundling, task automation, and build systems for modern development.
1343 words
Developer Tools
IDE, debugging, profiling, and CLI tools for productive development.
1048 words
Package Management
Dependency management, lockfiles, registries, and supply chain security.
1317 words
Developer Tools
Tooling categories and recommendations for modern software development workflows.
575 words
Static Analysis
Linting, type checking, and static application security testing (SAST) for code quality and security.
1510 words