Does a developer need to be nice? - MPJ's Musings - FunFunFunction #42
Key Takeaways
The importance of psychological safety and empathy in software development teams, and how being nice is a crucial aspect of it
Full Transcript
good Monday morning I am mpj and you are watching fun fun function today I want to talk about being nice I want to talk about how you cannot be a good developer unless you have good empathy skills my reasoning for that statement is that in order to to be a good developer uh you need to be in a good team and in order for a team to be good that team needs to have a high degree of psychological safety and in order to fit in such a team you need to have a a functioning sense of empathy let me give you some background to why I started thinking about this this week and also to give you an idea about what I mean when I say empathy what is in that bag that's scary oh that's nice it's just waste I am very happy that it was not a severed head so this week I ran across a thread on Hacker News and uh this person uh let's call them Aaron uh they they said something uh that was not quite correct uh so another person let's call them Barry uh corrected them which is fine it's and and completely the right way the right thing to do but Barry did it in this really condescending way and it was completely unnecessary to be condescending because now Aaron is going to be he's going to feel bad about it he going to feel like if he's wrong he's going to be bered or ridiculed and he is going to be hesitant the next time to say something which means that he's less likely to to learn and that is very very sad because it has made this this group that Aaron and Barry are both a part of is now worse off because you have made it harder for a member of that group to learn so in this situation Barry was he was concerned with correcting Aaron but he showed no real empathy about how Aaron felt and because of that I think that people like Barry are a drain on the groups that they are part of they do kind of try to contribute to the growing process of the group by introducing knowledge but they also take away much more at the same time when you have people like bury in a group it's like they uh they help to pour water into a bucket but at the same time they are constantly poking little holes in the in the bottom of the bucket to me it seems like there is this group of of berries out there that they aren't particularly good with feelings or people and that kind of thing and it doesn't make sense that they have been drawn to uh to computers and programming because at first glance it seems like you can escape people and feelings and that kind of stuff by by going into computers and going into programming which is a complete illusion uh it doesn't feel like it uh in the beginning of your programming career but once you start getting into it you start realizing that great software is not built by great programmers it's built by great teams as humans we have a tendency to uh romanticize individual effort a lot uh because I guess it's easier to relate to humans on an individual level so we have like humans in movies like doing great things in individual uh creates great impact on society and so on but in reality great things are achieved by people collaborating and software is no exception great software is built by teams don't get me wrong here there are absolutely programmers that are a lot better than other programmers uh I love to follow uh programmers and observe programmers like Jonathan Blow and John karmac but when you do you um it's easy at least for me to fall into the Trap uh of of believing that we need that these great programmers are the key to making great software I once heard uh somebody make an analogy between software development and juggling so there's a big uh difference between how good people are at juggling uh most people can juggle with two balls right um but the world record holder can juggle uh 13 bows uh at least for uh few seconds but the thing is nobody can juggle 20 balls and they can absolutely not juggle 20 balls for a sustainable time you can if you have like this access to this super programmer you can actually uh depend on them up to a certain theoretical point but after after that point your software has grown past the point where a sing single person can handle it and you are going to need a team and that is why the key to building great software is knowing how to build great software development teams which begs the question what makes a good team so Google ask themselves this what is it that makes our best functioning teams what is it that makes them tick what is it that sets them apart and they did a 4year study which is pretty amazing like Google has 60,000 employees and uh a lot of teams I've linked to this study in the resources part of the episode description by the way and what they found surprised them a lot because it didn't seem to matter who you put in the team so these study results they are a little bit skewed because Google has uh pretty decent hiring practices so the people working at Google are going to be decent developers but a key takeaway for me from this study is that it really doesn't matter from a performance perspective statistically if you put good developers or great developers on your team okay so uh who you put in your team that didn't seem to be an indicator of whether or not that team would uh would perform well so what did and they looked and they looked and one of the most like the strongest indicators that they have they found of a highly performing team was that the team members felt a strong psychological safety which is and I'm going to read here a sense of confidence that the team will not embarrass reject or punish someone for speaking up and when you think about it it makes a ton of sense that a team that has that uh performs very well because there's a lot of troubles that just get fixed there's no whenever like there's nothing that is going to be hidden behind the surface bubbling uh because people will bring it up because they will feel safe to bring it up and people won't be afraid of of seeming dumb and asking dumb questions so they will learn fast and people won't be afraid ofing making mistakes so they are willing to take risks and so on and so on so what this study teaches us is that in order to have a great software team you need to have psychological safety so these are pretty new findings so there AR there aren't exactly textbooks on how to achieve psychological safety in your team uh but I think that we can safely say that you cannot have uh people on your team behaving like Barry dead on Hacker News if you have people behaving like that uh those people uh just they have to change or they have to go because you can't be lenient here and and keep the berries around because it just takes a single Berry to destroy the psychological safety it just requires like somebody in your team to say something like I I did did this mistake and a single Barry to come in and say something like that makes that person feel bad about bringing bringing their mistake up and you've completely evaporated the psychological safety that you had so are you with me here great software teams need psychological safety and people with low empathy barriers they destroy Psych ological safety so if you're a person that might not have like your empathy skills up to par that means that you will simply not be allowed into the best software teams you will be driven out you will not be allowed uh because you would destroy them so if you don't work on your empathy skills you're always going to be stuck building mediocre software you're not going to get invited in into the best teams and if you buy some miracle or you're going to destroy them so if you Jesus the sun is so my conclusion is that if you want to make great software work with on the best software with the best people in the world on the best teams in the world rather uh you need to practice empathy and and it's a skill it's empathy is not genetic or anything like that it's you putting yourself in the in the shoes of another thinking about how they might feel how your comment that you're about the comment that you are about to make how that is going to be received thinking about how to make your colleagues feel safe feel safe to ask dumb questions feel safe to make mistakes feel safe to grow at least that is what I'm going to try to do that's my theory on it you have watched an episode of fun fun function if you are already a subscriber of this show and want to subscribe even more you can click the little notification Bell next to the Subscribe button to receive notifications of when I release a new episodes it would make me feel so good if I knew that I was part of your Monday morning notification spam I am mpj until next Monday morning stay curious [Applause]
Original Description
In order to make good software, you need to be in a good team. In order for a team to be good, they need to have psychological safety, and in order for you to be in a team with psychological safety, you need high empathy.
I'm also active on:
• Twitter https://twitter.com/mpjme
• Medium https://medium.com/@mpjme
• Quora https://www.quora.com/profile/Mattias-Petter-Johansson
Resources:
What Google Learned From Its Quest to Build the Perfect Team
http://goo.gl/90OCCb
Playlist of all MPJ's Musings
https://goo.gl/dhy4HQ
Playlist
Uploads from Fun Fun Function · Fun Fun Function · 49 of 60
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
▶
50
51
52
53
54
55
56
57
58
59
60
Higher-order functions - Part 1 of Functional Programming in JavaScript
Fun Fun Function
Map - Part 2 of Functional Programming in JavaScript
Fun Fun Function
Reduce basics - Part 3 of Functional Programming in JavaScript
Fun Fun Function
Destructuring: What, Why and How - Part 1 of ES6 JavaScript Features
Fun Fun Function
Reduce Advanced - Part 4 of Functional Programming in JavaScript
Fun Fun Function
Closures - Part 5 of Functional Programming in JavaScript
Fun Fun Function
Too many tools and frameworks!
Fun Fun Function
Currying - Part 6 of Functional Programming in JavaScript
Fun Fun Function
Recursion - Part 7 of Functional Programming in JavaScript
Fun Fun Function
Promises - Part 8 of Functional Programming in JavaScript
Fun Fun Function
Staying relevant as a programmer
Fun Fun Function
Factory Functions in JavaScript
Fun Fun Function
Composition over Inheritance
Fun Fun Function
Software needs to be better - FunFunFunction #1
Fun Fun Function
Unit testing: How to get your team started - FunFunFunction #2
Fun Fun Function
Straight-line code over functions - FunFunFunction #3
Fun Fun Function
Clojure - FunFunFunction #5
Fun Fun Function
The growth stages of a programmer - FunFunFunction #6
Fun Fun Function
5 tips to quickly understand a new code base - FunFunFunction #7
Fun Fun Function
Semicolons cannot save you! - FunFunFunction #9
Fun Fun Function
Functors - FunFunFunction #10
Fun Fun Function
Functors: I was WRONG! - FunFunFunction #11
Fun Fun Function
Questions and Answers - FunFunFunction #12
Fun Fun Function
Streams - FunFunFunction #13
Fun Fun Function
Prototypes in JavaScript - FunFunFunction #16
Fun Fun Function
Fast or Flexible? - FunFunFunction #17
Fun Fun Function
Coders are herd animals - FunFunFunction #18
Fun Fun Function
Weekend Kubernetes Shenanigans - FunFunFunction #19
Fun Fun Function
Monad - FunFunFunction #21
Fun Fun Function
Moar Weekend Shenanigans - FunFunFunction #23
Fun Fun Function
Questions and Answers - FunFunFunction #24
Fun Fun Function
Losing motivation - FunFunFunction #25
Fun Fun Function
LONGEST KUBERNETES SHENANIGANS! - FunFunFunction #26
Fun Fun Function
Fast code is NOT important - FunFunFunction #27
Fun Fun Function
Pair Programming a Facebook Messenger Bot - FunFunFunction #28
Fun Fun Function
Writing unit tests for personal projects? - FunFunFunction #29
Fun Fun Function
Let's Code a Pomodoro Button - FunFunFunction #30
Fun Fun Function
What editor do you use? - FunFunFunction #31
Fun Fun Function
Arrow functions in JavaScript - What, Why and How - FunFunFunction #32
Fun Fun Function
Is Programming Art? - MPJ's Musings - FunFunFunction #33
Fun Fun Function
Generators in JavaScript - What, Why and How - FunFunFunction #34
Fun Fun Function
Haskell Basics - FunFunFunction #35
Fun Fun Function
Haskell - Baby's first functions - FunFunFunction #36
Fun Fun Function
Is Big O relevant to you? - Q&A Part 1 - FunFunFunction #37
Fun Fun Function
How much are you allowed to Google? - Q&A Part 2 - FunFunFunction #38
Fun Fun Function
Haskell lists - FunFunFunction #39
Fun Fun Function
var, let and const - What, why and how - ES6 JavaScript Features
Fun Fun Function
Why are some programming languages popular? - MPJ's Musings - FunFunFunction #41
Fun Fun Function
Does a developer need to be nice? - MPJ's Musings - FunFunFunction #42
Fun Fun Function
bind and this - Object Creation in JavaScript P1 - FunFunFunction #43
Fun Fun Function
Examples of this and bind - Object Creation in JavaScript P2 - FunFunFunction #44
Fun Fun Function
Prototype basics - Object Creation in JavaScript P3 - FunFunFunction #46
Fun Fun Function
Separation of concerns RANT - MPJ's Musings - FunFunFunction #47
Fun Fun Function
Cellular Automata - Pair Programming - FunFunFunction #49
Fun Fun Function
The 'new' keyword - Object Creation in JavaScript P4 - FunFunFunction #50
Fun Fun Function
__proto__ vs prototype - Object Creation in JavaScript P5 - FunFunFunction #52
Fun Fun Function
Unity game pair programming - Let's code - FunFunFunction #53
Fun Fun Function
Throw out your tools - MPJ's Musings - FunFunFunction #54
Fun Fun Function
Unit tests vs. Integration tests - MPJ's Musings - FunFunFunction #55
Fun Fun Function
Object.create - Object Creation in JavaScript P6 - FunFunFunction #57
Fun Fun Function
More on: Leading AI-Adopting Teams
View skill →
🎓
Tutor Explanation
DeepCamp AI