Superman’s Software Engineer Guide from Zero to Hero (3/5): Bachelor of Science, Be familiar with Software Design and Software Architecture
It is a comprehensive guide to be familiar with Software Design and Software Architecture, covering all the necessary knowledge for software engineers to become familiar with these concepts. It is necessary for career growth.
During his Bachelor of Science studies, Superman delved deep into the mysteries of science and technology, learning all sorts of nerdy things that would make Sheldon from The Big Bang Theory jealous. Armed with this newfound knowledge and a sharp intellect, he was ready to take on the world as a pro software engineer. Plus, he finally figured out how to calculate the trajectory of his punches to make them extra powerful!
Note that you can stop reading at any time as per our rule. The lists are sorted from general to specific, so you’ll gain some strong comprehension even if you stop at any point.
Primary curriculum: Software design and architecture
In this area we will understand modern Software design and architecture:
- Firstly, let’s understand the difference between Software Design and Architecture, just for the right mindset when you read these words
- Understand the basics of Software Design and Architecture (20–30 mins)
- Basic Software Architecture Concepts and more detailed Software Architecture concepts explanation in Blueprint
- My outlook on modern Software Architecture and architecture styles (only in Russian) — different styles of modern architectures, storage and messaging technologies, Service Mesh; microservice application design, domain-driven development; cloud-native, reactive, service mesh; deployment technologies — Kubernetes, Helm; data mesh; hundreds of different architectures of modern applications (for different purposes); CI / CD, DevOps, and SRE
— Concept of microservices in a simple way - Software design patterns and principles, area “Patterns and design principles” in Software Architect roadmap
- Excellent deep overview of software design and software construction — Code Complete: A Practical Handbook of Software Construction 2nd Edition by Steve McConnell (in rus)
— Fast track of this book — only Chapter 35 “Themes in Software Craftsmanship”. Note: it is not a full abstract of this book. - A most excellent book to do a right Software Design — A Philosophy of Software Design by John Ousterhout
- The modern approach to Software Architecture — Fundamentals of Software Architecture by Mark Richards, Neal Ford (conspectus in rus)
- How to practice Software Architecture in reality — Building Evolutionary Architectures by Neal Ford, Rebecca Parsons, Patrick Kua, Pramod Sadalage (1st edition in rus)
- Difficult aspects of Software Architecture — Software Architecture: The Hard Parts by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani (Russian language conspectus)
P.S. While there are many more in-depth aspects of software design and architecture to explore, we believe this list provides a solid foundation before diving into more advanced sources when you begin working. We will cover these advanced topics later in this article.
Additional courses: Check everything else about software design and architecture
If you want a more in-depth overview of software design and architecture, you may find the following resources helpful:
- Overview of Software Design and Architecture
- A classic book about architecture history and design of solid modules Clean Architecture: A Craftsman’s Guide to Software Structure and Design by Robert C. Martin (in rus)
Additional sources
This section outlines the sources of information used to create this article, which were not explicitly referenced within it.
This article is one in our article series. Select the article that captures your interest and join us on an exciting journey together.
- Flash’s learning path at the speed of light: only one best simple source for Software engineer
- Superman’s lifelong learning journey
— Childhood: Computer Science and Object-oriented programming basics
— School: The Proper Approach to Engage in Software Engineering
— (current article) Bachelor of Science: Sufficient Understanding of Software Design and Architecture
— Superman’s On-the-Job Learning: From Entry-level to Successful Middle
— Superman’s Master’s Degree and Rise to the Stars: From a Middle to a Senior Engineer, Software Architect, or Team Leader