Reading that post and the blog post linked, I think I see computer science programs in a better light now. At least in an automata/assembly/algebra class you're not going to find people who think they're hotshots for knowing the material. Most people struggle through and then go find spare time to learn programming. I'd be really down on myself for not knowing all the latest programming trends in hacker school, kind of like now when I read endless Javascript blogs about new tools, but the difference is I know enough now to know what's important to have a grasp on and what's noise.
The article is pointing out a phenomenon related to interpersonal relationships, not technology. Part of interacting with other developers is nonverbal communication (or subtext) and the reactions it causes.
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).
Gross generalization here but, I think developers are probably the group of people least responsive to subtle non-verbal communication. Lots of them seem unable to interact with the opposite sex successfully (and the two are related believe it or not).
My response to that is "Hmm. Interesting". Overt surprise, feigned or otherwise, is rarely a useful expression of emotion in my experience. This has the added benefit of making you more approachable to those who have legitimate questions.
I'm guessing this may not have been something they have needed to use.
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.
I'm a C++ expert, but I've never touched std::for_each, for example. (I could learn it in about two minutes if it became necessary to know, but it hasn't ever been.)
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.
Those are all fine. Actually, I forgot that sort was in <algorithm>. I was just recalling some of the horrors I've seen due to pre-C++11 fanciness. There seems to be a temptation for C++ programmers to overuse clever tricks. Luckily, with C++11 fewer tricks are necessary.
Unfortunately, the gamedev industry will probably be stuck with pre-C++11 for another decade.
My brain space is limited, so I use it sparingly. Memorizing which header file provides which function is something I've left out. That's what IDEs and Google are for. ;)
When I used to do C++ interviews more often, and I encountered someone who believed themself to be a "C++ expert" I'd sometimes pull up: http://en.cppreference.com/w/cpp/header and ask the candidate to pick three headers from the standard library that they found interesting and tell me about their contents, how they can be used, what the pitfalls are, etc.
If they get a mild panicked look in their eyes and go straight for string, vector, and iostream, my spidey-sense starts tingling.....
Claiming to be an "expert" in C++ is one of the biggest red flags I can see in one's resume. The majority of people I've seen making that claim think of C++ as "C with classes", hence not even having a clue about the scope of C++, and most likely will create a massive number of memory leaks in the face of exceptions that they don't ever imagine ("hey, I put delete there! It'll get freed for sure!").
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.
To be fair though, CVs are often written for HR people and not for Techs. And if, even though you have 20 years of experience, you still, correctly, state you know "some" C++ but are not an "expert", you're out. Because HR people are looking for "experts". That word means something entirely different to a regular person than it does to some hardcore developers.
I wouldn't suggest listing "some" or "expert". Just stick to facts and not self-assessment. We can assess in an interview. If you want to emphasize one skill over another, list it more prominently/frequently, or quantify it with years of experience.
People that put expert on a résumé are just asking for a beating in interviews when the hiring company has a strong team.
Also CVs are often vandalised by recruiting agents. I'm considering starting a policy of swapping CVs at the start of an interview so that they can see the CV I gave to the agency and I can see the CV the agency gave to them.
Understood, but I'd disagree with that point. Perhaps I wasn't clear. I don't know of any recruiters or HR people who would be likely to base their decision to interview someone on a self-assessed "expert" listing on a resume.
Fair point. I'd still just put "20 years of C++ experience" or some other objective fact ("wrote a compiler".) If that is not enough then it is rather safe to assume the company is not a good fit. Disclaimer: I admit I'm probably in the top percentile of c++-expert-cringeness :-)
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.
I spend about half of my time teaching programming classes, and I love it when my students ask me about something, and I have NO IDEA WHATSOEVER what they're talking about. If I can do some quick research, and answer them on the spot, I do so. But it's not unusual for me to give myself "homework," and then on the next day of the course I'm teaching, to tell them what I've learned.
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.
I did many years of serious C++ work without touching the STL because the shops I was at had their own versions of the STL (and for very good reasons given their particular domains).
Why not just have a rule to be nice to each other? Personally I wouldn't like a climate of micromanaged human interaction. But of course for others it might be different. I am not saying they should change their policy, just that it would be off-putting to me.
If your rules are a very small set - 3 or so - then you can reasonably expect people to remember them all.
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.
Feigned surprise may not be seen as "not nice" by those doing it. It's a combination of superiority, surprise, and interest in the other person. Not everyone was aware they were being a dick
From the Hacker School manual in which these rules are spelled out.
> 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.
Different rules have different punishments. It's in the nature of rules. I very much doubt that anyone at Hacker School has been kicked out for feigning surprise.
What you're describing was my first reaction as well, but in the Hacker School Manual [1] they bring up a smart point that I hadn't considered: 'almost nobody sets out to be a jerk or annoying, so telling people not to be jerks isn't a very productive strategy'. Which is why they need the sort of lightweight rules/guidelines for specific types of behavior.
There's a set of human interaction anti-patterns like this.
(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.
Pay close attention to guilty words like: just, always, never, everything, nothing, all, none, very, actually. They are an alarm that indicates you are going to an extreme to justify a position.
If what you say is evidently true, you wouldn't feel the need to try hard to qualify it.
Interesting that you pick up on those words, as I have noticed that whenever my team leader asks me for "just a small change", it usually means he hasn't bothered to think it through properly, and it will involve a lot more thinking or work or maintenance in the long run than he imagines.
"having and expressing varying degrees of confidence in your opinions" is something I think people should really look at in themselves. Both in the way the communicate and the way they think. Realistically everything we know to be true is really probably true and probability is of various degree.
It's something we all can make progress on. It makes you smarter.
One anti-pattern I particularly hate is sarcasm. For some reason, people in many online communities seem to think that they can't do without it — even that it somehow defines their personalities. But whenever somebody posts something even remotely against the grain, and the top-voted reply is in the vein of "Yeah, because that's a real problem", there's just nothing more I can do in that thread. It's a conversational dead-end.
I will defend sarcasm. Because sometimes, the only way to see the stupidity in your argument is to hear it said back to you. And yeah, it stings a bit. All the better.
You don't need to mock someone to convey this. Just assume it was a brainfart (which it probably was): "Are you sure that's what you meant to say?". If they were actually wrong, they'll feel embarrassed enough about it without you mocking them as well.
I'm not talking about criticizing who misspoke. I'm talking about pointing out the stupidity of someone's poorly formed opinion, that may not be obvious to them.
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."
That's not really a fair example. It's a court so appearances (regrettably) actually matter, and the doctor will most likely never have to work alongside the lawyer ever again. (Not to mention a lawyer in court will be completely mentally prepared for insults.)
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.
Appearances matter in way more than court. There's also the "court of public opinion." Sarcasm is a powerful tool to criticize whats wrong with society, and it would be a shame if we banned it completely because a few bullies abused it.
And I never said sarcasm was always appropriate. Obviously, a doctor should never talk to a nurse that way.
That's mockery, but not the common use of sarcasm. Sarcasm is making a statement that is the opposite of what you mean, and using vocal tone to convey the "NOT". It's plain rude in spoken communication, but fundamentally impossible in text. People don't understand that when they hear their writing inside their head, where they apply the intonation.
I thought about that, but decided that "for all I know" was a carefully worded expression of "it is contrary to the logic of the known Universe and all who claim to be guided by reason, but I invite you to try to claim that a miracle occurred."
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".
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 can change my argument at will and claim "I was only being ironic" with prior claims.
> "I can change my argument at will and claim "I was only being ironic" with prior claims."
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.
There are a few problems with this. First, sarcasm is often used in an "amirite, guys?" kind of way, as a means of reinforcing the status quo in a community and shutting down dissent. For example, you'll see this in pretty much any thread on r/games that discusses sexism or violence in the videogame industry. Secondly, I've found that when an argument seems stupid to me, there's a good chance that I'm missing something. Whether we realize it or not, we all live in very insular bubbles, and often we lack the context and/or empathy to fully understand an issue from the other side. Third, you don't change hearts and minds by being an asshole. It's, like, chapter two of "How to Win Friends and Influence People". Sarcasm is kind of, well, masturbatory in that sense.
I don't think what you're describing is a problem with sarcasm, it's a problem with people being dismissive. Sarcasm is just how they choose to express it. It wouldn't be any less toxic if that person said "Yeah, that's not a real problem" instead.
This is something I am trying to change in myself. Especially because the amount of time I spend being sarcastic online has started making this behavior spill over into real life. It is a toxic, toxic behavior that is justified only by people who conflate it with peacocking as a smart person. I don't need to do that. I would rather avoid destroying relationships over that.
what about feigning naivete. i see that happening sometimes. i've seen a guy get bullied and bullied in the workplace and do the work of several other coworkers for a long time. And then one day they needed something really important done, and they had no clue how to do it, though they have been taking credit for his work for like a year, they cozied up to the guy and asked him for help again. he said no that time.
To my ear "oh cool, today is the day you get to learn about X." is even more patronizing than the feigned surprise. Feigned surprise may have a tone of superiority, but at least it means they respect my knowledge enough to be surprised that I don't know.
YMMV, but I find this has more to do with the attitudes of the participants. Knowledge is not a zero-sum game, I hope to learn new things every day, and want the people I work with to help level me up. If someone wants to take the time to share their knowledge with me, I win.
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. ”
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.
>oh cool, today is the day you get to learn about X.
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.
I fully understand the intent, but it doesn't come across that way. Assume that I will learn it, and I will assume you aren't judging me.
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.
One of the reasons I'm leaving my current role at the end of the month is due to this egocentric development approach from the team lead.
"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 ;) ).
As an aside, if you go for an interview and notice that each person has a Fail Buzzer (I never had one) as a 'joke', you should probably not accept a role if you don't have a thick skin.
I'd love to work on a team like that to be honest, all of the places I've worked at we haven't so much as even gone to the movies because of the age differences. One married w/kids, other 20-something, other Vim warrior from the 70's, etc.
I can relate! Sure wish more teams would do things together - *despite the age differences. I'm 20 yrs older than some of my coworkers, but we still have similar interests. And a good beer is a good beer, no matter how old you are! ;-)
Age differences shouldn't be held so high. I eat lunch at work with people 3x my age, and we have plenty in common. We often learn things from each other, and they're very valuable friendships. I wouldn't hesitate to invite them to do something which we share an interest in.
I find it is easy to get along with a wide range of people of the same age, probably because of similar circumstances and concerns (get education, find a place to life, get a family etc), even if the chemistry is not that great.
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.
Alcohol-centric social interaction is another form of exclusion. There are few things I find quite so unpleasant as sitting in a noisy bar with people who are getting progressively inebriated.
> Alcohol-centric social interaction is another form of exclusion.
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.
I think the point is to recognize that some people, like the person you are replying to, my have an issue with drinking as a social activity. Not that you shouldn't have that as an option, but you should be aware if someone in the group is made uncomfortable by that.
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...
> 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...
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.
The problem with alcohol is that it is nigh-omnipresent and in many places it is so integrated into the culture that yes, you are automatically excluded if you don't drink. This is different from bowling night because you probably don't bowl AT work, and you probably don't bowl at every single outside-of-work socialization.
Not to mention that for religious or personal reasons some people don't touch alcohol. One project I was involved in had two mormons and two muslims. Hate to exclude them from the outings, especially since the PM was one of the mormons. On the non-religious side, I grew up in a household where I never saw alcohol because my mother and father each had alcoholic parents and they never wanted to have anything to do with it. I never knew anything about alcohol and never even stepped foot into a bar until I was 25.
I don't feel this way about drinking, but I think I can nevertheless commiserate with you because I do feel this way about another pastime/group activity that seems to be becoming distressingly common in the tech circles that I find myself in: Board Game Night.
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.
You should try Pandemic. I'd almost consider it team therapy. Yes it's a board game but feels like a condensed team exercise weekend where you end up building bridges (metaphorically and physically).
Pandemic is good in the sense that it is exercise for professional communication skills in a toy environment without business consequences. After you play you should thing about what the experience teaches you about your team. Especially if someone has a very different confidence/leadership/cooperation style in the game than at work projects.
I would say that your 'team lead' is not "very good" because part of being team lead is ... leading a team.
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.
Feigned surprise is petty bullying by people who get their asses kicked by even nastier bullies: the business assholes who run this industry because, as engineers, we're absolutely terrible at fighting for our own interests, and have let ourselves become a colonized people who mostly implement others' shitty ideas and are paid in table scraps.
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.
If someone's a member of the Taliban or the Ku Klux Klan, it's likely that his issues go deeper than "mad at the boss man".
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.
Actually, no. The "protein shake" anecdote was just me throwing bro stereotypes and tech-sphere complaints together.
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.)
I struggle with this anti-pattern. I used to use it, but I know how bad it is. In bad moments, it still slips.
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 am very much against feigned surprise, but this just a symptom of the underlying personality. Ban one thing - and the personality will find other ways to manifest itself. It's better, in my opinion, to just have an unspoken rule like "respect your coworkers" and make sure to help arrogant people improve their social skills (sometimes those people don't even realize that their behavior is causing grief to others).
I think sometimes correcting the symptom leads the person to realize that they are doing that and correct the problem. It's easy to behave like a jerk without realizing it and a lot of people who come off as arrogant don't imagine themselves as being so. If you tell them to respect their coworkers, it doesn't have the same impact because it not actionable (they already imagine themselves as being respectful).
That's why banning specific toxic behaviors work, it encourages introspection for people whose bad behavior is unintentional.
I think the tone of how you address such a "ban" is incredibly important in encouraging that introspection. Ban is a pretty harsh word; it makes it seem like there's some kind of punishment or consequence should you feign surprise. Instead of "banning" different kinds of interaction, they could simply encourage their students to take those instances as an opportunity to help someone improve personally.
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.
The ban also removes some of the reward for this behavior. Some of the people are doing it to make themselves look superior and the target inferior. With the ban, they can instantly be pulled up short ("Hey! We don't do that here at Hacker School.") thus instantly removing some of the superiority they thought they had gained.
What does one do when that person has a rank that exceeds correction? (Other than up and leave)
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."
Then you ban the new toxic behavior when it manifests. People who are truly toxic to their core will either leave or suffer quietly when they realize that they can't act like an ass and get away with it. Some people will be more introspective and change their behavior once it's been pointed out to them that their behavior is harmful to the community.
Total agreement. I see a lack of mentorship and emotional support in many businesses. In my ideal world, superiors would take an interest in their subordinates and try to help them with problems personal as well as professional. If the business focused not so much on productivity, and more on making their employees happy and healthy, the more productive they would be! (That's basically the underlying theory of Emotional Intelligence, which should be required reading for just about anyone in a corporation)
This was a new term for me, though I recognise the behaviour. I think the term will help fight it. Reminds me of the phrase "false balance" which was also new to me recently.
Another way of looking at it is that shame is a good disincentive for ignorance. It shouldn't be OK to ask questions like "what's Lisp?" or "what's synchronization?" (both of which I've heard). We can enforce that norm by rewarding such questions with a grimace. Of course, the absolute most important thing is to make sure that the environment doesn't become toxic with disdain, but I don't think it's in general a sin to "feign surprise" or similar.
If it's not ok then make that clear up-front and then tell people when they've crossed over into an area that you expect them to understand on their own.
Doing it in a comedic fashion doesn't help, it's just bullying.
Playing out that scene, I can't imagine taking your approach in actual conversation with a peer.
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.
Nope, an arched eyebrow makes you look like much more of a dick there. Because you're implying that it's basic stuff, _and_ that it's not even worth you telling them that, because they're so beneath you at that point.
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.
> you're implying that it's basic stuff, _and_ that it's not even worth you telling them that, because they're so beneath you at that point
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.
...and you won't be able to learn anything from the people around you because they don't want to tell you anything because you're the smart arse that grimaces every time they get something slightly wrong.
You seem to be making the erroneous assumption that everyone is motivated in the same way as you. Personally, if someone embarrasses me in a conversation in this way I'm going to feel like an idiot and resent them for making me feel that way. When this kind of thing happens it feels to me like they'd rather have someone to laugh at and feel superior to than help that person better their skills. I don't have much respect for that.
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.
The problem with this is people stop asking questions or start pretending that they know everything. Are you saying that Wikipedia should sneer at you for not knowing the chemical composition of the painkiller your doctor prescribed to you?
But that's a game everybody rigs to their own advantage: ignorance is defined as not knowing something that I know. You always win, everybody else always loses. That person who doesn't know what Lisp is, might be an expert on finite state machines and maybe you don't know anything about that. Or maybe they're just junior: someone with great potential to grow but without the benefit of experience. Surely there's better ways of detecting who's an idiot and who isn't than a jargon competition.
It shouldn't be OK to ask questions like "what's Lisp?" or "what's synchronization?" (both of which I've heard).
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.
It's a disincentive for ignorance, but not a good one. Nobody should ever be shamed for not knowing something, even if you personally feel they should know it, so long as they are willing and eager to learn it. If they stubbornly refuse to learn something after it becomes clear that they'd better for knowing it, thats when it's ok to feign surprise. But for goodness sake at least give them a chance to learn before you shame them.
I absolutely agree that it's not OK for a professional to ask a question like that. An intern, maybe. I also think, however, that there are better ways to deal with it. For example, if someone has never heard of Lisp, go ahead and explain it, but make a mental note of it.
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.
At 38, I'm much more ignorant than I was at 18, mostly because as I have aged I continue to realize how stunningly large and complex the world is, and how many subjects I will never know more than a little bit about.
One of the many reasons this is a bad idea hasn't been mentioned yet, I think: If you are a well-meaning, eager-to-learn, but woefully ignorant coder, you probably don't know enough to know which questions are stupid. After the first time or two that someone humiliates you for asking stupid questions, you don't just stop asking stupid questions, you stop asking questions entirely.
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.
Ah, confidence. I tend to do the opposite: I hedge too much. If I don't watch myself, I'd probably say, "I think 3 is a prime number...". Then again, I have been guilty of projecting confidence a bit too much, probably in a way unpleasant to others.
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.
> More importantly, this rule is simple. Having a simple, strict rule like this will help people help themselves.
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.
> Ah, confidence. I tend to do the opposite: I hedge too much.
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.
That is a very interesting anti-pattern, and I see it a lot in non engineering/tech companies (because I think people are insecure about the rapid technical changes they see about them). It's called the Dunning-Kruger effect [1].
“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]
I don't want to get into the pattern of assuming that all people who are certain are stupid. :) Especially since my career involves working with enough people who are non tech but bring so much value to the table that I would be foolish to assume that.
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.
I've noticed in management positions particularly since they're usually the ones that need to make sure the job is done but don't have the time to sit down with the engineers and figure out how/why it takes so long to work. Then there is the ego that everyone has to maintain some non-existent dominance amongst others..
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.
When I face an overconfident developer my learned response is to ask questions. If he has reason to be confident, I learn new things, if he doesn't he's outed. I win anyway.
I don't think the point is to fix the would-be 'teachers', but to remove a major geek-shaming avenue and making it a more accepting place to ask questions and generally not know things.
You know, like as if you were in school? And were there to learn?
I honestly find this behaviour so difficult to understand.
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.
"Why treat people like this? What advantage does it serve?"
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.
They have to say something, and for some people it's hard to find the right words to be nice without sounding condescending or superior. So they try to be funny without realising it is received completely differently.
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.
I have tried for a long time to be understanding of people's differing experiences. Mostly because I've been on the receiving end of so much feigned surprise. I was home-schooled, but actually had a fairly normal childhood otherwise. My parents didn't shelter my sister and me from pop culture, we embraced it just as much as any other family in our podunk Pennsylvania town. It used to really put me off in college when people would laugh at me for not getting an obscure cultural reference--even if I knew what franchise it was from, just hadn't had time to watch that particular one--assuming it was another "home schoolers are so sheltered" moment. No, I'm sorry, there is just a finite number of television watching hours in a life, and when you were watching Captain Planet, I was watching Teenage Mutant Nina Turtles.
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.
could be a different kind of feigned surprise. Like they want to express how weird they find it that you don't know about something.
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???"
When it was followed up with "told you homeschoolers are weird", I think I'm well outside of the realm of assumption.
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."
> "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 agree that tone and context are everything, but I don't agree that it's "usually" passive-aggressive. On my team, if someone says "oh, man, you haven't heard about X?" it's usually said with a relish that translates to "dude, you're gonna love this. Check it out: ..."
It's not just an opportunity for them to learn - it's an opportunity for you to learn, as well. There are deeper levels of understanding beyond merely being able to use something, and you can only reach them by the kind of explicit descriptions and breakdowns that teaching a concept necessitates.
I work myself, so don't actually have much experience with this rule. But people need negative feedback which often creates big motivation for them and enforces learning. Giving only positive examples does not help to become better person/programmer/whatever...
To be fair, the author does not successfully make their case that "feigned" surprise (how does one know enough about the mental state of another person to make that assumption anyways?) is always negative or always bad.
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.
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!”.
Here is a short presentation about Hacker School at our local Python meetup given by someone who went there. She also talks about feigned surprises
https://www.youtube.com/watch?v=3W6yQ2dXJk8
> “Feigned surprise” (when someone gasps and says something like: “you don’t even know about monads?”)
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.
I have this unhappy experience every day, when I find people don't know things that are essential to doing their jobs. I try hard not to let it show too much or fall into the trap of acting superior, but the soul-crushing depression makes this hard.
The more I learn, the clearer it becomes that I know very little. Things that I used to know fade away - a few years out of college, I can't do matrix maths anymore.
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?
Of course I don't know everything. But the stuff I don't know is irrelevant to my job. If you join my team, I expect you to know everything relevant to your new job, not whatever trivia you might have found amusing elsewhere.
>But I think every well educated hacker / software developer should know about nomads.
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.
But I think every well educated hacker / software developer should know about [monads].
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.
Monads are probably biggest thing which happened in functional programming in past 20 years. It actually made functional programming relevant. And basic FP is must have for most modern languages. And monads are relevant for actors, event driven frameworks and so on. So yes, any advanced developer should be aware of their existence (to know about).
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.
195 comments
[ 2.5 ms ] story [ 215 ms ] threadI'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.
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.
(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.
"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.
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.
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.)
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.
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.
Names are so important!
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.
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.
You know, like as if you were in school? And were there to learn?
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.
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."
https://xkcd.com/1053/
I guess that means I don't work with dicks.
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.
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.
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.