In the 1960s, psychologists experimenting on dogs found that subjects given electric shocks with no hope of relief learned to be helpless. Even in subsequent experiments that did provide a means of escaping the pain, the dogs passively submitted without trying to help themselves. They had been trained not to learn. Some software developers are similar to dogs who’ve been tortured by sadistic psychologists- in the face of new challenges, they’re just helpless.
Why? Where do they learn that? Writing software consists mostly of solving problems, being confronted with puzzles to figure out. Why would you choose this kind of career if you didn’t enjoy learning new things?
One answer is that developers are trained to be helpless. For some shops, their entire code base is a big ball of mud floating in a toxic pool of backbiting and finger-pointing. When you try to fix some bad code, you own it. Then you get blamed for it. You inherit new responsibilities without getting the time or resources to fulfill them. Developers are rewarded for keeping their heads down.
Or, some shops are extraordinarily territorial. Even well-meaning, diplomatic attempts to take on issues outside of prescribed boundaries are punished. Either way, enough negative reinforcement teaches developers to stop trying.
Learned helplessness also comes up in the context of children with development challenges, especially an inability to communicate. Parents may anticipate a child’s needs too much, doing everything for them without trying to get their input to such an extent that they inadvertently teach them to be passive.
Most developers who are uninterested in learning new things seem more like this to me. They accept help too easily without making an effort to learn things themselves. They settle into a pattern of expecting others to be responsible for issues that they don’t currently know, so they never learn anything new.
In really large shops, you may also have very narrowly prescribed responsibilities on a very big project that make it difficult to break out. I once worked on a six-person team that was tasked with querying data from five (and only five) database tables and making it available to other system components. Even for that small task, we were required to use frameworks developed by other teams. Our exposure to different technologies and problems was painfully small and it took real extra effort to learn something new at work.
But whether your work duties are limited or you’re just lazy, learning to be helpless as a software developer is a game-ender. There aren’t many professions that demand constant re-training in the same way that programming does. If you learn to be passive and not take on new challenges, you’ve set the boundaries of your career. You will last as long as the technology you’re currently familiar with lasts. Who knows, that might be a long time. More often though, you might as well find yourself a new line of work.