Something I've noticed in software is that 95% of the anger and strife comes from the (largely male) impulse to react to unskilled creativity (or the perception thereof, because the most dogmatic technology wars come down to superficial perceptions-- e.g. tabs vs. spaces) with extreme negativity.
That impulse is even in our language. We say someone "jacked off in" or "took a dump in" the code base when he did something "clever" but unskillful and damaging. It's an epithet of self-indulgence and even sabotage when a more appropriate reaction is, "I wish he hadn't done that, so let's sit down and teach him better practices".
It served us well when we had to stop people from poking sleeping mammoths and smilodons with sticks, but it's outdated now (for the most part). Code indentation is not an existential issue for most software companies.
Don't get me wrong: I dislike spaghetti legacy code as much as anyone else. I mean, it's truly horrible to look at. And one only need review my history to see what I think of the Java and C++ languages. I just think reacting emotionally is a bit unskillful. (I can't use a stronger word than "unskillful" because I do it myself.) I think we'd be a lot more productive (and this is largely a self-criticism) if we could take stock of our mental processes and turn "code rage" off.
Relatedly, I think we'd be better off as an industry if there were more women in it, but that's another discussion entirely.
At my last job, everyone was always bitching about the young developers. After months and months of hearing this, I started pulling the new guys aside for an hour a week to do mentoring sessions. We'd sit down and do some coding on a simple topic (how to sort a datagrid, how to hook into the event that fires when a row is created, how to standardize your data validation and error messages). The big take away for them was they got see the process, how a more experienced developer works. Stuff like did you know that shift-control-b builds your solution... you should be pressing that every 5 minutes. Or coding up a quick and dirty solution and using simple refactorings to turn it into something more real (mostly extract method and rename).
I'm not going to sit here and say that there is no such thing as a bad developer that is beyond help. I do think in some cases though it is a matter of people not doing their due diligence in helping people out. I can't help but think that part of it is that we developers spend a lot of time on the internet where the base mentality is that everyone is either a n00b or a pro. Either I agree with what you said or you are clearly a moron. It is important to not let that kind of stuff trickle into our 'real' lives.
This is really important – I think every organization should do this. At my last job I learned so much from watching more experience people code and asking them questions. Now I volunteer my knowledge to others whenever I can because I know how much it helps.
People rarely use those phrases to describe their own co-workers, especially not at the time; it's more often in retrospect, and often about an external consultant.
Agree. That impulse to disregard & denigrate those who make mistakes is strong, and I've made that mistake often. Looking back I see that copping that attitude is a major cop-out. It's so easy. Being nice & teaching where you can - that takes real balls & brains.
Well, there are the people who don't want to learn and improve their bad practices. They're awful. I worked with someone like that-- the only time I actually asked someone to fire someone. He was brilliant and had a lot of experience, but he had some awful practices that he refused to improve, and that made everyone else less productive. He manage to position himself as the "star" kicking out 4000 LoC per week, until it became clear that not only did none of his stuff work, but it was illegible and couldn't be made to work.
That experience tested me. But if you have someone who's very junior, he's going to make the same kinds of infuriating mistakes, but not out of malevolence or a negative attitude-- just being new to the whole process. We were all there once.
As a programmer I feel that rage in general is a poorly managed emotion.
I have noticed a tendency of rage hinges around communication. If I can't understand wtf some code-monkey from 5 years ago was trying to do, I of course 'rage and re-write'. But as I get older it seems this isn't always the right thing to do .. to be honest, I find myself having respect for code I don't understand at all, more or less, because the author was an idiot. Respect for the borked!
That impulse is even in our language. We say someone "jacked off in" or "took a dump in" the code base when he did something "clever" but unskillful and damaging. It's an epithet of self-indulgence and even sabotage when a more appropriate reaction is, "I wish he hadn't done that, so let's sit down and teach him better practices".
It served us well when we had to stop people from poking sleeping mammoths and smilodons with sticks, but it's outdated now (for the most part). Code indentation is not an existential issue for most software companies.
Don't get me wrong: I dislike spaghetti legacy code as much as anyone else. I mean, it's truly horrible to look at. And one only need review my history to see what I think of the Java and C++ languages. I just think reacting emotionally is a bit unskillful. (I can't use a stronger word than "unskillful" because I do it myself.) I think we'd be a lot more productive (and this is largely a self-criticism) if we could take stock of our mental processes and turn "code rage" off.
Relatedly, I think we'd be better off as an industry if there were more women in it, but that's another discussion entirely.