Software Engineering 101
A comprehensive guide to software engineering fundamentals using Python as the primary language. This series covers essential practices, principles, and tools that every developer should master to write professional, maintainable code.
Series Overview
Through my experience building production systems and mentoring developers, I've learned that knowing a programming language is just the beginning. The difference between writing code and engineering software lies in the practices, principles, and discipline we apply to our work.
This series distills the core software engineering concepts I wish I had learned earlier in my career, presented with practical Python examples you can immediately apply to your projects.
Learning Path
Articles in This Series
Phase 1: Foundation (Articles 1-3)
1
Git fundamentals, branching strategies, commit best practices, and collaborative workflows
2
Python tooling, virtual environments, IDE configuration, and project structure
Phase 2: Design & Structure (Articles 4-5)
Phase 3: Quality Assurance (Articles 6-8)
Phase 4: Professional Practices (Articles 9-12)
Prerequisites
Basic Python programming knowledge
Command line familiarity
A code editor (VS Code recommended)
Git installed on your system
What You'll Learn
By completing this series, you'll be able to:
Collaborate effectively using Git and modern version control workflows
Set up professional development environments with proper tooling
Write clean, readable code that follows industry best practices
Apply SOLID principles to design maintainable software
Test your code thoroughly with pytest and modern testing strategies
Document your projects clearly and effectively
Handle errors gracefully with proper logging and debugging
Automate quality checks with CI/CD pipelines
Conduct meaningful code reviews that improve team code quality
Prepare applications for production with containers and monitoring
Technology Stack
Throughout this series, we'll use:
Python 3.11+
Primary programming language
Git
Version control
pytest
Testing framework
Ruff
Fast Python linter
Black
Code formatter
mypy
Static type checker
GitHub Actions
CI/CD platform
Docker
Containerization
VS Code
Recommended IDE
Related Series
This series focuses on software engineering fundamentals. For deeper dives into specific areas, see:
Database 101 - Data layer patterns, SQL, and database design
Kubernetes 101 - Container orchestration and deployment
CI/CD Pipeline - Advanced pipeline patterns
How to Use This Series
Sequential Learning: Articles build on each other - start from Article 1
Hands-On Practice: Each article includes exercises - do them!
Reference Guide: Use individual articles as quick references later
Project Application: Apply concepts to a real project alongside reading
Sample Project
Throughout this series, we'll build a Task Management CLI application that demonstrates all concepts:
This project is intentionally simple but comprehensive enough to demonstrate professional practices.
Ready to begin? Start with Article 1: Version Control with Git
This series is part of my ongoing effort to document practical software engineering knowledge. For questions or feedback, feel free to open an issue in the repository.
Last updated