Hacker School banning “feigned surprise” is absolutely brilliant
brooklynoptimist.com
brooklynoptimist.com
"Bzzzzzt" and "Schoolboy error" are not good peer review comments to hand out to the team.
Technically the guy is very good, but it's toxic and unpleasant.
Work for me is about doing cool stuff, learning new things, and most importantly, helping the people I work with to do their job better and grow as individuals (I feed them donuts on a daily basis ;) ).
With people of different ages it's far harder to work around that, and easier to notice when the chemistry is great. It's fantastic when it works out like that, but difficult or boring if it does not.
But I don't understood the trend of working with people for 10 hours, and then hitting the bar/bowling alley/movie theater/beer fridge to hang out more. As an occasional event, it's great. But as a regular event, it feels like the company is just insinuating itself further into your non-work life, breaking down the boundary until you have no non-work life. No thanks.
I get that, it also happens to be a very popular form of socializing with many people.
To be fair to your point, you can replace alcohol-centric, with bowling, concerts, sporting events, lunch and every single other form of socializing and you can say its a form of exclusion as I can guarantee that no matter what form of socializing you pick I can find someone who it makes uncomfortable.
Honestly sometimes I think the pendulum has swung too far back the other way to inclusion that we are actually exuding people by trying to be all thing to all people and not offending people.
Speaking to your point though, I have a friend who - no joke - hates bowling. Like, he gets violently angry when we suggested going bowling and said he'd rather sit in the car by himself if we went. Some people...
> suggested going bowling and said he'd rather sit in the car by himself if we went. Some people...
I'm one of those people.
What a shitlord. You should have gone bowling and let him sit in the car like an angry 5 year old. If he can't "take one for the team" and at least just have a beer and talk while everyone else bowls, fuck him.
No, I don't want to play monopoly, because my strategy for monopoly can be expressed in two or three lines of pseudocode and it is therefore an incredibly dull game. And if I have to sit through another hour long lecture about a game like Catan that is prefaced with "It's actually really simple; here, let me explain how it works...", I am going to put a power drill through my skull. Don't even talk to me about Magick or pokemans.
Do you know what I do when somebody proposes a board game night? I wish them a good time, politely excuse myself, and find something else to do. Not everyone likes everything, and I should not expect others around me to abstain from activities that I do not enjoy.
And there's nothing wrong with that - people aren't obligated to accommodate everybody.
Creating a toxic environment where people are afraid of him, alas is not in the job description.
This is where strong management can fix things, but if you are at google where tech leads often have no management oversight, you just have to change teams or leave the company.
(The article mentions another one -- excessive confidence and its inverse, ability to acknowledge ignorance and learn from others. I'd also add a variant to that--having and expressing varying degrees of confidence in your opinions. The more experience/evidence-based your opinion is, the more strongly you are likely to be attached. But every opinion in software should have error bars around it, especially given the rapidity of change.)
The inverse of feigned surprise was neatly displayed to me by a coworker recently, "oh cool, today is the day you get to learn about X."
I assume someone has written something brilliant about these sets of interactions.
If what you say is evidently true, you wouldn't feel the need to try hard to qualify it.
It's something we all can make progress on. It makes you smarter.
Example:
A lawyer was cross-examining the doctor about whether or not he had checked the pulse of the deceased before he signed the death certificate. "No," the doctor said. "I did not check his pulse." "And did you listen for a heartbeat?" asked the lawyer. "No I did not," the doctor said. "So," said the lawyer, "when you signed the death certificate, you had not taken steps to make sure he was dead." The doctor said, "Well, let me put it this way. The man's brain was in a jar on my desk but, for all I know, he could be out practicing law somewhere."
If the doctor behaved the same way to a nurse asking about a particular patient, that would be toxic behaviour. All they had to say was "The checks weren't necessary, his brain was severed." Going out of your way to ridicule someone for a misunderstanding is completely unnecessary.
And I never said sarcasm was always appropriate. Obviously, a doctor should never talk to a nurse that way.
I guess it could be read either way. I am not expert in the finest points of a argumentative linguistics. :-)
Contrast to something like. "I had his brain in a jar. But in retrospect, I agree it was improper for me to rush to judgment".
This is solved by explicitly stating when you are being sarcastic, or following up the sarcastic paragraph with a paragraph that non-sarcastically explains your position.
> "The problem with sarcasm is that, when I use it, I'm not putting my own opinion out there to be critiqued, I'm only attacking the other guy's."
I don't think that is actually problematic. There are certain issues that I do not have strong feelings on one way or the other, so I consider my opinion on those issues to be of relatively little consequence. Nevertheless, I am still capable of analyzing and critiquing the merit of arguments made by others.
For instance, if the topic is tidal power stations being placed offshore of expensive private beach property (a topic that I do not care about one way or the other) and somebody objects that the view from those beaches will be destroyed, I might sarcastically quip that all transmission lines near golf courses and country clubs should be razed, because rich people should never be forced to gaze upon infrastructure. I would give this sarcastic quip because, although I don't really give a shit about tidal power, I can still recognize a ridiculous argument when I see one.
If it was being said passively aggressively, I would agree with you (and perhaps you've mainly experienced this interaction that way).
"oh, you're not familiar with X? it's actually pretty cool. it has benefits Y in situations like Z, which might be useful to you here because [...] I'll send you some links to the resources I used to learn about it. ”
Sounds like https://xkcd.com/1053/
Learning to interact with other human beings is a skill many developers seem to think is beneath them, or they are still stuck playing petty primate status games, or that they are so brilliant the other guy needs to adapt to their rough edges.
I still don't like this. There is no need to comment on my knowledge. If I say I don't know something, there is no need to repeat it back to me in any form. Offer resources, assistance, or guidance. If I found something I need to learn, assume that I will now be scrambling to learn it.
It's to signal that the other person is not judging you negatively for that fact.
If I'm not busy, it is cool. Very cool. But if I have to spend hours reading and experimenting just to get to the next phase of some task, not so much. When I'm working, I like to accomplish things and learning can be a speed bump. I love learning new things during learning times. This also helps the learning process as I'm not facing stressful deadlines.
Stated as is, it also sounds like you are offering me the privilege to get to learn something you already know. I get to join your club. I've even heard people claim responsibility for another's knowledge because they were the first person to mention the topic. Same for TV shows, music, and movies.
In some ways, just banning a particular behavior feels a bit too much like treating the symptom rather than the root cause. On the other hand, I can't imagine how to approach this problem more holistically.
More importantly, this rule is simple. Having a simple, strict rule like this will help people help themselves. If they actually want to be nicer—and, I've found, most people do—a few rules like this will help them catch their own bad habits. And over time, it will help them be more introspective. So perhaps it actually is a way to treat the underlying problem.
I've been trying something similar myself, pattern matching on some of my bad habits to try to reduce them. I don't know if it's been working holistically, but at least I feel like a nicer person. So that's something.
Even more importantly, having a simple, strict rule like this encourages people to think along these lines and find other behavioral anti-patterns also deserving of rules.
I never had a formal computer science education and I also tend to do that.I took enough Math, CS and Electrical Engineering courses to be utterly frightened by what I don't know. This means that I also over-estimate what other people know. Oh, Sally has a pure math degree from Harvard, let me be very careful talking about kernels around her. James studied Distributed Systems at MIT, I better over think my system design before I talk to him.
What I have realized is that, this anti-pattern comes in conflict with the opposite anti-pattern. The one that comes from people who hide their insecurities by being over-confident. The one that comes from people whose deepest fear is saying "I don't know". To them, a person who says that is a person who can't code. If you want to progress in your career, you will have to deal/learn to deal with such people. Being nice doesn't really help when the other person is a "Oh, you don't know X" dick. Especially if you are working in something that is a specialized domain where the other person doesn't have the expertise to evaluate you.
“One of the painful things about our time is that those who feel certainty are stupid, and those with any imagination and understanding are filled with doubt and indecision.” - Bertrand Russel [1]
[1]http://www.spring.org.uk/2012/06/the-dunning-kruger-effect-w...
However, another interesting side effect of Engineers who are so damn certain about The Right Way is Product Owners or higher ups who have been trained by such engineers are absolutely confused by a person who expresses uncertainty.
I have started learning the art of keeping the uncertainty to myself or a trusted set of people who are OK with uncertainty and project a calm, clear vision to those who don't.
There's a love hate relationship to this imo - it works if everyone has that same level of ego so it becomes a health level of competition, but this is rarely the case.
Trying to figure out the right balance between deference and confidence is hard
You know, like as if you were in school? And were there to learn?
Too often the surprise is real. There are developers who do not know basics such as loops, conditions, arithmetic and so on.
I use Java for a long time, but I have problem writing 'switch' statements. In Scala it is very powerful so I use it often, in Java it is too primitive, so I always just use bunch of 'if-else' statements.
I am not sure what context of previous example applies to. It could be on someone who claims Haskel skills. But I think every well educated hacker / software developer should know about nomads.
Software engineering is a big job. Software engineers might know about assembly code, pointers, design patterns, UML, functional programming, algorithms, AI, statistics, reverse engineering, driver programming, SQL, NoSQL, matrix calculations and numeric simulation, control theory, cloud scaling, devops, unit testing, XML schema design...
Then, if you think about the things outside programming an engineer might need to know, like marketing, sales, budget control, estimating, project management, user experience design, graphic design, human psychology. And the domain they are working in of course.
That's a lot to know. Even the basics. I don't know the basics of a lot of those things.
Doesn't meeting all these people who don't know things make you wonder what you don't know that you don't know?
Your typo? makes it easy for anyone reading this to put themselves into the shoes of a person not knowing something that they think they are supposed to know.
Students come to college knowing how to add, subtract, and multiply. They can't divide, do fractions, or percentages, but at least they can add, subtract, and multiply.
Forgive me if I'm reading into this too much, but this sentence sounds a little judgmental. I don't understand this mindset. People are always going to learn things at different times. Why not be supportive and helpful instead?
I could empathize a little more if we were talking about fizz buzz or something. But it's not like monads are essential to building great applications. Aren't monads mainly a popular tool in functional programming land? Most developers are not functional programmers.
Secondly most developers are lying about their experience. When I interview someone who claims FP knowledge but does not know about monads, I may sound little condescending . The same applies to CS academic degree. Obviously this does not apply to beginers.
And finally it is totally normal to judge people based on their knowledge. People are expected to know things unrelated to their lives all the time. For example I have zero knowledge of hollywood actors, and people judge me because I do not recognize some George Gloomy guy by a face.
> "Feigned surprise" (when someone gasps and says
> something like: "you don’t even know about monads?")
When someone doesn't know about something it's an opportunity for them to learn, and for you to experience again the wonder and excitement of discovering something new. Don't exhibit your superiority just because you've been exposed to something they haven't, seize with both hands the thrill of learning.I guess that means I don't work with dicks.
Incidentally, I used to get it from my home schooler "friends", too. They would gasp to learn I hadn't read such and such work of classic English literature. Comments about how poor of a reader I must be too have not read Dickins. Will, sorry I haven't helped validate your childhood, but just because I hated Oliver Twist and read Kipling instead doesn't mean I didn't read any classics.
So yeah, just be careful. Feigned surprise ids also a form of exclusionary prejudice. If you can't even be accepting of someone who is nearly culturally identical to you, then your chances are grim for when you meet someone who is really different.
if someone said "What!? You've NEVER listened to this album?", and then removed the album from their shelf and shoved it in my hands, I don't know if that would be in the same class as the passive aggressive type of feigned surprise.
or if someone sees a bag of milk in my fridge and says "What!? Your milk comes in BAGS???"
Usually, when people learn I was homeschooled, the first words out of their mouth are "really? You don't seem weird." I used to reply with, "oh? How many homeschooled kids do you know?" Now I answer, "oh, I'm certainly weird, just not for that reason."
I talked to him about big changes and new features before implementing them to hear his opinion in order to make him feel more involved but in one of those meetings, he said something like: "You wouldn't be able to do this on your own if I didn't help you. Did you learn about this kind of stuff at school?". This was the start of a chain of events which finally led to quitting my job and taking up new one from the beginning of May.
Next time I will make sure that I either won't talk about everything in detail to my coworker or make sure that people understand why I'm involving them in the decision making.
Don't fall victim to that. Be the good teammate you know how to be. You will learn more and get more done than if you keep your shields up. You may suffer from insulting peer reviews short term, but you will be a hero to others who are like you but more timid, and you will learn and grow faster which will make you more impressive at your next gig.
That's why banning specific toxic behaviors work, it encourages introspection for people whose bad behavior is unintentional.
Instead of turning it into a negative thing, you could make it a positive. Like, instead of feigning surprise to shame someone for their lack of knowledge, take the opportunity to teach someone something valuable, if they'd like to learn about it. Encouraging people to think this way and help others is going to be more positive than a negative like a ban, and thus probably be more effective towards positive change.
Say a cofounder who is the classic combination of huge ego and low competency. When addressed about being respectful, a typical response is, "but I don't respect them."
They may have suffered major emotional abuse from a parent and won't be able to correct those flaws easily.
As a recent example, see the Noisebridge debacle over having to actually add rules.
However, if your rules are a bit longer than that, then, IME, it's better to try to come up with a rough heuristic and link in the specific rules as advice on how to avoid violating that - with warnings before the final firing or whatever so that people can see which specific things don't match their perception of the heuristic and have a chance of learning those.
> The goal isn't to burden Hacker School with a bunch of annoying rules, or to give us a stick to bludgeon people with for "being bad." Rather, these rules are designed to help all of us build a pleasant, productive, and fearless community.
To build a positive environment, it sometimes helps to have a list of specific toxic behaviors that should be avoided.
Why treat people like this? What advantage does it serve?
If someone does not know something, it is not an excuse for belittlement. It is not an upperhand. It's an opportunity to teach and learn from teaching. This probably makes me a minority and just reinforces my perspective that human ego can be fundamentally broken and requires time to healthily construct.
You seem to have answered your own question in your subsequent remarks. The feigned surprise is a habit of people with very low self esteem. They constantly seek to reassure themselves by trying to place others (usually people whom they fear are more capable than they are) into a position of lower social status.
If you are on the receiving end of a feigned surprise attack, think back through your interactions with the attacker: you will probably remember something recent that revealed that you had some skill or knowledge that the attacker lacked. From that moment on, he was looking for a way to reassert his social status.
At least it's one of my theories. I find it marginally more common in people with poor verbal skills.
It's a subset of the 'we judge others by their behaviour, and ourselves by our intentions.' phenomenon.
Hacker School is positive. When I had a bug that I didn’t
understand and asked one of the facilitators to help me out,
they would frequently say “Oh, interesting!”. The attitude was
“Oh, is something not working? How delightful!
A learning opportunity!”.
source: http://jvns.ca/blog/2014/02/15/how-was-hacker-school/I've met people who claim to be 'experts' in C++, but (for example) don't know how to use STL algorithms.
So if you are genuinely surprised, a natural reaction would of course be to display this through verbal and nonverbal reactions. But at that point (or even before, as a matter of emotional awareness), people should probably stop and think for a bit what sort of reactions they want to cause in other programmers.
Is the guy wrong (in the sense of giving the wrong impression) for calling himself an expert even though he doesn't know some STL features of C++? Is this something that should be communicated to him? Would it have a net positive effect on your working relationship if it was? Do you feel threatened by an expert who doesn't know this feature? Is there a possibility that you are wrong and that he is only missing a specific feature that you yourself have worked with but is not necessarily stanard? Is your (overt) surprise meant to evoke a certain reaction in the other developer? Would it make your working relationship easier if you hid your surprise instead of making a show of it? Etc.
I hope this comment doesn't come across as condescending, but this sort of interpersonal communication is hard for a lot of programmers I know (at one point including myself). Being aware of these things can help smooth over rough points (and improve productivity, even if you are looking at the purely utilitarian perspective and ignoring general happiness).
I dislike the use of the word 'expert' when describing my skillset. Over the years you begin to realise other people can be more expert in different areas within the same knowledge domain.
I find the willingness to learn to be more important.
In general, #include <algorithm> is a bit worrisome, because it usually indicates someone is trying to be overly clever with C++. On the other hand, if the codebase is written in that style, then the whole codebase should be consistently written in that style. The inconsistency is the worrisome part: either use it everywhere or nowhere.
Anyway, STL is pretty massive, and knowing all of it isn't the same thing as being a C++ expert. Knowing what to avoid is almost as important as knowing what to use.
for (const auto& element : collection) { }
What's wrong with <algorithm>? I use it all the time for sort, swap, and random_shuffle comes up more frequently than I expect.
Unfortunately, the gamedev industry will probably be stuck with pre-C++11 for another decade.
> I forgot that sort was in <algorithm>
Uhm, sillysaurus3, could I see you in my office please.
:-)
If they get a mild panicked look in their eyes and go straight for string, vector, and iostream, my spidey-sense starts tingling.....
EDITed for grammar
Frankly, it's often schools' fault to teach students C++ early, creating that genre of expert C++ programmers, by instructors who generally don't know better.
I remember someone from a C++ shop say: "C++ expert in CV? Expect the gloves to come off in the interview."
I worked with people who work on C++ compilers and static verification tools. They wash their mouths after saying "C++ expert" ;-)
People that put expert on a résumé are just asking for a beating in interviews when the hiring company has a strong team.
Sounds like another example of toxik behaviour to me. I've been working in C++ for 20 years, yet ther are certainly advanced techniques that I could not roll off without errors on a whiteboard and corner cases you catch me on during an interview. What should I put down in my CV? 'vague knowledge of C++?'
I fail to see how 'taking the gloves off' and 'washing their mouth' is substancially different from 'feigning surprised.' It's the same contempt.
In many such cases, I've been quite surprised to discover just how little I know, even after many years of using certain technologies. And I'm thus very slow to wonder how an expert could not know something. We all work with a subset of a programming language, and while I might expect or hope that all experts would know all things, that's not the case.
To my mind, it's more important that someone knows how to ask questions, read books, accumulate new knowledge, and then assimilate it into what they already know than to come with an encyclopedic understanding of a technology.
In the STL, there's an 'algorithms' package, that gives you a whole bunch of useful stuff: http://www.cplusplus.com/reference/algorithm/
C++ is huge.
http://thingist.com/item/4372/
Not exactly the same, but talks about this attitude prevalent among tech types that encourages belittling of those less experienced/knowledgable.
Names are so important!
My solution has been to be more proactive about it. If I see a topic coming up, I just ask "you know about (ABC)?", which gives the other person the option to say "yes" (instead of getting something explained they know) or "no", which is a good start to an explanation.
I was quite surprised to see that by "feigned surprise", the article actually meant something along the lines of "really, you expected an integer operation to return NaN?". The article does explain why people might say that, but I still have a hard time believing it. Why would anybody want to say that? It's not helpful at all.
I guess I must be lucky never to have worked in the bad working environments described by the article.
I think it's just a side-effect of being in an insulated position and knowing a ton more about the subject than most people you work with.
The way I read the article (and think about this topic in general) is pretty close to the way I perceived the part of your response that I quoted.
Essentially it often combines explicit or implicit generalized language (anybody, nobody, everybody, etc) with an assertion that something is "obvious" or in some other way "beneath" the person saying it. It's not necessarily that people want to say it but more likely that they are unaware of what they're saying for whatever reason. By giving it a name Hacker School is letting people realize the topic and, hopefully, reducing occurrences.
IMO "Feigned Surprise" is a bit of a misnomer but I haven't come up with anything better to call it. It may be more correlated with imperfect articulation of people's assumptions than actual surprise.
They realised that this stops those children from asking questions, not jist from answering questions.
One technique used to overcome this is for the teacher to nominate a pupil to attempt an answer. It doesn't matter iftheu don't know - that's part of the process.
A side benefit is the teacher gets more inderstanding of any mosconceptions the pupils have.
There are lots of subtle things happening with teaching and it's a bit worrying that we don't have much research or we don't ise the research we have.
I know that I was in a class where the teacher followed this procedure. I _dreaded_ the moment when I'd be picked even though the questions were usually simple enough if you read for the class and paid attention. It turned my insides to water every time. Absolute dread. Made an otherwise fun class scary.
That would probably cost you someone's friendship, but if they're pulling this kind of stunt on you, I'm not sure that they were your friend anyway...
What made it particularly irksome was that they heavily market themselves both internally and externally as being above such things. The cognitive dissonance really grated on me.
It's no different from the playground bully who goes home and gets the shit beaten out of him by his drunk-ass dad. Because he can't wallop his father, he takes it out on the other kids. These asshats (the ones who feign surprise) can't do anything about the VCs and product executives and idiot fuckups who make the life of a typical programmer so terrible, so they take it out on other engineers whom they perceive as marginal: women, minorities, people over or under the group's age range, and new entrants to the field.
However, even your most obnoxious brogrammer is not likely to be in the Klan. He probably isn't even a bigot. He's a bully. There's a difference. Bullies attack those who are politically weak. It so happens that politically weak people are often in a minority in that environment, but I don't think gender, race, or age are explicitly part of their selection process.
The archetypical bully brogrammer doesn't wake up and say, "after my 10:30 protein shake, I'm going to direct a few microaggressions at female programmers. Oh, and Mark turns 40 on Thursday, so I need to put him on my rotation." It doesn't work that way, obviously. They pick on the weak-- whoever that may be, and it often changes-- because they're picked-on from above and it's their only way to restore their battered confidence.
Typical tech bullies avoid and ignore me because they know I'm good at what I do, and better than most of them. The only time I face adversity from a programmer is when I make him insecure (which doesn't require that I be better, although that's often the case.)
Not knowing about something is not really a negative feedback point
Funny, in that an article about not making assumptions is packed with them, not the least of which is the assumption that someone who is visibly surprised when you don't know something is expressing some kind of superiority or belittling.
Doing it in a comedic fashion doesn't help, it's just bullying.
Peer: Synchronized? Me: I'm sorry, you've crossed over into an area that I expect you to understand on your own.
That kind of room-silencing confrontation makes you seem like way more of an asshole than answering their question but with a raised eyebrow or feigned surprise.
In a meeting with a peer (rather than a training course/academy situation) you'd presumably tell them that that's fairly basic stuff that you don't want to derail a meeting with, and that you'd point them at some resources later.
That's not how I'd mean it at all. Maybe I'm overanalyzing our folkways but in general it seems to be more polite to communicate something unpleasant in a way which the other person can pretend to not have noticed. Twitching your nose when you know they're looking is more polite than saying "dude you've got BO." It allows you to gloss over the unpleasantness and continue the conversation.
If they point me in the direction of some resources or help me learn it I'm going to respect them more because it makes it clear they care about their craft. They don't feel the need to feel superior, they'd rather have a peer on their level.
My point really is just that different people are motivated in different ways and what may motivate you has the opposite effect on others.
Also see http://youarenotsosmart.com/2011/08/21/the-illusion-of-asymm...
Clocks for one, file content replication for another, version numbers of software a third.
I have more of a problem with the people who think they know something and reject it out of hand (typical executive attitude) than those who admit they don't. You and I, as well, once did not know what Lisp is.
If you continue to find them asking questions that suggest they spent most of their development career under a rock, present those concerns to your employer. Help them make a decision whether or not this person is able to perform at the level they need to.
If it's a one-off thing though, and they seem otherwise fairly competent, then it's a good thing you didn't act like a jerk because now the person doesn't resent you, and they won't have to ask you what Lisp is again.
Source: I've worked with several developers at a level much lower than I expected, this was in one case how I wished I had reacted, and in two other cases how I did and it worked out well.
I've been this guy. There was a good long while when I would just bob my head through stuff that I didn't understand at all because I was afraid of being humiliated in public, and then go back to my desk and spend hours trying to figure out what I was supposed to be doing. I was lucky enough, a few years back, to run into a very understanding mentor who put some effort into deprogramming me and making it clear that it was okay to ask stupid questions.
Making people feel small for being ignorant isn't just rude, it actively destroys productivity.