I recently came across a post by Ned Batchelder in which he describes the frustration associated with software development. Of particular help to me, and I hope others, is the way he points out that both beginners and experts feel the same frustration with the software development process. He writes:
I love the raw emotion on the two boys’ faces. They perfectly illustrate both the frustration and exhilaration of writing software.
But here’s what beginners might not understand: beginners think beginners feel the frustration, and experts feel the exhilaration. As any expert will tell you, experts feel plenty of frustration. They feel like that left-hand kid a lot.
The difference between beginners and experts is that experts are familiar with that frustration. They encounter it all the time, as they deal with new unfamiliar technologies, or a thorny bug, or just when they are too tired to tackle the problem before them. They know the frustration is because they are facing a challenging problem. They know it isn’t a reflection of their self-worth or abilities. Experts know the feeling will pass, and they have techniques for dealing with the frustration.
The good news for beginners is: this isn’t about you. Software is difficult. We build layer upon layer of leaky abstractions, of higher and higher realms of virtualization and complexity. There’s no natural limit to how high our towers of complexity can go, so we are forced to try to understand them, or tame them, and it’s very hard. Our languages and tools are obscure and different and new ones are invented all the time. Frustration is inevitable.
The bad news for beginners is: this feeling won’t stop. If you do your software career right, then you will always be a newb at something. Sure, you can master a specialty, and stick with it, but that can get boring. And that specialty might dwindle away leaving you stranded.
This is really, really important for beginning software developers to understand. I’d even go so far as to say that in order to become really skilled at development, you have to embrace the frustration. It’s part of the “give and take” nature of building software.
I’m grateful for Ned’s permission to repost the quote above. For the full article, please visit: https://nedbatchelder.com/blog/201709/beginners_and_experts.html.