What is programming, anyway? – Felienne @ NDC London

I just love, love, love this talk from Felienne given earlier this year. It affirms so much of my own thinking, and I would say is a “must watch” for anyone involved in programming.


This talk affirms so much of what I have been working on with this “algorithms of CSS” business. Felienne is an excellent, engaging speaker, and we have a similar affinity for the Apple Pencil slides strategy 🙌

Here is a link to the talk on Youtube, and a summary of the points that resonated most, for me:

The tech community tends to be more negative and judgemental than other communities (shocking, I know) – if someone is excited about programming, the response, from at least a few outspoken people, is some form of “that’s not real programming”.

When other communities see enthusiasm about their topics, they encourage it. What is different about technology?

Engineering is a metaphor

Using the term engineering for programming is a metaphor: writing software is not the same as building a bridge, no matter how you spin it, and that’s not devaluing writing software, that’s saying they are two different practices albeit with similar qualities. The fact that engineering is the most prominent metaphor for programming excludes those of us (🙋🏻‍♀️) who see heavy math and logic and react with, “That’s not for me”.

You know what else is an integral part of programming, besides math and logic? Devising creative, context-dependent solutions to problems, and then communicating them to team members with a set of knowledge different that yours.

Programming is writing

What other metaphors can we use for programming? Felienne suggests that programming is writing. At a high level, the goal when writing is to take an idea and figure out a grouping of words and phrases that will communicate that idea. Isn’t that what we do when we write code?

There are two distinct types of writers: plotters and pantsers. Plotters think very carefully about what they will write, then do it all in one go. Pansters “fly by the seat of their pants”, so to speak. A pantser tries one method, scraps it and tries another, over and over and over until they are satisfied. There is certainly a good mix of plotters and pantsters in programming!

On the other hand…would you trust a pantser to engineer the scaffolding of a skyscraper? Probably not.

Programming is writing!

Ah, I just love, love this so much. Thank you Felienne!