Lie 3: Software Is the Platform

Truth: hardware is the platform “Software does not run in a magic fairy aether powered by the fevered dreams of CS PhDs” – Mike Acton (2014 - CppCon) Instruction sets: Different hardware architectures have different instruction sets, which are the set of basic operations that the processor is capable of performing. For example, an x86 processor has a different instruction set than an ARM processor, so code that is written to run on an x86 processor may not be compatible with an ARM processor without modification. [Read More]

Lie 2: Code Should Be Designed Around a Model of the World

“Solving problems you probably don’t have creates problems you definitely do.” – Mike Acton (2014 - CppCon) Truth: Code should be designed around the data, not some idealized model. World modeling is a common approach in programming that involves trying to solve problems by drawing analogies or telling stories, rather than using more concrete, engineering-based methods. While this approach may seem appealing at first, it often leads to problems that are harder to understand and maintain in the long run. [Read More]

Lie 1: Code Is More Important Than Data

“Everything is a data problem. including usability, maintenance, debug-ability, everything.” – Mike Acton (2014 - cppCon) Truth: Your main responsibility is to transform data, not designing code, solve the data transformation xproblem and nothing else. As a programmer,it is your main responsibility to transform data effectively and efficiently. This involves not only designing code, but also understanding the problem at hand and the context in which the data exists. Keep in mind that the purpose of all programs and their components is to transform data from one form to another, and that the code is simply a tool to achieve this goal. [Read More]

The 3 Big Lies Introduction

The Lies Code is more important than data. Code should be designed around a model of the world. Software is a platform. Data-Oriented Design (DOD) is a software development approach that focuses on optimizing data structures and algorithms for performance, rather than abstractions or code size. In a 2014 talk at CppCon, Mike Acton identified “three big lies” that can lead to suboptimal design decisions: the assumption that abstractions are free, the belief that memory is always slow, and the idea that smaller is always better. [Read More]