
Have you ever heard about the Impostor Syndrome? In our context, it’s basically when you thing that you are a fraud and you feel that you are not prepared to face a real problem. Especially, when the problem is big, you may think that the preparation from college was not enough. If you have some programming experience you can develop small systems as part of school projects, but then you realize that the software with which you interact all time is not that small. You may think that you are not prepared to be part of a big projects.
Well, this chapter focuses on that (in a certain way) and warns you about some key points that may help you to get things done. In a nutshell: you need to see the big picture and then apply the Divide and Conquer strategy. Let’s dig a little into the topic
You may see the «divide and conquer» as a philosophical mantra for problem solving (and that is exactly what it is), the issue here is that maybe you have never taken it seriously. Using this approach, you solve big problems in the same way you solve small problems, but first you need to separate the problem into smaller pieces.
Translating it to the software world, the first step is to see the big picture. How can we do it? According to the book, the first step is to do a «domain analysis», which consists in analyze the parts in the system that are similar to other systems (aka commonality) and those that are different (aka variability). In the domain analysis is important to describe the problem in a way that the customer can understand.
A cool way to express the fundamental things your program must do is to put it in a case diagram. At first it may seem weird to draw stick figures but once you do some of them you realize that they are pretty cool.
Once you can see the big picture you can separate the problem into feature, and every feature into different requirements, and then you can apply the OO principles and design patterns that we have covered previously.
An extra topic that was covered in the chapter was the MVC pattern. It stands for Model-View-Controller, and it is a common approach nowadays, especially when you separate an application into frontend and backend. Actually, it can be applied to a large number of cases and have become a standard in software development. What you do is to separate the system into the logical part, the visible part and the communication between them.
I found the following video related to the MVC pattern and I think it’s worth seeing:
References:
Head First Object-Oriented Analysis and Design: A Brain Friendly Guide to OOA&D. A McLaughlin, B, A Pollice, G, A West, D. 2007. O’Reilly Media, Incorporated.

