Next Steps
We Only Scratched The Surface
Each of the topics discussed in class could be talked about for a whole semester, if not more. We only scratched the surface; hence the title Introduction to Software Development and not Software Development Deep Dive.
If you'd like to continue the journey, there are many resources you could use. I'll mention a few in each topic here.
Software Development Process
- Software Engineering at Google: Lessons Learned from Programming Over Time by Titus Winters, Tom Manshreck, and Hyrum Wright
- Code Simplicity: The Fundamentals of Software by Max Kanat-Alexander
- Understanding Software by Max Kanat-Alexander
- A Philosophy of Software Design, 2nd Edition by John Ousterhout
Coding/Testing/Best Practices
- Python Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming by Eric Matthes
- Fluent Python: Clear, Concise, and Effective Programming by Luciano Ramalho
- Effective Python: 90 Specific Ways to Write Better Python by Brett Slatkin
- The Pragmatic Programmer: Your journey to mastery by David Thomas and Andrew Hunt
Version Control/Integrations
- Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development by Jon Loeliger and Prem Ponuthorai
- Atlassian Git Tutorials
Algorithms/Data Stuctures/Performance Analysis
- Grokking Algorithms: An illustrated guide for programmers and other curious people by Aditya Bhargava
- A Common-Sense Guide to Data Structures and Algorithms, Second Edition: Level Up Your Core Programming Skills by Jay Wengrow
- Introduction to Algorithms, fourth edition by CLRS
Building/Containers
- Docker Deep Dive by Nigel Poulton
- Docker: Up & Running: Shipping Reliable Containers in Production by Sean Kane and Karl Matthias
- Docker Documentation
Deployment/Cloud
DevOps/Automation/CICD
- The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations by Gene Kim & Jez Humble
- Learning GitHub Actions: Automation and Integration of CI/CD with GitHub by Brent Laster
- GitHub Actions Documentation
Software Architecture
- Fundamentals of Software Architecture: An Engineering Approach by Mark Richards and Neal Ford
Security
Monitoring
Linux/Unix Command Line
- The Linux Command Line, 2nd Edition: A Complete Introduction by William Shotts
- Efficient Linux at the Command Line by Daniel J. Barrett
Topics We Didn't Discuss This Time
You can find the topics we didn't talk about this semester (including front-end development) on my blog: masoudkarimif.github.io