Module 1: Foundations

02. Course Overview

Let’s see a quick overview of the contents of the course, which is divided into 5 modules:

  1. Foundations
  2. Understanding
  3. Designing
  4. Implemeting
  5. Wrapping Up

Resources

Transcript

[00:03] Alright folks, let’s do a quick overview of the contents of the course.

[00:07] So the course is divided into five modules. Module number one is the foundations module. This is the one that you’re watching right now.

[00:13] And in this module, we’re going to answer a few questions that we should probably start with these questions because they’re pretty basic. Like what is software architecture and what is frontend architecture specifically? They are basic but they are not, they’re definitely not easy to answer. These questions they don’t have a universal answer.

[00:26] There is no universal definition for software architecture and the same for frontend architecture. These are very hard to define, but we’re going to talk about what we mean by architecture for the purpose of this course. So they’ll give you a good idea of, you know, what to expect in the latest modules.

[00:35] Then we’re going to talk about the difference between architecture and design. So these are terms that we sometimes use interchangeably. I think it’s totally fine because there’s a lot of overlap between them, but there is a difference. And we’re going to see why the difference is important.

[00:49] Then we’re going to talk about the frontend architect’s role. This is something that, again, it’s hard to talk about because there’s no universal job description for front end architects. But we’re going to do our best and we’re going to try to see what are some of the most common expectations and responsibilities of someone in this role module due is the other standing module.

[01:12] And here we’re going to first introduce the full stack project. This is the their fictitious web application that we’re going to be building throughout the course that we’re going to use to just cover a lot of the concepts and techniques that we’re going to be talking about.

[01:21] We’re going to see a few ways in which we can visualize the architecture of this project using some some high level diagrams. And then we’re going to talk about a few concepts, a few architectural concepts that are particularly important at this early stages of the project. One, when we’re trying to understand the problem. So these are architectural drivers, architecture requirements and decisions.

[01:40] Now all of these put together, they will they will let us get an understanding of the problem. And the reason this is important and why we dedicate an entire module to talk about this is that we can’t really solve the problem before we understand what it is. As architects, we are not just tasked with solving a problem the right way, but also for making sure the we’re solving the right problem. So this first step, it’s really critical.

[02:01] A imagine number three, we’re going to start to actually design this software or the application that we’re going to be building. And this is going to involve a bunch of different steps. So we’re going to cover a few techniques or strategies that you can use throughout this stage. Not all of the things that we’re going to see here apply at the beginning of a project. A lot of the things are things that you can use even if you’re in the middle of a project or if you’re in maintenance mode. But they’re particularly useful when you’re building something from scratch.

[02:28] So these are things like domain modeling. We’re going to start breaking down the application into different modules. We’re going to see a couple of useful or common diagrams that you might see in the design space, like sequence diagrams and class diagrams. And then we’re going to wrap things up with our design doc, which is the document where we’re going to put everything together and we’re going to describe our architecture in a lot of detail.

[02:51] Module number four is the implementing module. This is where finally we’re going to finally going to get to write some code. I’m going to see some code probably for the first time, I believe. So we’re going to do a simple project setup. We’re going to see how we’re going to translate the architecture into a good folder structure, how we’re going to respect that Data architecture with the folder the structure.

[03:07] We’re going to start breaking down our modules into different components and we’re going to see how we can keep them organized using a simple component hierarchy. We’re also going to write some code. There will be a few exercises where you actually are going to implement a module, so you’ll get your get your hands dirty. We’re going to write a bit of code and we’re going to see how we can implement some guardrails and constraints to protect the architecture as the code base continues to grow.

[03:28] Finally, module five will wrap things up, and we’re just going to share a lot of resources for those of you who want to dive deeper into any of these topics or who maybe want to discover some more advanced techniques to go further in your architectural journey and then we’ll say goodbye. Or or not. Maybe. Well, we’ll see. Maybe this is good bye for now.

[03:41] Remember that this is fundamentals course. So there’s a lot of things that we could cover beyond this. So we’ll chat a little bit about that at the end of the course.

[03:47] And that’s it. That’s the course in a nutshell. We are definitely going to cover a lot of ground, but we’re going to try to go through it pretty quickly. So yeah, I hope you are excited. I am definitely excited and I’ll see you in the next video. We’re going to finally answer the question, what do we mean by software architecture?