YOW! September 2021 Recap
Chelsea Troy
“This is a talk about assumed context.”
So began Chelsea Troy, who wanted to talk a little bit about why our own personal and organisational contexts can influence our opinions about technology, specifically the languages that we use.
She began by opining that many professional programmers had strong opinions about programming that wasn’t particularly inclusive of what a programming language was;
- “HTML is just markup, it’s not programming.”
- “A real language needs a compiler.”
- “It can’t be a programming language if it can’t solve the _X_ problem.”
…and so forth.
Troy’s argument though is that perspective is important in Software Engineering. Computer Science is, after all, an entirely human made construct - it is not a physical science based around observed laws of nature. That means that when we’re unaware of the context we’re operating in, we mistake “our truth” for the “universal truth”.
She paused to give an example of a common programming axiom;
“Generally, it is better to optimise our code for legibility than for speed”
Most people in the conference chat agreed. Troy continued by saying that this is perhaps good advice, but the trick was the generally made this statement was quite useless. By itself, this statement does not tell us in which specific cases it is or is not important to optimise for speed or legibility. There a clear lack of nuance in this statement which is able to make it usable in a practical sense. Should this apply when working on avionics software? Financial transaction processing? A game engine? Context is important, and understanding the domain which we need to apply our advice within helps us communicate more clearly with one another.
Progressing beyond the need to communicate meaning within specific contexts, Troy challenged us to look beyond our own contexts to see what we could learn from others, to become better programmers.
“As a programmer you might think that you don’t have a lot in common with a BA who does process engineering. But there’s so much to be learned about optimisation from that context.”
Learning from other contexts to improve our skills within our own should be a common activity for us all as programmers. We each have our own tools and tricks that we commonly use within the domains and languages in which we operate; part of growing as an engineer is then understanding the limitations of these tools, and the contexts in which they don’t work.