6 ms·
I recently read the book "How to Win Friends & Influence People", bad title great book. My main take away from this is I've been talking to people really badly
by swalsh 12y ago
I recently read the book "How to Win Friends & Influence People", bad title great book. My main take away from this is I've been talking to people really badly for the last 27 years. I wish I had read this book in middle school.
But this blog reminded me of some of the concepts from the book, its far more productive to give positive encouragement than to give negative feedback, and just adding a complement isn't enough if you follow it with a "but".
"Hey pretty cool program! Its a great start. I bet we can make it run faster if we changed the way files are imported to something like this... nice work"
will get better results then this
"Hey pretty cool program, but you're reading in files wrong"
which even that is better than this
"You're reading in files completely wrong, try googling for a better solution" which unfortunately among engineers seems to be the most common reply.
- cperciva 12y ago"Hey pretty cool program! Its a great start. I bet we can make it run faster if we changed the way files are imported to something like this... nice work" I usually hear this referred to as a "criticism sandwich": Criticism surrounded on either side with compliments.
- bstamour 12y agoIn the martial arts community we call this "praise, correct, praise."
- gagege 12y agoWhat's weird is that even though I know this is a "trick" I still want people to talk to me that way unless I specifically ask them for the hard truth.
- artursapek 12y agoProgrammers tend to incline towards efficiency. I think that's why we often skip the bread and deliver only the filling. IMO there's a big difference between a criticism sandwich and tactful criticism.
- LoSboccacc 12y agoon the other hand, would you like to work with someone that doesn't take criticism well and whom jumps on the defensive about random pieces of code, of all things?
- npizzolato 12y ago"Inclining towards efficiency" might be their justification, but I think the truth is closer to many programmers simply lacking tact.
- sullyj3 12y agoS/he said, bluntly.
- pharke 12y agoDelivering constructive criticism in a polite and non-abrasive way is more efficient. If abruptly telling someone their wrong causes them to take offense to the help you're trying to provide, they'll likely disregard what you've just told them out of pride or spite and you'll reduce their willingness to work with you on future problems. By being polite you're ensuring that the message you're sending gets incorporated into their strategy for tackling that problem and making them feel comfortable discussing other issues with you. As programmers, we have to learn that 'programming' people is very different from programming computers.
- iagooar 12y agoEfficiency is one thing, being a douche is another. Programmers are still human beings and while they might tolerate some harsher comments, they still affect them. Efficiency yes, but not above all.
- grecy 12y agoCanadian Snowboard Instructors call that "Positive, to and try" i.e. That's great! To make it read files faster, next time let's try xyz.
- switch007 12y agoWe Brits are the masters of allusive and indirect speech, and I would automatically automatically strip of both pieces of bread translate that to "you're reading in files wrong".
- cperciva 12y agoYes, I would automatically parse the "bread" as being boilerplate politeness -- but as with most forms of politeness, I would probably feel differently about the speaker if it wasn't there.
- r00fus 12y agoNot everyone auto-parses. Unless you really know who you're talking to, it makes sense to add the "bread/condiments" to the sandwich.
- thothamon 12y agoI think you have to take each individual differently. Most folks react well to the criticism sandwich. Someone like you might prefer a more direct approach, as long as it is not phrased in a mean way. At some point in my career, I stopped taking criticism personally. I just realized I was wrong so often that upholding the pretense that I knew it all was too hard. For that reason, I prefer direct suggestions. If I was teaching a child or a new beginner, I would start with a lot of praise that they're even trying. I want to get them some early wins to help boost their confidence.
- shanemhansen 12y agoI think the key is to give an honest compliment on not a bullshit one. So instead of "great job on the thing! but ..." maybe "great job finding and diagnosing the root cause of that problem, that was pretty hairy, but I think there's a better way to fix the root cause".
- AceJohnny2 12y agoI like teaching. I don't think I'm amazing at it, but I like sharing knowledge and experience with my friends and co-workers and see them improve, or just sometimes for the abstract sense of helping. Of course, sometimes I fall flat and come across as arrogant or condescending, but I hope that's rare. I read "How to make friends" a long time ago, and I apply those rules diligently to my interactions with people. Recently though, I've been assigned a guy to help me with one of my tasks, managing the build pipeline. This requires a wide range of knowledge about unix and scripting (Bash, Perl AND Python. Yup. On top of Makefiles, of course). The guy doesn't know how to use a command-line. I'm surprised to find myself to be very unhelpful and curt with this guy. He's the unlucky recipient of my resentment at the amount of effort I will have to put in before he can actually become remotely helpful. Of course, it doesn't help that he's in far off timezone where I'd have to stay up late to help him, and that I have trouble getting direct answers from him about his knowledge level. The communication and experience gap is too large. Anyhow, this is just my two cents relating an experience to show how a seemingly normal and friendly human being can revert to angry "RTFM"s.
- irremediable 12y agoVery well said. It's wrong to be a dick, but it's also the natural response to a lot of stressful situations. Think of trying to give tech support to relatives, for example. It's too easy to get annoyed with other people, and this is especially true when you're under pressure and they're MEANT TO BE HELPING, DAMNIT! FWIW, I suspect that you're much more experienced in this stuff than me, so it's a bit arrogant for me to offer a suggestion. But still, I'm going to offer one. Is the guy quite self-motivated? If so, one thing that might help you is to spend some time curating good learning resources for him, and then linking him to them. It's essentially the ethical version of RTFM. You help him figure out what the useful "M" actually is, and he'll get himself up to scratch from there. Just a suggestion, anyway. :)
- AceJohnny2 12y agoThat's actually the route I've been trying to follow, but that's where the experience gap becomes a problem. I can give him some ressources on how to use Git or learn Python, but it's been so long that I don't even know where to start for the CLI :|
- var_explained 12y agoWhat's interesting is that XKCD shows replies that are even worse than your last reply- even suggesting Googling provides a course of action. XKCD's more like "My grandmother could read files faster than that."
- MichaelGG 12y agoDon't you feel patronized when people do that though? Be as rude as you want to me, as long as you're correct. As for myself, I tend to not call out the positive parts of something, because that's sort of implicit. I would not bother to point out that the file reading code is wrong if the whole thing was broken. I admit I'm probably incorrect here, but I notice people try this "say something positive" and it really comes off wrong. Or maybe I don't notice when they do it well.
- dropit_sphere 12y agoI strongly agree. Sentence formulas are a hack. The actual advice should be, believe something positive. Specifically, believe that the person is basically smart but just didn't know X. That leads to natural utterances like: "Sweet! Uh...that run time is pretty terrible though. Don't worry, let's see what's up with that. (Twenty seconds later:) Ohhhhhhhhh, ha, ok, check this out." The novice coder knows they suck. They're not really worried about that because, well, they're still here. What they are worried about is that you'll write them off. So don't.
- zminjie 12y agoI think it just comes down to different personalities. I'm just like you. I tend to get agitated when people try to sandwich their criticisms or compliment me for irrelevant things when I just want them to get to the point. I'd very much prefer someone just telling me "your code is shitty and here is how you'd fix it and why." Unfortunately, people that take criticisms like us seem to be in the minority.
- TeMPOraL 12y agoThat's why I personally declare Crocker's rules[0] - if you want to tell me something, I allow you to skip pleasantries and "social hacks", and just get straight to the point. [0] - http://wiki.lesswrong.com/wiki/Crocker%27s_rules http://wiki.lesswrong.com/wiki/Crocker%27s_rules
- davidgerard 12y ago
- eranation 12y agoYes! this book changed my life. It is amazing how many are not aware of the amount of criticism that they output, willingly or unconsciously.
- bentcorner 12y ago> "You're reading in files completely wrong, try googling for a better solution" which unfortunately among engineers seems to be the most common reply. I can empathize with this because I feel like saying this all too often. I guess it's a mentality of "teach a man how to fish". I guess I could use a reading of "How to Win Friends & Influence People".
- staunch 12y agoThe main difference in your example is talking about the code instead of talking about the person.
- Swizec 12y agoI too recently read that book and loved it. But (yes, I buted), I think a lot of people go overboard. I've seen people get so bent up around coming off as nice and encouraging, that it becomes difficult to even understand what they want from you. Or worse, it comes off passive aggressive. I'm not sure there's a better fix for that than practice.
- zachalexander 12y agoIn short, "yes and" instead of "no" or "but".
- oldmanjay 12y agoThis is helpful for sure, but it's also very useful to work on having a thick enough skin to take insulting feedback in a positive fashion. After all, the only way someone can offend you is if you let them.
- Lawtonfogle 12y ago>This is helpful for sure, but... You did this on purpose, didn't you. ;)
- 4gotpassword123 12y agoI kind of get a kick out of your response. You've offered a compliment, then suggestion, then a platitude, while telling someone that being rude is acceptable if it's technically correct and seemingly disagreeing with the previous poster. It's sound advice, to have thick skin, but you've just shown how easy it is to give corrective feedback in a tactful way. Still good advice to not let people offend you though.
- tthrowaway 12y agoI'm a junior dev, I have a ton to learn and I don't for a moment think I know more than our senior dev. But working with this guy, and trying to learn from him, is a nightmare. When I ask "why should I do this rather than that?", I either get a muddy explanation, or none at all. Worse still is inconsistency. Just recently I was working on a project, went through several reviews without comment on the approach, was told "almost done just fix these tests". After waiting a week for review of those last tweaks, the review was "this is fundamentally flawed and shouldn't be done this way at all." Now I'm not saying that's wrong, but it would have been better to hear that three weeks ago. Nor is the explanation of _why_ it's flawed the slightest bit clear. Further, the new approach does _not_ support the business need motivating these changes in the first place. I am figuring out how to support that need within the directed approach, but it is harder than the first design would have been. Again, that doesn't mean I was right -- sometimes there are choices where you put the ugly stuff. These changes are pretty deep in our architecture, and so touch a lot of code. If being clean there means that some top-level stuff is more complicated, that is probably the right trade-off. But it would be nice to have a "sorry, I didn't think this through soon enough." And no, I am not the idiot I'm made out to be because I didn't, as a junior dev, immediately and fully understand how all the pieces should fit together. Nor is this a two-way street. I've had moments where I've pointed out what seems like problems, been told I'm wrong, or ignored . . . and then find that the issue is quietly fixed a few days later. We do some stuff that is just flat wrong because that's how he likes it. I'm not the only one, the others with more experience than I have similar problems. I'm learning. The guy has good instincts, so his critiques usually lead in the right direction, so I roll with it and figure out the principles for myself. But it is absolutely zero fun working with this guy. I've become averse to submitting code for review, because I never know when the process will take 180 and stuff that was fine becomes crap. And while I think I'm getting better, I have to figure out how to build confidence in those skills, because I'm not going to get it from this feedback loop. Probably that will be working on my own projects, taking what I'm learning and using that to make them better. And at some point I'll move on. Tough feedback, even insulting feedback, is ok with me. I'll work with it. But if you're going to be tough, then you have to be fair, you have to be clear, and you have to be right.
- zura 12y agoHah, nice to hear that famous book (which I've never read so far) coincides with my understanding and behavior. The only motivation for me is that I value people and their feelings much more than any other thing. To be honest, it is not planned or contrived... It is just a natural feedback.
- laacz 12y agoWhen I read that book by Dale Carnegie one think struck me. Aside from being well with words and advice he never succeeded in his own life. Two divorces and almost no friends at the end of his life. General advice is easy to give. There are millions of tiny details which tend to guide you away.
- thothamon 12y agoSources for that? Wikipedia doesn't mention a divorce with his second wife, Dorothy Vanderpool.
- shanemhansen 12y agoI'm an engineer, and I've gotten so much benefit out of that book. I read it cover to cover several times a year. It's very corny, but it reminds me of several things I often don't conciously think about when interacting with people. Sometimes reading that book is the only way I can get through the day and interact pleasantly with people. One reason engineers can be unintentionally critical is that their job is often "find what's wrong with this thing and make it better". It's rarely "find what's right with this thing and congratulate someone". It takes me quite a bit of mental effort to switch from nitpick mode to encouragement mode. I've tried to consciously balance my criticisms by leaving a few honest encouraging comments in code reviews like: "thanks for improving test coverage here", or "glad you handled timeouts and retrys, this api has given us grief before".
- davidgerard 12y agoMichael Meeks has a good example of how this is supposed to work in LibreOffice: https://people.gnome.org/~michael/data/2011-10-13-new-developers.pdf https://people.gnome.org/~michael/data/2011-10-13-new-develo... (5 page presentation) Compare pages 3 and 4.
- jqm 12y agoThe problem with the "win friends and influence people" method is that some people just listen to the positive parts and go right on their way never improving. We aren't selling cars nor running for office where "win friends" is particularly useful. I'm also not saying we should be deliberately nasty or personally demeaning. But we shouldn't let shit pass just to be nice either. There is far too much of that nonsense in the world, and the net effect of it is a theft from everyone. We should try to be our best. We should ask others to be their best. We should always be positive and helpful and teach others what we can. But we should also be direct when something is wrong and we know better. This in the best interest of the person, the project and the organization. The ability to give and to accept honest criticism with the goal of improvement is unfortunately strikingly rare. When we don't know better we should keep our mouths shut rather than bluffing and blustering our way along. If I had 10 bucks for every loudmouth know-nothing trying to impress everyone or score political points I have met in life I'd be rich. The tech scene is particularly full of these kind of blowhards in my experience. Some people have a hard time telling the difference between positive honest criticism and ego driving showing off. And some people just plain don't know what they are talking about but talk anyway. This kind particularly needs to be called out in the most direct manner possible for the best interest of everyone involved.