
Discover how a software architect adds value beyond a talented dev team through practical, experience-based guidance, real-world examples, and essential soft skills plus a reusable architecture document.
Target developers with at least three years of backend experience and a programming background in any language. Cover advanced software principles and backend concerns like performance, security, and caching.
Explore three reasons to become a software architect: a truly engaging, diverse role. Earn visibility with CXOs, consider the money, and apply business, technology, methodology, soft skills, and moral leadership.
Define the software architect role and types, and adopt a business mindset to guide the architecture process, non-functional requirements, technology stack, and components.
Explore the roles and interactions of infrastructure architect, software architect, and enterprise architect, detailing how each designs infrastructure, software architecture, and IT enablement for business continuity.
The software architect designs systems to be fast, secure, reliable, and easy to maintain, selecting optimal technology, platforms, and patterns to meet requirements at the macro level.
Position the software architect within the organization chart to define responsibilities and avoid managerial duties; examine project-level and enterprise-level roles with guidance, patterns, and ongoing support.
Advocate coding skills for architects to test technologies, build POCs, and evaluate NoSQL versus RDBMS. Show how hands-on coding supports developers, ensures trustworthy architectures, and earns respect.
Learn that no specific degree is required to become a software architect, though computer science helps. Note that TOGAF relates to enterprise architecture, not software architecture, so experience matters.
Explore career paths to software architect, emphasizing experience and common transitions from developer to architect through team leader, development manager, or CTO roles.
Explore the architect's mindset and learn to move beyond a development-focused view, adapting your perspective to make strategic decisions that benefit the organization.
Adopt a mindset shift to deeply understand the client’s business—its strengths, weaknesses, competitors, and growth strategy—before shaping architecture and integrating systems within the living organization.
Identify the system's goals, distinguish them from requirements, and assess the organization's bottom line and operating environment to guide architecture toward the big picture.
Frame every architectural decision around the end user—the client's client—prioritizing their comfort and using clear messaging or a caching layer when the database is offline.
Adapt your language to stakeholders—emphasize project success for project manager, speak technically with the team leader, and highlight business continuity and high loads during Black Friday sales to the CEO.
Follow a well-defined architecture process to deliver fast, secure, reliable, and maintainable systems by understanding requirements, including non-functional requirements, mapping components, choosing a technology stack, and producing an architecture document.
Understand the system's requirements and goals to drive architecture, defining what the system should do, such as enabling end users to view telemetry data, workflows, and user interface elements.
Define and articulate non-functional requirements to guide software architecture, prioritizing them over regular requirements, and address concurrency, heavy loads, data volumes, and performance.
Map components to reveal the system's moving parts, including functional and non-functional tasks. Use the component map to understand the system and communicate coverage to the client, keeping it non-technical.
Collaborate with the development team to decide the platform, selecting backend, frontend, and data store technologies, possibly multiple backends and data stores, to form a rational stack and avoid failure.
Design the architecture that glues requirements, components, and the technology stack into a fast, secure, reliable, and maintainable system built on loose coupling, stateless, scaling, caching, and messaging.
Create an architecture document that captures the full system story, clarifies structure and content for executives, managers, and developers, and maximizes its value across the organization.
support the team through architecture's evolving dilemmas, arguments, and talks, ensuring developers follow the architecture and preventing documents from becoming a paperweight in production.
Collaborate with developers during the architecture design to surface scenarios early, adapt to variations, define non-functional requirements with clients and analysts, and turn the architecture into ambassadors for the project.
Explore how requirements form software systems, how two kinds of requirements fit the architect's work, and how user needs become specs with examples like filters and audio tuning.
Explore the difference between functional and non-functional requirements, with examples like login, data services, and UI versus performance, load, and SLA considerations for scalable architecture.
Balance functional and non-functional requirements to guide architectural decisions that improve the business bottom line. Ensure you thoroughly understand what the system should do before addressing non-functional needs.
Define non-functional requirements and outline five core areas—performance, load, data volume, concurrent users, and SLA—explaining latency, throughput, peak loads, and how to set numbers with a client or analyst.
Clarify who defines non-functional requirements, frame boundaries with the client and analyst, and set realistic service level targets, API response times, and concurrent-user goals backed by real numbers.
Guide the client to define non-functional requirements such as performance, SLA, load, and users. Ensure the architecture rests on functional requirements to avoid production failures.
Determine the application type for a system by analyzing requirements and functional versus nonfunctional needs, then compare pros and cons of web app, web api, mobile, console, service, and desktop.
Explore web apps as the dominant application type, driven by a request-response model between a web server and browser, using HTML, CSS, and JavaScript to power user interfaces.
Explore web api concepts, including json data, rest api, and client–server interactions using url parameters and http verbs for data retrieval in a request–response model.
Explore how mobile apps run on smartphones, connect with web APIs, and leverage GPS to deliver interactive experiences for games, social apps, and news content.
Explore console applications that run in the command line, display only text, and require technical knowledge, triggered by typing commands with parameters for long-running or focused tasks.
Explain how services differ from console apps by lacking a user interface and being managed by a service manager that starts, stops, and monitors long running tasks using configuration files.
Understand desktop applications as self-contained software running on the local PC with offline capability and robust user interfaces. Distinguish them from web-based rich clients that use cloud APIs.
Explore how the cloud era offers application types, including function as a service with AWS Lambda or Azure Functions, enabling short code with no servers, while systems mix multiple types.
Explore how to select a technology stack for a system, weighing irreversible decisions, team skills, and schedule impact, while comparing front end, back end, and data store options.
Evaluate a technology stack by its ability to perform requirements, support cross-platform deployment, and suit web UI needs. Assess community activity on Stack Overflow and popularity with Google Trends.
The lecture compares the main backend platforms—.NET classic, .NET core, Java, Node.js, PHP, and Python—highlighting their pros and cons to guide platform selection for web apps and web APIs.
Learn how front end defines the user interface across web, mobile, and desktop apps, with HTML, JavaScript, CSS, and frameworks like Angular and React.
Compare SQL and NoSQL data store technologies to determine when to use relational databases with ACID transactions and SQL queries, or NoSQL's schema-less, scalable options.
Navigate the technology stack selection across backend, frontend, and data store with principles and concrete evaluation parameters to ensure rational, system-appropriate choices.
Explore the -ilities, mapping non-functional requirements to quality attributes and architecture, and learn how scalability, manageability, modularity, extensibility, and testability shape software design.
Evaluate scalability by adding resources without interruption to the application’s activity, compare scale up versus scale out, and prefer scale out with a load balancer for redundancy and infinite growth.
Learn how to build a manageable application that self-monitors, reports health and load issues to a management console, and triggers automated or human actions to maintain performance.
Examine how modularity builds small, well-defined building blocks and encapsulates API access in independent components to enable flexible, maintainable systems and short deployment cycles.
Explore extensibility, a design approach that adds new formats without modifying existing code by using plugin frameworks, dependency injection, and a factory returning IFormatter implementations.
Understand how testability enables unit and integration testing by keeping methods independent and focused. Learn to use dependency injection and the single responsibility concept to improve testability.
Explore the ilities, a family of quality attributes tied to non-functional requirements, and review five common ones—scalability, manageability, modularity, extensibility, and testability, for future system design.
Design the architecture of software components, defining a component as code running in a single process, and show how inner components interact to enable scalable, reliable, and maintainable distributed systems.
Explore the layered software architecture, detailing UI, service interfaces, business logic, and data access layer (DAL) to explain modular design, dependency injection, and robust exception handling.
Explore how interfaces declare method signatures as contracts to enable loose coupling, and how dependency injection via a get instance method keeps code modular and maintainable.
Learn how dependency injection decouples code by injecting an interface implementation. See how factory and constructor injection improve modularity and testability.
Master the solid principles of software design, including single responsibility principle, open/closed principle, Liskov substitution principle, interface segregation principle, and dependency inversion principle. Boost maintainability and flexibility.
Adopt a naming convention to make code readable across classes, methods, variables, and constants. Explore CamelCase, underscore styles, and Hungarian notation, naming classes as nouns and methods as imperative verbs.
Master targeted exception handling by catching specific exceptions such as SQLException, avoiding empty logs, and placing try...catch around the smallest code fragments or using a central mechanism.
Design robust logging to track errors and gather data, capturing full error messages, stack traces, inner details, and user data, then analyze performance and user flows with Kibana.
Explore architectural principles and best practices for software components, building blocks you will reuse, and how distributed application patterns complement your component-level knowledge.
Discover design patterns as reusable solutions to common software design problems, and learn how factory, repository, facade, and command patterns enhance architecture, reliability, and maintainability.
Discover the factory pattern, which creates objects via a factory method to return an IWeatherProvider implementation and avoid tight coupling when fetching weather.
The repository pattern provides an abstraction layer above the datastore, exposing an interface with methods such as get an employee by id, get employees by department, update, create, and delete.
The facade pattern hides complex actions behind a simple transfer money method, packaging validation, funds check, withdrawal, deposit, and logging into an easy-to-use method.
The command pattern encapsulates actions and their parameters into command objects, enabling a flexible undo mechanism where an invoker executes pre-defined commands without knowing their details.
Explore four fundamental design patterns: factory, repository, facade, and command, and learn how applying them judiciously enhances consistency, flexibility, readability, and maintainability in software architecture.
Congratulations! You're going to be a Software Architect!
Becoming a Software Architect is the holy grail for almost all developers.
Great salary, working with management, dealing with the up-to-date technologies and patterns, working with variety of projects and teams - all these make the Software Architect one of the most desired positions in the software industry.
But becoming a Software Architect is not easy. There is no academic course for that, and no formal training.
You might assume that being a great developer is enough to become a great Software Architect - but that's not the case.
A great Software Architect employs a mix of great technical skills, the ability to take a high-level look, and great interpersonal skills.
You may find other courses that will teach you programming skills, project management skills and even software design skills. But no course covers all the bases as this one.
Here is what we will discuss in this comprehensive, 115 lectures length, course:
- What is a Software Architect and why you want to become one
- What are the steps you should take in the Architecture Process
- What are System Requirements and why they are so important for the architecture
- A proven, tested way of selecting the technology stack
- How to design the system's components architecture
- What are design patterns and why does it matter
- How to design the overall system architecture
- What is architecture document and why it's so important
- Super important soft skills every architect should possess
- Some advanced architecture patterns you should keep in mind
- And lots more...
But wait, that's not all!
One of the cornerstones of the architect's work is the architecture document. This document contains all the information regarding the architecture designed by the architect, including requirements, technology stack. component's architecture, system architecture and lots more.
Creating the architecture document is a daunting task, that can take months of hard work.
But if you take this course - your life will be much easier!
Towards the end of this course, we'll work together on a real-world case study, one that stems from other projects I've worked on. After discussing the case study, and designing its architecture, you'll have an opportunity to download a real-world, full blown architecture document, complete with all the information related to the case study. In fact, this is an industry-grade document, which I used in dozens of systems I've worked on.
And the best part? It's yours to use! Feel free to take this document, modify the parts that are relevant to your project, and submit it to your client!
Again - you're going to give your client a professional looking, modern, methodical document that covers all the bases, and makes a great impression.
No other course provides such a document, and that's because I'm fully confident in the document's contribution to your work and reputation, as I used it extensively in the past years.
------------------------------------------------------------
What do my students have to say about the course?
------------------------------------------------------------
"well done - The course was very practical" - Sam
"Good explanation on the topics covered, "Soft Skills" section is a great addition of topics" - Sergio
"[The course] given me the confidence to go out to the market and advertise myself as such [an Architect]" - Mathew
And lots more...
------------------------------------------------------------
Who is this course for?
------------------------------------------------------------
Actually, any person who is involved in software development, even system analyst, can profit from this course.
However, the best candidate for this course is a developer with some experience, preferably 2 years. This experience will help mainly in understanding the terminology used in this course.
If you're not sure if this course is for you - drop me a note!
------------------------------------------------------------
About Me
------------------------------------------------------------
I've been a Software Architect for more than 17 years, working with a variety of clients - Fortune 100 enterprises, start-ups, govt. entities, defense, telco, banking, and lots more.
I'm an avid speaker and trainer, having trained thousands of students in various courses in the past.
I love what I do, and my greatest passion (well, besides my family...) is designing modern, practical, and reliable systems for my clients.