Here I share contemplations on data-oriented design, team leadership, agile methodologies, and assorted subjects occupying my thoughts.

Disclaimer: The views and opinions expressed are solely my own and do not reflect or represent the positions of any companies I work for, collaborate with, invest in, advise, or any other associated entities.

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]

Bring Your Spears

As a business leader, it is important to have a clear understanding of the level of support and commitment among your team members. One effective way to gauge this is through the military technique of asking for spears after a presentation. This technique involves giving a presentation on a particular topic or plan, and then asking for volunteers to “step forward with their spears,” meaning to show their willingness to actively support and participate in the plan. [Read More]

Remote Work Is Here to Stay

Remote work is here to stay for developers, but we can do better. Despite the many arguments against remote work, it is clear that it is an increasingly popular option for developers. However, there are still valid concerns that need to be addressed in order to make remote work more effective and efficient. One of the main arguments against remote work is the lack of supervision. While it is true that day to day supervision is limited and stifling, the output of a developer is still measurable and transparent. [Read More]

Microservices Done Wrong

Microservices are not inherently evil. My two cents is that people often use them on small projects because of fashion and not necessity. Monolith First at the very least, and find out how far you can get with Cookie Cutter Deploys before you reach for them. That said, you probably have decided (or a manager did for you) that you are going to use microservices to build the next great thing. [Read More]

Mistakes, Failures and Progress

The last few weeks of work have been an embarrassing cavalcade of mistakes. The majority of this project was well worn territory for me, with a few new problems sprinkled in. With new unique problems you have to dive in and start someone, every starting point I picked ended up being a black hole of misery and wasted time. We have since recovered, but the experience reminded me of a few brilliant TED talks about exactly these topics…

[Read More]