Is Design Dead?



In this post, I will discuss the article: "Is Design Dead?", written by Martin Fowler. In the last entries, we have discussed how important is the design and adoption of techniques and patterns for software development. It seems that what will be discussed in this post will be a bit different.

There are two design styles, the most common (and disastrous) is Evolutionary Design, is the design of the system grows as the system is implemented (code and fix), this style makes it difficult to change the system. On the other hand, we have the Planned Design, here the designers don't need to write code because they aren't building the software, they are designing it, in this way, they avoid entropy by making decisions and carrying out the development of the software.
Although the second style is much better, it still has faults, not designing and coding at the same time, it can introduce complex problems in the programming stage. The other fault, which I found quite interesting, is cultural: the designers do not codify more outdated in technological issues and lose respect for those who code. Human tension! Another flaw: changing requirements, we know that it is complicated to understand the requirements and it is also a flexible design to build an easy system to change. How complicated is the design!

Making changes to a system during a project is more expensive the more advanced it is (change curve), within XP and Evolutionary Design, it is possible to soften this curve by applying techniques such as Testing, Continuous Integration, and Refactoring.

"Do the Simplest Thing that Could Possibly Work" and "You Aren't Going to Need It".There are several reasons why you support these ideas, the first is the economic: why spend on implementing something that you will not use immediately or that might not work? Second, the simple is always easier to understand and modify.


Although the nature of the design has changed, it is not dead: Refactoring is needed to keep the design as simple as you can, is important to have a good knowledge in patterns, when designing it is important to consider possible changes, the communication within the team is key to execute a good project, from the design part to the implementation. 

The needs of software in today's world have changed, it is necessary that the design changes with the needs and evolves with the world. Long live to the design!






Comentarios

Entradas populares de este blog

Software Craftsmanship

Microservices

Who Needs an Architect?