Skip to content

{ Category Archives } software-engineering

Technical debt and jury service

We have the idea that in addition to the product development backlogs for our teams, there’s an engineering backlog where technical debt paydown, process/tooling improvements, and other sitewide engineering concerns get recorded. Working on them is done in time that is, by definition, taken away from the product backlogs (because of Sustainable Pace). A colleague […]

Literate Programming with LibreOffice

This post comes in the form of an OpenDocumentFormat document containing a program that can extract programs from ODF documents, including the program contained in this document.

Acne cream

I just want to point out that even the best of us aren’t doing what we expect the makers of acne creams to do. What we actually know about software development, and why we believe it’s true by Greg Wilson.

Working Effectively with Legacy Code

I gave a talk to my team at ARM today on Working Effectively with Legacy Code by Michael Feathers. Here are some notes I made in preparation, which are somewhat related to the talk I gave. This may be the most important book a software developer can read. Why? Because if you don’t, then you’re […]

Full Stack

A full-stack software engineer is someone who is comfortable working at any layer, from code and systems through team members to customers.

The package management paradox

There was no need to build a package management system since CPAN, and yet npm is the best. Wait, what? Every time a new programming language or framework is released, people seem to decide that: It needs its own package manager. Simple algorithms need to be rewritten from scratch in “pure” $language/framework and distributed as […]

Dogmatic paradigmatism

First, you put all of your faith in structured programming, and you got burned. You found it hard to associate the operations in your software with the data upon which they act, and to make sure that the expectations made on the data in one place are satisfied when that data has been modified in […]

Layers of Distraction

A discussion I was involved in over on Facebook reminded me of some other issues I’d already drafted for this blog, so I stuck the two together and here we are. Software systems can often be seen as aggregations of strata, with higher layers making use of the services in the lower layers. You’ll often […]

Joe Armstrong thinks we don’t need modules in software. Instead, all functions should have unique names and be published in a global database.

The reasonable effectiveness of developer tools

In goals upon goals upon goals, I suggested that a fixation on developer tools is misplaced. This is not to say that developer tools are unhelpful, nor that they can’t have a significant impact on our work. Consider the following, over-restricted, definition of what a programmer does: A programmer’s responsibility is to turn a computer […]