This is a talk by Chris Hartjes for NomadPHP. It’s an unusual talk for Chris as he normally talks about testing, and those talks are about an hour long. 10 minutes means that he’s going to speak very quickly.
Despite his love for testing, Chris finds it more interesting to talk about people. He discovered that once you master tools and techniques surrounding testing your code base, you find out that the problem isn’t really the tools, it’s people.
This talk is not about how to ruin your career (that’s actually pretty easy to do). This is about how to ruin someone else’s career (which happens way too much without you knowing it). It all comes down to a single recurring theme: lack of empathy.
Act like a being of pure logic
I got into programming because I didn’t like dealing with people
If you think you can avoid dealing with people as a programmer, you’ll be surprised to learn that if you want to turn programming as a job in to programming as a career you’re going to be dealing with people. You have to get out of the idea that everything will always be logical.
Programming is about communicating ideas to people
Defend your position at all costs
I don’t care what you say, [tool x] is garbage!
This applies to languages, editors and your framework of choice. People have opinions, we all want to use (what we think is) the best tool. People like to group together with other people that are like them, but this behaviour leads to tribalism.
Tribalism turns nasty when you insist that only the things that your tribe enjoys are worth anything. Tribalism destroys careers by making people needlessly feel like outsiders.
You can have your own opinion, but opinions are not facts.
Treat the leaders of your projects like infallible deities
You don’t like how [person X] built something better!
People at the head of projects have done something really cool, but they’re still just a person. They don’t need to be worshipped.
A leader is out front, moving a project in the direction we want it to go. A boss is sat at the back telling people what to do and not actively participating
Constantly turn every conversation into a pitch for your favourite thing
That’s why you should look into [my favourite, unrelated topic]
People want to project – “I really like this thing and I want everyone else to like it”. You start seeing connections to things that don’t exist. For every project it becomes “Why aren’t you using framework X or editor Y or plugin Z”.
Sometimes they’re not a good fit, and sometimes at that point I’m just not interested in learning about that stuff.
Don’t use every interaction to evangelise your favourite thing. Chris used to pitch his favourite thing – he used to tell everyone to test. Now he’s turned it around and asks people if they want to test and provides support if they do.
Every day is filled with micro-aggressions – things that people do towards each other unconsciously. The way that they talk, deal with each other. The way that they treat them. They all add up until someone says “that’s it I’m done with programming”
To turn programming from a job to a career, there are lots of other things you need to do. Go to conferences, network, contribute to OSS, give presentations.
Each of these starts with developing empathy – the ability to look at things from someone else’s point of view. Understand that if you do something to hurt someone’s feelings or insult them, it’s the ability to go “whoa, maybe this thing that I just did wasn’t cool. Maybe it’s discouraging people from participating”. It’s a fine line between being an evangelist and a zealot
Your interactions with others can cause them to doubt:
- Their own skills
- Their own experiences
- Their choice of tools
- Whether they even belong here
The number of people who will tell you that they are upset by your actions is dwarfed by the number of people who are upset by your actions but say nothing. This is true for both positive and negative actions.
Working with people is not a battle to be won at all costs. This is a gift. It’s an opportunity to interact with people and build things other than shareholder value.
Michael is a polyglot software engineer, committed to reducing complexity in systems and making them more predictable. Working with a variety of languages and tools, he shares his technical expertise to audiences all around the world at user groups and conferences. You can follow @mheap on Twitter