Const Variables and Other Oxymorons

Const Variables and Other Oxymorons

By Frances Buontempo

Overload, 34(192):2-3, April 2026


Some things can seem niche or even contradictory. Frances Buontempo explores how you can turn this to your advantage.

Trying to write an editorial might be pointedly foolish, so I’ll get to the point: I haven’t had time. I’m finishing up my latest book [Buontempo26] and had a last minute acceptance to nor(DEV):con [NorDevCon], a relatively small conference in Norwich. I’ve been several times before, and a handful of ACCU people attend regularly. Go if you get the chance: it’s great and not that expensive. I took four trains to get there, but only three to get back. Plenty of thinking time, but I was thinking about my book and various other distractions, like my upcoming talk.

My title was ‘Learn how to Learn’. This was based on a cut-down version of my Meeting C++ keynote, called ‘Stoopid Questions’ [Buontemp25]. Since I only had 40 minutes, I left out discussion of AI and machine learning and concentrated on how we learn, giving some ProTips for teaching. It seemed to be well received. The keynote that morning had been about imposter syndrome, something which affects many people… including conference speakers, no matter how often you have spoken previously. I was asked to be on a panel about DevOps/Platform in the afternoon. I had to leave part way through for the epic train journey home, but said yes. I managed to have a brief chat with another panelist and the person who had arranged the session just before lunch. It became apparent that I didn’t have a strong opinion or angle to share, so we decided I would ‘host’ for a bit, asking questions. We were all introduced, so I pointed out that I really was an imposter, at least in terms of the panel, and would ask questions so I could learn more. Fortunately, I had been primed with a few pre-canned questions and the audience quickly joined in and asked their own. I have been involved in aspects of DevOps, and was even on a team called ‘Platform’ once. There’s a difference between knowing you know little about the latest state of the art and being very aware that you have gaps in your knowledge or simply feel self-conscious standing in front of a crowd. I was definitely more nervous giving my own talk than being on the panel. Sure, I was on my own on stage during my talk and the panel meant I was part of a group, but it felt like the main difference was imposter syndrome versus being an actual imposter.

Being regarded as knowing your stuff to an extent or even being an expert might cause imposter syndrome, but there are ways to cope. Furthermore, it’s a privileged position and can create amazing opportunities. Now, expertise can be quite niche. If you angle yourself to a small corner, you might end up knowing more than others. My brief sojourn into DevOps, both on the panel and during my career, meant I knew where logs were in production, could figure out why a release might have failed or why a build might have broken. Some people on the teams were only interested in the development, so I could be helpful. A small dopamine hit once in a while. Now, that was just a tiny bit of knowledge on my part. I once knew a guy called Richard Freeman. He has a PhD in cryptozoology, and has been described as the UK’s leading cryptozoologist [Wikipedia-1]. If you don’t know the term, that means he researches non-existent animals, such as investigating bigfoot (Sasquatch) [Wikipedia-2] or even the thylacine (Tasmanian Wolf) [Wikipedia-3]. Bigfoot might only be a folk tale, but the thylacine used to exist. Nonetheless, both might be hard to find on an expedition! Freeman’s niche knowledge has given him many opportunities to go on further expeditions. Maybe you know something about a niche topic? Even if you only feel like you know a little, consider writing an article. Get in touch.

I mentioned my new book earlier. Of course, C++ isn’t a niche subject, in the grand scheme of things. There are many C++ books out there, but there hasn’t been a new one for a while. There are some newer books, but O’Reilly asked me, so here we are. Trying to explain the basics is much more difficult than explaining the deeper topics, which might be a surprise if you’ve never tried teaching people. You need to introduce terms and syntax. Something that caused discussion was a const variable. On the face of it, this is a contradiction or oxymoron. How can something be variable and constant at the same time? As I am sure you know, a variable can change, but if it’s marked as const in C++ that means your code won’t change it (unless you have mutable variables, which is another story). Some other code mightSome other code might; for example if you have a for example if you have a const reference, the thing you refer to can be changed elsewhere. These kind of terms cause beginners extra difficulties. Teaching is difficult, and learning isn’t a walk in the park either.

Technology is littered with confusing, and sometimes seemingly contradictory terms. I’ve heard people say “rigid agile” before. I’ll just leave that there. Terminals are not usually terminal. What even is static React? Is disaster recovery just wishful thinking? Does serverless really mean there is no server anywhere? As for cloud computing, well, see the article by Teedy Deigh in this edition. You could even ask why a ‘computer programmer’? Though not a contradiction, it suggests you program things other than computers. Maybe a calculator, but that’s like a computer. It does, after all, compute. You could even argue virtual reality is a misnomer too. It’s not really real, and you do actually experience it. Naming is hard, as we know.

I wrote an excuse for no editorial back in 2019, called ‘This means War!’ [Buontempo19]. I mused on how some computing terms like SNAFU are rooted in the military, and encouraged readers to think about the terms they use. I said, “If you can’t follow all of the strange in-house acronyms when you start a new gig, or panic while learning something new as soon as ‘foo’ or ‘widget’ gets mentioned, take a breath. You are not alone.

When I was at NorDevCon one speaker, GJ Schouten, gave a talk called ‘How a new Calendar API can shape the upcoming settlement on Mars’ about the Lukashian calendar [Lukashian]. I’d not heard about it before, so the talk was very interesting. At a high level, it tries to find way to provide a calendar that works on Earth in any timezone and other planets too. During the talk, Schouten discussed analogue exercises. My brain immediately asked “What?” I usually think analogue versus digital. Of course, he meant running a mission on Earth as an analogue exercise as a counterpart of practice for a mission on Mars. Words cause confusion, but without them communication would be even harder.

As you probably know, I worked as a contractor in finance when I lived in London. Though I had read some basics about yield curves, bonds, swaps and the like, I didn’t know much. In a new environment or subject domain, I tend to make a glossary of terms, even if I only have the term initially. The definition can wait. I kept it to myself initially, but a team mate noticed and thought it was a great idea and encouraged me to share it on the Wiki. I had kept it to myself because I assumed everyone else knew what the mystery words meant and I felt embarrassed. I mentioned imposter syndrome earlier: here’s a data point. You probably aren’t the only person who has lots left to learn. You are not alone. Learning the finance terms was a challenge but fun. There were also unfamiliar computing terms. I had previously worked with embedded devices, so wasn’t used to writing code for servers. I was asked to bounce a server one day. Clearly, this didn’t mean literally, but I wasn’t 100% sure what I was being asked to do. Rather than owning up to being a clueless fraud, I asked “How?” When a colleague show me how to shut down a machine and then bring it back ‘up’ again, the meaning of bounce became clear, and I added a Wiki entry explaining how to bounce a server. Another teammate noticed and whispered that they had always wondered what ‘bounce a server’ meant. Some people might think it’s obvious, but some of us are more literal than others. I bet you have come across terms you don’t understand. Maybe you had to ‘format’ a disk at some point, many years ago. What does that mean? If you find out how, you might discover what. Be brave and ask if you’re not sure. If someone tells you it’s obvious, find someone else to talk to. We all learn by asking questions.

Bouncing servers and formatting disks might make sense to techy people, but sound odd to the uninitiated. The same happens outside tech. We were visiting my father-in-law a little while ago. Someone walked by and said “You’re not Alex.” We both simultaneously said, “Correct.” This elicited the response, “Spooky!” I am not sure what provoked our outburst, but it seemed like the obvious thing to say. What’s obvious depends on context and experience. If you come across something for the first time, your perspective will probably differ to those around you, making some exclamations seem odd or even spooky. As you spend time together, be that at work or with friends, you do build up a shared language. It’s often helpful to do this deliberately, particularly in a technical context. That’s why we have common idioms for various programming languages, such as RAII for C++. We also have patterns, and pattern languages. If I say “Singleton”, you probably know what I mean. I read some of Klaus Iglberger’s C++ Software Design: Design Principles and Patterns for High-Quality Software” book [Iglberger22] on my epic train journeys the other week. He covers various design patterns, and introduces the idea by pointing out how verbose it would be if you described a pattern rather than having a short, snappy term for it. Saying ‘singleton’ is much easier than describing a way to provide a single instance of something, ensuring lifetimes and initialisation are correct. I must admit, I sometimes forget which pattern is which. For example, template and strategy are muddled in my mind. If I concentrate, I can work out which is which. Simply being able to say “Let’s use template or strategy – I forget which I mean,” is simpler than trying to spell out the details in full. I guess ultimately, this is the purpose of words. Trying to describe a thing by pointing works sometimes. I can point at a table, for example. However, trying to convey an abstract idea like a colour or number is a challenge. I wonder how we manage to learn such abstract concepts. I guess you try to use new words, and with a bit of encouragement and gentle feedback gradually figure out how to use them properly.

Next time you are confronted by a seeming oxymoron or other confusing term, see it as an opportunity. Maybe you can find a better term or another way to word things. You will learn something and might help others. You might even be inspired to come out with your own conference talk or perhaps an article for Overload. At the very least, recognise that you might not be the only person wondering what something means. Don’t be afraid to ask, and if someone laughs at you, or claims it’s obvious, they are obviously wrong, because you didn’t understand the phrase or term. Tech is litter with terms like const variables, which can take a while to get used to, but this gives you an opportunity to learn and explore. Have fun!

References

[Buontempo19] Frances Buontempo ‘This Means War!’ (editorial), in Overload 150, April 2019. Available at https://accu.org/journals/overload/27/150/buontempo_2643/

[Buontempo25] Frances Buontempo ‘Stoopid Questions’, keynote Meeting C++, available at https://www.youtube.com/watch?v=zztvhcgXQco

[Buontempo26] Frances Buontempo (2026) Introducing C++, O’Reilly Media, Inc., details at and available from https://www.oreilly.com/library/view/introducing-c/9781098178130/

[Iglberger22] Klaus Igleberger (2022) C++ Software Design, O’Reilly Media, Inc., details at and available from https://www.oreilly.com/library/view/c-software-design/9781098113155/

[Lukashian] The Lukashian Calendar: https://www.lukashian.org/?0

[NorDevCon] nor(DEV):con conference, 26th & 27th February 2026, details at https://nordevcon.com/

[Wikipedia-1] Richard Freeman (cryptozoologist): https://en.wikipedia.org/wiki/Richard_Freeman_(cryptozoologist)

[Wikipedia-2] Bigfoot: https://en.wikipedia.org/wiki/Bigfoot

[Wikipedia-3] Thylacine: https://en.wikipedia.org/wiki/Thylacine

Frances Buontempo has a BA in Maths + Philosophy, an MSc in Pure Maths and a PhD using AI and data mining. She’s written a book about machine learning called Genetic Algorithms and Machine Learning for Programmers, and one to help you catch up with C++ called Learn C++ by Example. She has been a programmer since the 90s, and learnt to program by reading the manual for her Dad’s BBC model B machine.






Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED


By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED



Settings can be changed at any time from the Cookie Policy page.