Skip to main content

Software Architecture

 This week, we read a chapter of Pete Goodliffe's Code Craft: The Practice of Writing Excellent Code. The chapter, just like this course, focused only on the importance and different types of architecture. After this reading and after having completed the first Ruby activity, I think I finally have a good idea of what to expect throughout the semester. 

Throughout our degree, we have always been told how important it is to design before we start coding, so that we have a "guide" and to get an idea of the workload or work distribution from the beginning. However, so far, it hasn't been taught to us in this way; we would think about the code, abstract it into a higher level, and define our design based on what we thought would be easier to do. 

However, I now see that the correct way to do it is the other way around. Think of what you want your software to accomplish, figure out its scale and any other relevant details, pick a style that fits your project's needs, and then and only then, start thinking about what you can do code-wise to achieve those goals. 

Having said that, I also understand that it's easier said than done and I understand why it hasn't been taught with too much detail so far. In order to know what style better fits your project, you need to have a good understanding of a broad variety of them, and it becomes easier once you have experience working with the different styles. 

For example, today, I most likely wouldn't be able to pick the optimal style for a certain project, but I trust that people with more, and different, experience than me will be able to come up with a good solution for whatever I'm working on, and I'm sure that one day, I'll be able to do the same. 

Comments

Popular posts from this blog

Is Design Dead?

 This week, we had to read Is Design Dead? by Martin Fowler. Just by reading the title, the thought of agile methodologies popped into my head, since they do involve design, just not as much as we're accustomed to. And not too surprisingly, Fowler reached a similar conclusion: design is NOT dead, it has just evolved along with us to keep up with today's standards.  Before, design was used to make sure that you knew everything you needed to get done, and it let you find any flaws in your plan beforehand. It was meant as an all-encapsulating process that all future code will be based on. Today, it has maintained its role as a guide, as to not make the developer feel totally lost, but with today's fast-paced work environment and ever-changing requirements, with the help of methodologies such as Extreme Programming, it has evolved to become more dynamic and easier to change.  For my personal opinion, I've had experiences (both academic and professional) where a bit of desig...

Why is an architect?

  This week's (very short) article, Who Needs an Architect?, Martin Fowler explains to us the different definitions of architects that exist in the software world. The first and most common definition, which Fowler disagrees with, says that an architect is (s)he who helps identify what the most important parts of a project are, in order to give it structure. However, it is also mentioned that these parts are usually the most important because they are the hardest to change, so an architect's job should also include reducing the amount of these parts. Following the logic, by this definition, an architect's job is to reduce the amount of architecture.  The second proposed definition, which I also think I agree with, is that an architect's role is more like a guide's. His purpose is to help the team become better by using his expertise, and communicating with as much of the team as possible in order to remove their blocks. I think the word architect  still fulfills thi...

Man on the Moon

The third episode of Moon Machines, titled  Navigation Computer  tells us all about the process of building the Apollo Guidance Computer. It amazes me the amount of work that goes into a project of this size, and it has always surprised me how many people don't care about space travel, or even the amount of people who, despite seeing all the people involved and all the hard work, still deny the moon landing ever happened.  I also found it really interesting how seemingly unorganized MIT's software team was while working on this project. This isn't meant as a jab at them, but the fact that one of today's most prestigious institutions didn't have a well-defined plan speaks of how much project management and software development in general have evolved in such little time.  However, it's also funny to see how little things have changed in that regard, in the sense that even today, the amount of work that goes into developing software is grossly underestimated (even...