Entradas

Software Craftsmanship

In this blog, I will discuss the podcast titled "Software Craftsmanship" by Robert Martin produced by Software Engineering Radio in the year 2009. There are a lot of interesting topics touched in this podcast. We could summarize the topic of this talk, into the art of being a master of coding. The crafting is code is intangibly related to the learning of many other disciplines. We learn from the masters, or at least we try to learn to what is immediately in our surroundings. But sometimes it is not enough to only learn from our immediate sources of knowledge (school, teachers, etc), sometimes we must reach beyond and seek learning from other sources. This is true in the programming world, specially in the era of internet when we can learn from hundreds of different sources. As a students who is soon going to graduate I’ve thought of what my life is going to be like after college. Maybe I’ll pick a 9 to 5 job, but what am I going to do in my free time? Maybe rest? Wa...

Is Design Dead?

In this blog, I will discuss the article titled "Is Design Dead?" by Martin Fowler (the same author from the last blog) in May 2004. Design is one of those things programmers (or at least hard core programmers) tend to shy away from. We usually like to jump right into the action not taking into consideration the design, not really thinking of the repercussions of not having a good design. We usually just think that things will fall into its right place, and sometimes we se downside of not implementing design later in the project. The article primarily shows this point showcasing Extreme Programming as one of the responsible programming methods for not taking priority to design. Extreme Programming’s approach to design is evolutionary, not planned design. Meaning that the design comes about just as the creation of the system is implemented. Many people can see this as good or bad. You save some time by creating the design around the current implementation, rather than p...

Who Needs an Architect?

In this blog, I will discuss the article "Who Needs an Architect?" by Martin Fowler published in IEEE Software in July 2003. Software architecture, to most, sounds like a very important element when developing a program or a system. I think of it as the column that holds everything in place. Its function is to create a model in which everything can be joined together in a successful way. The decision as of how architecture will be, is often decided early in project, because making a change in the architecture when the project is advanced will cause the developers a lot of headaches. I must say I thought of software architects as a key person when developing things of large scale or even at any scale, and in most cases they are necessary for most kinds of projects. But Martin Fowler taking a stab at this definition made me rethink of what I thought I knew about software architects in general. Software architecture and software building revolves around making decision...

Software Architecture

In this blog, I will discuss the chapter titled "Software Architecture: Laying the foundations of Software Design" from Pete Goodliffe's book "Code Craft: The Practice of Writing Excellent Code". So what is architecture? Or more specifically, what is software architecture? So we all know that architecture is the process of planning, designing and building structures of any kind. So how does this concept translate into software? Well, when building software it is very important to think of how it is going to be built. Because just like a building, software can fail and collapse if its components are not built and designed accordingly. You might be thinking that in order to build the best piece of software (or building) you have to add a lot of things to it so it doesn’t fail, and make a very sophisticated design so everyone admires it. But the truth is, just like it's mentioned in the book, the simpler the better. The simpler it is, the more comprehens...

Moon Machines: The Navigation Computer

In this blog I will discuss the documentary watched in class, titled “Moon Machines: The Navigation Computer” produced by the Science Channel. The documentary is about the computer created for the Apollo missions to the moon. Its not the first time I’ve watched this documentary, but I still find msyelf captivated by the genius of the people behind this project. Nowadays we have computers that are far more powerful (and smaller) than the ones used in Apollo missions. But, for its time, the Apollo computers where state of the art and required a tremendous amount of engineering. The programming done in the computers of the Apollo missions where somewhat “primitive”, since they used cables going through rings to specify if it indicated a “1” or a “0”. Because of this, the programming took a lot of time, and it was really important it didn't have any errors. Nevertheless, they achieved a lot with this method and where successful in every mission. If we compared that type of prog...

Introduction

Hey! My name is Diego and I am currently in the last semester of Computer Systems Engineering. I just recently started working as a (mainly) back-end web developer intern, so I hope this course will help me in understanding more deeply how systems are designed, and in the end to be capable to structure my own systems and create system architectures that are efficient. Also, this will be my first time programming in Ruby so I'm really curious of what it has to offer. When am not busy working or doing school stuff, I like to exercise or do any kind of fun activity. I am currently watching a few TV Shows but my favorite one is Game of Thrones.