Blogs / Personal blogs

Graham Lee

sicpers.info

Writing code is hard. Software engineering is much harder. I'm Graham Lee, D.Phil. I help programmers become software engineers, software engineers become senior software engineers, and technology leaders ensure their teams are effective. I've done this at Facebook, Apple, and Oxford University, and now I can do it…

Popular posts
14
Total points
2,448
HN comments
1,645
Rank
#642 personal

Visit sicpers.info → RSS feedOn Hacker News Nov 2017 – May 2026

Software Engineering 10Career & Management 5Tools & Productivity 2Tech Industry & Business 2Society, Policy & Culture 1Open Source 1

1

Inheritance Often Doesn't Make Sense

There are three different types of inheritance going on. Ontological inheritance is about specialisation: this thing is a specific variety of that thing (a football is a sphere and it has this radius) Abstract data type inheritance is about substitution: this thing behaves in all the ways that thing does and has this…

2

Discipline Doesn’t Scale

If programmers were just more disciplined, more professional, they'd write better software. All they need is a code of conduct telling them how to work like those of us who've worked it out. The above statement is true, which is a good thing for those of us interested in improving the state of software and...

6

There is no “us” in team

I’ve talked before about the non-team team dynamic that is “one person per task”. Where the management and engineers collude to push the organisation beyond a sustainable pace by making sure that at all times, each individual is kept busy and collaboration is minimised. I talked about the deleterious effect on…

7

Zen and the Art of Software Maintenance

In one part of the book Zen and the Art of Motorcycle Maintenance, which is neither about Zen nor motorcycle maintenance, there are two motorcycles and two riders. John Sutherland is a romanticist who appreciates the external qualities of his motorcycle: its aesthetics, and its use as a vehicle. The narrator is a…

8

On UML

A little context: I got introduced to UML in around 2008, at an employer who had a site licence for Enterprise Architect. I was sent on a training course run by a company that no longer exists called Sun Microsystems: every day for a week I would get on a coach to Marble Arch, then...

9

The Atoms of Programming

In the world of physics, there are many different models that can be used, though typically each of them has different applicability to different contexts. At the small scale, quantum physics is a very useful model, Newtonian physics will yield evidently incorrect predictions so is less valuable. Where a Newtonian…

10

My proposal for scaling open source: don’t

I've had a number of conversations about what "we" in the "free software community" "need" to do to combat the growth in proprietary, user-hostile and customer-hostile business models like cloud user-generated content hosts, social media platforms, hosted payment platforms, videoconferencing services etc. Questions…

11

The challenges of teaching software engineering

I've just finished teaching a four-day course introducing software engineering for the first time. My plan is to refine the course (I'm teaching it again in October), and it will eventually become the basis for doctoral training programmes in research software engineering at Oxford, and part of a taught Masters. My…

13

YX Problem

Software people are always all up in the XY problem: someone asks about how to do X when what they're really trying to solve is Y. I find the YX problem much more frustrating: where software people decide that they want to answer question Y even though what someone asks is question X. I've seen...

14

On null

I've had an interesting conversation on the topic of null over the last few days, spurred by the logical disaster of null. I disagreed with the statement in the post that: Logically-speaking, there is no such thing as Null This is true in some logics, but not in all logics. Boolean logic as described in...