Dr Milan Milanoviฤ No X ๐ช๐ต๐ฎ๐ ๐ถ๐ ๐๐ต๐ฒ ๐บ๐ผ๐๐ ๐ถ๐บ๐ฝ๐ผ๐ฟ๐๐ฎ๐ป๐ ๐๐ต๐ถ๐ป๐ด ๐ถ๐ป ๐ฐ๐ผ๐บ๐ฝ๐๐๐ฒ๐ฟ ๐๐ฐ๐ถ๐ฒ๐ป๐ฐ๐ฒ
Dr Milan Milanoviฤ no X: “๐ช๐ต๐ฎ๐ ๐ถ๐ ๐๐ต๐ฒ ๐บ๐ผ๐๐ ๐ถ๐บ๐ฝ๐ผ๐ฟ๐๐ฎ๐ป๐ ๐๐ต๐ถ๐ป๐ด ๐ถ๐ป ๐ฐ๐ผ๐บ๐ฝ๐๐๐ฒ๐ฟ ๐๐ฐ๐ถ๐ฒ๐ป๐ฐ๐ฒ? According to Professor Of Computer Science John Ousterhout from Stanford University, it is a ๐ฝ๐ฟ๐ผ๐ฏ๐น๐ฒ๐บ ๐ฑ๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ผ๐๐ถ๐๐ถ๐ผ๐ป. In his book “๐ ๐ฃ๐ต๐ถ๐น๐ผ๐๐ผ๐ฝ๐ต๐ ๐ผ๐ณโฆ https://t.co/c26yNrRznm" / X #
Excerpt #
Post
Post #
Conversa #
๐ช๐ต๐ฎ๐ ๐ถ๐ ๐๐ต๐ฒ ๐บ๐ผ๐๐ ๐ถ๐บ๐ฝ๐ผ๐ฟ๐๐ฎ๐ป๐ ๐๐ต๐ถ๐ป๐ด ๐ถ๐ป ๐ฐ๐ผ๐บ๐ฝ๐๐๐ฒ๐ฟ ๐๐ฐ๐ถ๐ฒ๐ป๐ฐ๐ฒ? According to Professor Of Computer Science John Ousterhout from Stanford University, it is a ๐ฝ๐ฟ๐ผ๐ฏ๐น๐ฒ๐บ ๐ฑ๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ผ๐๐ถ๐๐ถ๐ผ๐ป. In his book “๐ ๐ฃ๐ต๐ถ๐น๐ผ๐๐ผ๐ฝ๐ต๐ ๐ผ๐ณ ๐ฆ๐ผ๐ณ๐๐๐ฎ๐ฟ๐ฒ ๐๐ฒ๐๐ถ๐ด๐ป” he advocates that good software design means fighting complexity and recommends different strategies. Here are some which I agree with: ๐ญ. ๐๐น๐ฎ๐๐๐ฒ๐ ๐๐ต๐ผ๐๐น๐ฑ ๐ฏ๐ฒ ๐ฑ๐ฒ๐ฒ๐ฝ ๐ฎ๐ป๐ฑ ๐ถ๐ป๐๐ฒ๐ฟ๐ณ๐ฎ๐ฐ๐ฒ๐ ๐๐ถ๐บ๐ฝ๐น๐ฒ The famous David Parnas paper in 1970 (“On the Criteria To Be Used In Decomposing Systems into Modules”) mentions that we need simple interfaces but much functionality inside a method or class. We typically have shallow methods with only one line of code inside. He considers the most significant mistake too small and too shallow of classes. For example, we can see (something he calls classisitis) that we need two to three classes in Java to read a simple file: ๐ต๐๐๐๐ธ๐๐๐๐๐๐๐๐๐๐โ๐ฑ๐๐๐๐๐๐๐๐ธ๐๐๐๐๐๐๐๐๐๐. Bigger modules, generic interfaces, and classes encourage information hiding and reduce complexity. In addition, the author mentions a famous API design antipattern with overexposing internals, which adds to an architecture debt later on. ๐ฎ. ๐ ๐ถ๐ป๐ฑ๐๐ฒ๐ (๐ฆ๐๐ฟ๐ฎ๐๐ฒ๐ด๐ถ๐ฐ ๐๐ ๐๐ฎ๐ฐ๐๐ถ๐ฐ๐ฎ๐น ๐ฝ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด) Most people use a tactical approach, where the goal is to make something work. However, the result is a bad design with a lot of tech complexity, which usually results in spaghetti code. Complexity is not a single line but many lines in a project, which we overlook as a whole. We sometimes also create a feature that we may need (YAGNI). His recommendation is to take a strategic approach where the working code is not the only goal, but the goal should be great design, which simplifies development and minimizes complexity. ๐ฏ. ๐๐ป๐๐ฒ๐๐ ๐๐ผ๐๐ฟ ๐๐ถ๐บ๐ฒ ๐ถ๐ป ๐พ๐๐ฎ๐น๐ถ๐๐ What we usually see with startups is pressure to build products quickly, which can result in a spaghetti code. But good code gives you more advantages. One of those is to hire great people who like to work with high-quality codebases. In addition, we need to make our development 10-20% slower, and you will get it all back in the future (this also reduces tech debt). Code and refactor in small steps. I can’t entirely agree with the usage of ๐ฐ๐ผ๐ฑ๐ฒ ๐ฐ๐ผ๐บ๐บ๐ฒ๐ป๐๐, although the author mentions that we need to use them only for what is not apparent. He also disagrees with the ๐๐๐ฎ๐ด๐ฒ ๐ผ๐ณ ๐ฒ๐ ๐ฐ๐ฒ๐ฝ๐๐ถ๐ผ๐ป๐, where the point is that they are a massive source of complexity. Exceptions are usually reasonable, especially if they are appropriately monitored and logged. #softwaredesign #softwarearchitecture #programming #developers #techworldwithmilan
Traduzir post
[
]( https://twitter.com/milan_milanovic/status/1739559959140958481/photo/1)
[
]( https://twitter.com/artthluiz)
I am a big advocate for point 3 Point 1 remember me the current debate about function and method sizes
I’ve enjoyed this book and recommended to a few good friends. Worth the time to read.
Itโs all about balance and trade-off , i have seen managers and leads destroy very promising products because they were too picky about introducing technical debt.
This is a great book! One of the best I have ever read.
Quality is so so important and good test strategy is
Didnโt he mention you may need not using oop in general;) Or concepts interface and classes goes beyond the oop paradigm?
#
Descubra mais
Originado de todo o X
The acronym ACID in the context of DB transactions stands for Atomicity, Consistency, Isolation, and Durability. This post is going to make each term crystal clear. Atomicity (A) Atomic means something that cannot be broken down. Itโs the same thing that our Physicsโฆ
Mostrar mais
Data Pipelines Overview. The method to download the GIF is available at the end. Data pipelines are a fundamental component of managing and processing data efficiently within modern systems. These pipelines typically encompass 5 predominant phases: Collect, Ingest, Store,โฆ
Mostrar mais