As in previous blogs, I will encourage you to hear a song while reading this, as I write this entries I hear music to get my inspiration flowing, so this week's song will be "The Architect" by "O.A.R", and I find it very bold how it the intro mixes a rock guitar intro with some caribbean-like trumpets, I hope you like it.
So, what is software architecture?
I found it hard the first time I heard the term to believe it, I couldn't quite understand how software would relate to architecture in any way, I remember it was my first week at work and we had a meeting to discuss some projects, I was talking with other programmers when this guy appeared in a suit and everyone just shup up and stood there, waiting for him to say something, he started talking about some very obscure things about Java and how he thought it was important for us to know, after that the meeting went pretty casual. After the meeting my friends told me about this god-like figure around the company, "The architect" was his official name around the office, he was in every project, and in none, it was very misterious to me what he did in the office, but everyone respected him, and so did I (monkey see, monkey do was one of the most useful things I learned at my first weeks on the job).
Then one day, a new project popped out, and some programmers (including myself) were asked to attend to a meeting to discuss the project development and architecture (then things strarted to become clearer). We were working on the project design and the architect just stood there in front of the whiteboard thinking, then all of a sudden, he crossed some modules we have drawn on the whiteboard and started talking about how we could skip some of them by integrating them to other modules (and some other obscure things I don't remember), and then it happened, he had simplified our original design to just five modules that contained the logic behind the whole project. He explained us how it would work and everything made sense, I had finally understood why he was the architect and what did he do that was so valuable, his sense of programming was pure, elegant, and practical.
The chapter talks about sofware architecture and how it is useful to design the project before getting to programming to avoid some nasty things during development, basically, the role of the architect is to design a software solution the most efficient, simple, way. So the project goes on with minimal setbacks, getting the most out of every trade-off.
From no-design code to client-server architectures, layered architectures or modular architectures, the architect is the one who sees everything as an ecuation that has to be balanced (with the regular programmer being the one who messes things up and becomes the oracle to restore order to our chaotic world, bringing peace between humans and machines with a great sacrifice from the one).
Silly references aside, software design is much like designing a building (thus the comparison between software architects and traditional architects, you have to design a nifty, flexible, solid structure that has the capability to hold things up, otherwise the whole project may fall grotesquely.
This is everything for now, stay tuned.
Wololo.