The Philosopher Developer

half-sound logic, half-decent code

The house with many rooms
August 26, 2018

Note: this post was published in 60 minutes.

There’s an analogy I’ve used many times to describe Bitbucket, both to my team as well as to outsiders. It works for Bitbucket but I think it works for plenty of other software projects I’ve worked on, and even for everyday life. Anyway, the analogy is this: Bitbucket is like a house with many rooms and only a small staff to maintain it. Some of the rooms are neat and tidy; but given the limited size of the staff, many of the rooms are a total mess.

When you first join the staff that maintains this house, you don’t have much context. You may have seen the house before. Maybe you’ve even been inside it for a social event, in which case you’ve probably seen the dining room, the living room, perhaps a bar area or a study. But you haven’t seen the attic, the cellar, many of the storage closets, etc.

So in your first few weeks, you find yourself discovering some of these rooms you’ve never seen before, and they’re messy and in poor condition...

Read more

Published in 60 minutes
August 08, 2018

I realized something recently: I share my ideas with people every day in 1-1 conversations; but the rate at which I share my thoughts in written form is much slower. Probably 100x slower. That’s not an exaggeration: in the past few years my rate of publishing posts on this blog is less than 2 per year. Meanwhile I have multiple conversations, both at work and outside of work, every day.

You’ve probably heard the expression “The perfect is the enemy of the good.” A big part of the reason for the discrepancy between the value I provide in 1-1 interactions1 vs. written communication is the amount of scrutiny I apply to the things I write versus the things I say. Meanwhile, the value of the information I share in written form is nowhere near 100x as valuable.

I suspect the phenomenon of diminishing returns kicks in very quickly for me with written communication. Most of the value is captured in the first 50% of time invested; the remaining 50% of time invested only improves the final result...

Read more

When the golden rule goes wrong
July 24, 2018

One of my friends from Philadelphia1 once told me about a time he went on a trip—I think it was a bachelor party or something—with mostly guys he didn’t know. Most members of the group were from the midwest or maybe the south2. At first everything was fine, but as the trip went on, he started to feel uneasy. Eventually he realized that it was making him uncomfortable how nice everyone was being to each other.

For my friend and his regular social group, normal behavior was just constantly tearing each other to pieces. They would make fun of each other, mocking just about everything anyone said or did that was remotely genuine, at every opportunity. I’m sure this sounds unpleasant to most people, but for my friend and his group it’s what put everybody at ease. No one was exempt, which meant that no one was singled out.

This is why my friend wasn’t comfortable in this new group of polite strangers. He was suspicious of their kindness and kept bracing for the sarcasm. He had trouble letting...

Read more

Big rocks and small rocks
June 03, 2018

There is a lesson I learned in Sunday school that has stuck with me to this day. I recently became aware of the fact that I idly, almost subconsciously think about this lesson on a regular basis; and I’ve even started referencing it in conversations with colleagues. The basic idea is very simple, but it provides a useful metaphor that can help frame conversations around project management and prioritization.

My teacher brought a big canister into the classroom along with two boxes of rocks. One of the boxes was full of large rocks, about the size of a fist. The other was filled with small pebbles.

“I want to fit all of these rocks into the jar,” he said. “Let’s see what happens if I put the small rocks in first.” The teacher poured the pebbles into the canister, filling it about halfway. He then started placing the larger rocks into the canister, but only a few of them fit before there was no more room.

“Hmm, that didn’t work,” he observed. “Maybe if we put the big rocks in first...

Read more

Working on Bitbucket is awesome
December 02, 2017

I’m writing this for a couple of reasons. For starters, I don’t think I talk about this often enough with my own team. We are typically so focused on our day-to-day work that it can be all too easy to lose sight of just what a special opportunity we all have.

More generally: maybe it’s just me, but it seems there’s a lot of negativity in the software world. For some reason many in our profession actually seem to hate what they do, which is hard for me to relate to. I’d like to see more articles by people who love their jobs, especially those of us lucky enough to work at great companies, on terrific products, with incredible teams.

So basically this is me making a conscious effort to put some positivity out there, in a space where I feel a lot more positivity is warranted.

A brief history

Working at ThoughtWorks as a consultant, I was privileged with a relentless string of learning opportunities from working at different clients, following different processes, and playing with different...

Read more

Pride is a weakness
February 04, 2017

I remember one day in college, a friend came into the commons area of the dorm where I lived and asked me and some other friends if his purple velour shirt made him seem less masculine. A couple of guys gave him a hard time, making fun of him for wearing such a shirt. I don’t think they actually cared about his shirt; it was more the asking, and the insecurity that suggested, that they were teasing him about.

We often think of pride as a good thing. It certainly has its benefits. The notion of having pride in one’s work leads many people to do better than they would if they didn’t care. But my mother always said, “Pride cometh before a fall.” Even as we celebrate pride, in the backs of our minds we know that it can be a weakness too.

To clarify: by “pride” I am referring to the psychological need to be recognized. I believe it is an overloaded term, so I know that when we speak of pride that isn’t necessarily what we’re always talking about. But this is what was on display when my...

Read more

The Talking Down Epidemic
October 22, 2016

Whenever I see someone talk down to someone else, I think, “What was the point of that?”

Don’t get me wrong: I do it too. But even when I’m the one doing it, I still ask myself that question, usually a few minutes later after the buzz has worn off. What was I trying to accomplish there?

Being talked down to has never caused anyone to think critically about a position. It’s never prompted earnest soul-searching or opened anyone’s eyes to anything. Talking down to people just makes them furious, as well it should, because the only real reason to talk down to someone is to make them feel bad, while making yourself feel better.

It’s basically stealing: you’re taking from someone else and giving to yourself. It’s just that instead of taking someone’s money you’re hurting them emotionally. Instead of profiting financially you’re getting a temporary emotional high at the other person’s expense.

I kind of think talking down to each other is an epidemic in this country. I say this as someone...

Read more

The self-healing chain
June 22, 2015

In school, we learned about series and parallel circuits. In a series or “daisy chain” circuit, the same electrical current flows through each component (say, a light bulb) in series, such that a single failed component brings down the whole chain. A parallel circuit, on the other hand, isn’t really a single circuit; it’s many circuits, all wired up in parallel so that one component can fail without affecting all the others.

A series circuit and a parallel circuit
A series circuit and a parallel circuit

Series circuits have at least two serious problems:

  1. They’re fragile: all it takes is one failed component to break everything. Moreover, the bigger the circuit (i.e. the more components it has), the worse this effect is. The odds of any one bulb failing are much greater when you’ve got 100 bulbs vs. just a few.
  2. Once they do break, they’re difficult to fix. I’ve heard harrowing tales1 of my parents' generation dealing with strings of Christmas lights that went out, having to check potentially hundreds of bulbs one by one in...

Read more

Should we write our own tests?
May 13, 2014

I have a feeling anyone reading this is likely to feel that the answer to the question Should we write our own tests? is obvious. But obviously what? Yes or no?

Let me first make a confession, which will probably (and understandably) be offensive to anyone reading this who identifies as a QA, test engineer, or something along those lines.1 For some time now I’ve held the belief that we as software developers should definitely be writing our own tests, and so the role of software QA is one that shouldn’t have to exist.

To be clear, I have met plenty of very smart and capable QAs and I have never questioned the value of their work. I guess you could say I thought of software QA teams as sort of a necessary evil, a hack to provide better quality assurance given that many devs simply don’t write tests, or write crappy tests. But if devs would just do their job right, I thought, QAs wouldn’t be necessary.

I also thought of QA folks in the context of big waterfall environments where software...

Read more

Artificial constraints and the pursuit of mastery
April 21, 2014

About a month and a half ago, my old colleague Pete Hodgson wrote an article called JavaScript without the this, describing a strategy for writing applications in JavaScript without ever (or at least seldom) needing to use the this keyword.

We actually used this strategy—my teammates and I, under Pete’s leadership—on a project while I was at ThoughtWorks called EMB. It worked well, and I do think it’s a sensible approach. My feelings on the subject don’t end there, though. My opinion is a little more complicated than a simple thumbs up or thumbs down. So I thought I’d take a minute to write out my thoughts.

Real constraints and artificial constraints

In any line of work, there are going to be constraints. Some are real—by which I mean, there is no avoiding them—while others are artificial, constraints we impose on ourselves.

A grammar example would be “Never end a sentence with a preposition.” This isn’t an actual rule of English grammar that you’ll find in any grammar book.1 It...

Read more

Next