The Importance of Systems Analysis and Design for Solving Real World Software Problems
Welcome to our Problem Solving course, where we're going to leverage systems analysis and design in order to take a practical approach at solving complex software problems.
Guide Tasks
  • Read Tutorial
  • Watch Guide Video
Video locked
This video is viewable to users with a Bottega Bootcamp license

Through the years, as I've taught tens of thousands of students, one piece of feedback that I constantly get as students go through a number of tutorials is that they'll learn the syntax, they'll learn how to build an application by following a guided tour - but the feedback I get is that they are aware of what to build but they don't know what to do when they're given a new type of problem. And so that's what I want to do in this course: I want to go beyond the idea of just following along and building something based off of a tutorial, and instead, I want to help you develop a mindset for problem-solving and to take a very analytical approach to build complex systems.

This course is quite a bit different than many of the other ones that you may have gone through. That's because, even though we're going to be learning how to solve complex problems, we're not going to care about the programming language. A very common issue that I've run into with junior developers is: when I'll ask them a question, the very first thing they'll do is try to get on the computer and try to solve it. It's good to have an aggressive approach in trying to do something, but, by taking a step back and analyzing the problem, you can actually build a more complex solution.

The only prerequisite for this course is going to be an understanding of UML - which is the Unified Modeling Language. We're going to do everything from designing Twitter, all the way through building out the entire Uber system. Again, we're not going to care about programming languages. Instead, we're going to look at the system as a whole, because many times what I've seen is a young developer will start a project and then realize once they're halfway in that they should have built it a completely different way. With our approach, we're going to configure the way the data should look before we even touch a line of code. Then we're going to look at how you can leverage behavior-based diagrams to customize and design the experience before you even get into the implementation side of things.

At the beginning of each project in this course, I'm going to lay out what needs to be built. After that, I want you to go and design the systems. Don't go code, because we're not going to get into that. This is all on how you can build a plan for designing and coding up those systems.

After you've gone through and you've built the different types of diagrams that I tasked you with building, then you can watch the solutions to see how I personally would have designed those systems.

If you're curious about why this class is important: problem-solving is one of the most critical components a hiring manager looks for in a new recruit. If you can build a well-architected system, you actually solve the problems first.

Everything we're going to be doing in this course is the type of planning you'll do before you actually start implementing a system. If we spend the time and design the system properly, then it's going to make the actual code implementation much more straightforward.

In the next guide, we're going to do a short overview of what a system is.