I believe the software industry needs a word to differentiate the design of performant software from the inside (or bottom up) versus the outside (or top down). There is a heavy focus on algorithms and data structures in the software engineering world, which is great if you are designing performant software from the inside out (bottom up). But this will only be performant so long as there is one monolithic structure. As soon as there are competing components (or silos of functionality) that need to integrate together, the integration of the components often becomes a performance bottleneck. And this phenomenon is unavoidable because there is a limit to any human's working memory. Large problems are broken down to smaller problems so that they can be more easily grappled with. But the choice of how things are isolated often can incur a performance gain or loss that is just as significant in magnitude as choosing the right data structures and algorithms. And it is this way because da...
Handwritten notes about computer science, artificial intelligence, and mathematics. Essays about philosophy, psychology, and society.