There is a plague amongst our peers, silently infecting our coworkers and our friends. We cannot see it or feel it. We must strive to keep it at bay, for its infection is hard to notice and even harder to treat. It is constantly watching for signs of weakness, for a portal through which it can contaminate us, its unsuspecting victims. It is the disease called arrogance, and it is a programmer's mortal enemy.
Our industry is rife with programmers who have been sickened by arrogance. You probably work with one. That guy who believes that he doesn't need to change his code, since obviously the design he implemented is perfect and the rest of the system should follow it. Or maybe that girl who resists code reviews, saying that there can be nothing wrong with her code, because she wrote it. They're out there, succumbing in droves to this vicious disease. What they seek, what the force that drives them seeks, is validation in their assumption of their own invincibility. The disease seeks to preserve its own existence and that of its host.
It's not that hard to see how they were infected. The outside world, the non-technical majority, likes to put us software people on a pedestal and raise us up over others, because we (to them) appear to do magic with code. Need a new report that has some really complex math? Give it to this developer, he'll be done in an hour. Have a graphics engine that needs tweaking? This guy can get it done like that. And when they get it done, they get "great job Jim" or "thanks so much Kelly" or "wow, you're so good at this, Paula". Compliments can come quickly to programmers, as we trade in skills that are like black magic to most other people. It's easy to let the compliments go to our collective heads, and this gives arrogance a place to take root and multiply.
As the compliments from our coworkers and bosses continue to accumulate, our susceptibility to being infected grows. This is the environment that arrogance so desires: a person who is taking all of these "good job!" compliments to heart and starts to think s/he can do no wrong. If all of these people are giving me compliments, then I must be pretty good at this, and if I'm pretty good at this now, won't I just continue to be good at it? The logic is easy to compute but hard to combat, and it leads to the dangerous conclusion that we don't have to learn. Being unwilling to learn is the death knell for a programmer's career; tech moves forward so quickly that those that are unwilling to keep up risk being pigeonholed or left out altogether.
So what can we do to prepare ourselves for the impending infection? The only effective treatment for arrogance must come from ourselves; only we can fight this disease within us.
The Treatment Plan
The first step in our treatment plan is to accept that there's always going to be someone better than us. There will always be someone who can code faster than us, can be more creative with their code, and just knows more than we do. These people are not to be avoided, they are to be sought out. I believe that you should strive to feel like you're the dumbest person in the room, by finding and working with people smarter than you are. Arrogance thrives on people believing that they are smarter than others; by acknowledging that there can be others who are more intelligent than we are, we remove some of our susceptibility to this infection.
Second, we should understand that our code does not represent us as people. People can learn, grow, change; code that we've already written can do none of these things. This is why code reviews should be mandatory in our industry, so we can be presented with the opportunity to learn from others' constructive criticism. Code is just something we wrote that one time we needed something done, and just because it exists doesn't mean we can't change it. Hopefully, we can get to the point where we can laugh at code in the afternoon that we wrote that morning. We shouldn't take constructive criticism of our code too personally.
Third, we can remember that we are allowed to feel proud of something we wrote. Pride != arrogance, and some pride is necessary for continuing to do our job the best we are able (because it's easier to be good at something we're proud of doing). It's excessive pride, pride that consumes our being, that provides the fuel for arrogance's infection.
All of these steps together provide the best prevention plan for keeping arrogance at bay. But what about other's struggles with this disease? Is there anything we can do to assist them?
Can We Help Treat Others?
While everyone must defeat arrogance within themselves, that doesn't mean we are fighting alone. If you know or work with programmers who have come down with a severe case of arrogance, don't avoid them, try to help them. Ask them to explain what their code does; this forces them to either prove they know what they are talking about or make up excuses ("I dunno why it works, it just works! Stop bugging me."). If they resist constructive criticism, ask them why; does it make them feel persecuted, belittled, and can you make any changes to help them feel more inclined to listen? If they truly want to be better at their job, they'll hear you, even if they don't immediately act grateful. If they don't want to be better, well then hey, at least you tried.
Be careful, though, as we must remember that not everyone wants help. Some people are infected voluntarily; maybe they've been picked on their whole life (as many nerd-inclined developers have been) or maybe they're just scared of losing this new job they picked up and use their arrogance as a defense mechanism ("I know this works, just let me handle it"). There's lots of reasons why a person may intentionally submit to arrogance's hold, and they're not necessarily bad reasons. We cannot assume we can help everyone, for such an assumption is just arrogance shrouded in a helpful cloak.
In short, we can only cure this disease within ourselves, and others must cure it within themselves. We can provide support and guidance for fighting the infection off, but we cannot remove the infection from others; they must want to be cured.
Arrogance is the downfall of many developers, and the sad part is that they generally don't realize it has infected them. It blinds them to their own shortcomings, robbing them of the ability to critically evaluate their skills, and eventually allowing them to atrophy away into nothing. Don't be arrogance's next victim, laid out by this troubling but treatable disease, unaware that you have fallen prey to a programmer's mortal enemy.