Member-only story
Understanding Programming Errors Through Language
Code correctness is just the beginning, there is much more to it.
In the past year, I had the chance to mentor several third and fourth semester Computer Science undergraduate students. Seeing their work, I could relate to how I coded back in the day. It was not bad, per se, but naïve, it missed the big picture, it didn’t anticipate problems. After a while, programming is not just about solving the current issues but avoiding future ones. And by that, I don’t only mean bugs, but also maintenance. For instance, a naive coder might argue that unit testing is just writing more code for the same amount of functionality, which he would have to test anyway. A more experienced coder might laugh at such a proposition. Unit testing is all about ensuring things remain correct, despite the many changes products undergo in their lifetime. Putting it all together, the message I needed to convey was simple: correctness is just the beginning; there is much more to it.
However, although I knew what I had to say, communicating it properly was hard. I needed a metaphor; one day, I found it: Language. After it occurred to me, I felt quite stupid for not thinking of it straight on :c.