Posts

Showing posts from March, 2020

Software Craftsmanship

As the definition for craftsman says it is “ a person who is skilled in a particular craft ”. People tend to think of other professions when someone mentions craftmanship, maybe an artisan, but very rarely they think about a software programmer. So, it’s fair to say that writing code is a very particular craft that needs highly skilled people. You also need a particular training and a particular set of tools to do it. But even in writing code, there are certain levels of quality, which make the real difference between well-made software and crappy software. As Bob Martin said on the podcast, back in 2009, lots of systems are in a state of disrepair, and in my opinion, lots of the current systems within companies and organizations are in the same state. Some systems were developed years ago, modified through the years making it harder and harder to maintain. It’s true that sometimes programmers don´t even want to change a module because the system can fail,

Hidden Figures

Back in 1961, when the USSR and the United States were in the middle of the Cold War, the Space Race was a competition (if you want to call it that) to achieve firsts in spaceflight capabilities. Both nations were trying to send rockets into space, to put satellites, people in orbit around the earth and even with the objective to put men in the moon. NASA was created 3 years before in 1958 and both countries needed the best minds available to do groundbreaking work that had never been done before. Some states in the US still segregated black people in schools, work, health services, libraries, bathrooms, transportation, among others. So, what were the odds that 3 black women would be fundamental in the development of the Space Race at NASA? Actually, pretty low, but that didn’t stop Katherine Johnson, Dorothy Vaughn and Mary Jackson, who worked at the colored computer division at NASA, making calculations for the Space Program. Hidden Figures is the movie, based on the story of

Is Design Dead?

In this long article by Martin Fowler, he talks about software design and its applicability. This article was written in 2000, with its final revision on 2004. Still, the concepts he talks about are still applicable up until this day. He talks about the main styles of software design, which are planned and evolutionary. As he states, the main problem with planned design is that is really difficult to foresee the changing requirements of a system as it keeps growing and evolving. So that can become a problem, as sometimes the issues that come up can become more difficult to handle on the original design approach. On evolutionary design, the design keeps changing as the project is developing and becomes part of the programming processes. The issue is that it becomes messy and hard to track down the in the long term, making the code harder to maintain and more prone to bugs. When Fowler talks about how design applies to Extreme Programming (XP), he also sa

Who needs an architect?

It’s hard to have people agree on any subject, and this could be talking about politics, religion but also software design. Even in the software community people can’t agree the definition of a software architect, let alone if they are actually necessary or useful for a project. In this article by Martin Fowler, he talks about this, he actually tries to define both, the concept of architecture and also the software architect. He defines software architecture as a shared understanding the expert developers working on a project of the system design. So, this means that the architecture of a system depends on the vision and involvement of the developers, to fully understand how a system should work. But it’s also telling us that it needs consensual agreement by the group, which sometimes can be hard to reach, especially when the system become too large or too complex. But as the author also says, everything depends on what the developers thinks is importan