Intentional Code - Minimalism in a World of Dogmatic Design - David Whitney - NDC Porto 2023
Interesting. speech David Whitney, head of architecture at New Day, on the theme of software design and design, in which fun illustrations and interesting ideas that can be summarized until the next
- Design templates (design patterns)The boom of which began with a book.Design Patternsfrom a gang of four (Gang of Four). Specifically in this book, the templates were broken down into categories of creational, structural, behavioral, and each template described a typical solution to a standard problem that the authors often encountered. But this was not a call to standardize everything. Rather, it was a common language and set of programming idioms that could be useful. The topic of design patterns in IT was greatly influenced by the book Christopher AlexanderHe is a true architect from construction, not from IT, who wrote the landmark books Notes on the Synthesis of Form.A Pattern Language: Towns, Buildings, Construction" (I'm on my shelf waiting for my time.)
- Types of architecture: hexagonal architecture (port& adapters), clean architecture, 12 factor app. The author discusses these approaches, and then says that in the development of software there are not only templates and types of architectures.
- David remembers Knuth's book.Literate programming" ("Literate programming")where the program is actually written in a natural language, and the instructions are included in it in the form of macro substitutions and code in programming languages. This concept was proposed by Knut in 1981 It was used in the creation of TeX. This concept emphasizes the importance of the form, flow and rhythm of code, as well as its meaning and purpose of existence. The code should be written with respect to the reader:) Software complexity – many programs are overly complex because they don’t form the right abstractions for readers and it’s easy for them to get lost in infrastructure and code organization. The author puts forward such a thesis
The complexity of your app should be at most as complex as the problem space it inhabits, and no greater These approaches to complexity management should be used when designing your application and designing quality APIs.
- The author remembers "Clean Code." ("Clean code") Uncle Bob says that many years ago it was a useful and breakthrough book, but since then it is outdated and dogmatic approach of Robert Martin, which fixes the number of lines in a function. To be honest, I agree with this assessment of Robert Martin’s books:) Next, the author recalls the cool book “A philosophy of software design” by John Osterhuth and then goes on the concepts from it. It's a cool book that we stripper This is the Code of Architecture Club and I highly recommend reading it. Here are the concepts from this book the author highlights. The complexity of software can have a cumulative effect - small concessions that we go to when writing code lead to a large tech debt Shallow and deep modules – if we use abstractions, they should be deep and hide complexity, not superficial, which do not help with it. Software development is a compromise that depends on the context. Design software so that it is ready for changes in the future
In principle, there are still many clever thoughts in the talk, so I recommend watching it in the original:)
#Software #Architect #SystemDesign #Philosophy #SoftwareArchitecture #Patterns