Scott Hanselman

How do you even know this crap?

August 22, 2018 Comment on this post [24] Posted in Musings
Sponsored By

Imposter's HandbookThis post won't be well organized so lower your expectations first. When Rob Conery first wrote "The Imposter's Handbook" I was LOVING IT. It's a fantastic book written for imposters by an imposter. Remember, I'm the original phony.

Now he's working on The Imposter's Handbook: Season 2 and I'm helping. The book is currently in Presale and we're releasing PDFs every 2 to 3 weeks. Some of the ideas from the book will come from blog posts like or similar to this one. Since we are using Continuous Delivery and an Iterative Process to ship the book, some of the blog posts (like this one) won't be fully baked until they show up in the book (or not). See how I equivocated there? ;)

The next "Season" of The Imposter's Handbook is all about the flow of information. Information flowing through encoding, encryption, and transmission over a network. I'm also interested in the flow of information through one's brain as they move through the various phases of being a developer. Bear with me (and help me in the comments!).

I was recently on a call with two other developers, and it would be fair that we were of varied skill levels. We were doing some HTML and CSS work that I would say I'm competent at, but by no means an expert. Since our skill levels didn't fall on a single axis, we'd really we'd need some Dungeons & Dragon's Cards to express our competencies.

D&D Cards from Battle Grip

I might be HTML 8, CSS 6, Computer Science 9, Obscure Trivia 11, for example.

We were asked to make a little banner with some text that could be later closed with some iconography that would represent close/dismiss/go away.

  • One engineer suggested "Here's some text + ICON.PNG"
  • The next offered a more scalable option with "Here's some text + ICON.SVG"

Both are fine ideas that would work, while perhaps later having DPI or maintenance issues, but truly, perfectly cromulent ideas.

I have never been given this task, I am not a designer, and I am a mediocre front-end person. I asked what they wanted it to look like and they said "maybe a square with an X or a circle with an X or a circle with a line."

I offered, you know, there MUST be a Unicode Glyph for that. I mean, there's one for poop." Apparently I say poop in business meetings more than any other middle manager at the company, but that's fodder for another blog post.

We searched and lo and behold we found ☒ and ⊝ and simply added them to the end of the string. They scale visibly, require no downloads or extra dependencies, and can be colored and styled nicely because they are text.

One of the engineers said "how do you even know this crap?" I smiled and shrugged and we moved on to the doing.

To be clear, this post isn't self-congratulatory. Perhaps you had the same idea. This interaction was all of 10 minutes long. But I'm interested in the HOW did I know this? Note that I didn't actually KNOW that these glyphs existed. I knew only that they SHOULD exist. They MUST.

How many times have you been coding and said "You know, there really must be a function/site/tool that does x/y/z?" All the time, right? You don't know the answers but you know someone must have AND must have solved it in a specific way such that you could find it. A new developer doesn't have this intuition - this sense of technical smell - yet.

How is technical gut and intuition and smell developed? Certainly by doing, by osmosis, by time, by sleeping, and waking, and doing it again.

I think it's exposure. It's exposure to a diverse set of technical problems that all build on a solid base of fundamentals.

Rob and I are going to try to expand on how this technical confidence gets developed in The Imposter's Handbook: Season 2 as topics like Logic, Binary and Logical Circuits, Compression and Encoding, Encryption and Cryptanalysis, and Networking and Protocols are discussed. But I want to also understand how/if/when these topics and examples excite the reader...and most importantly do they provide the reader with that missing Tetris Piece of Knowledge that moves you from a journeyperson developer to someone who can more confidently wear the label Computer Science 9, Obscure Trivia 11.


What do you think? Sound off in the comments and help me and Rob understand!

Sponsor: Preview the latest JetBrains Rider with its built-in spell checking, initial Blazor support, partial C# 7.3 support, enhanced debugger, C# Interactive, and a redesigned Solution Explorer.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
August 22, 2018 11:38
"It's exposure to a diverse set of technical problems that all build on a solid base of fundamentals." exactly ! that's why asking for a " 10 years experienced angular developer" has no sense, it's the content of the people experience that will tell if they were exposed to heterogenous problems and so got the fundamentals needed
August 22, 2018 12:06
I know it's not really the main Topic, but yeah, i use Gliphs / Emojis all the time to symbolize stuff. They're essentially the new developers-art placeholders. And, in many cases, they work well enough to stay.

In essence: "how do i know that?" The combination of curiosity and laziness.
August 22, 2018 12:36
I have always said. I am not really a good developer. I am just really good at Googling.
And this over the years has given me a good base to solve problems from experience.
August 22, 2018 13:12
I know this isn't the point of the post, but a technical note anyway: I've had bad experience with using Unicode as icons and I will not do it again. Devices/browsers tend to have their own fonts and icons for Unicode that sometimes override your font, leading to unexpected results. For example, Firefox introduces their own font a few years ago which causes many such icons to have random colors, borders, etc.

In the case of ☒, it is called "Ballot Box with X" and may look like this in Samsung: . I found it hard to believe, so here's another source for this image. 😐

Font-based icons or SVG work better, and allow setting the color.
August 22, 2018 13:46
There is definitely something to be said for exposure. About a month ago I had taken the family out for ice cream and was chatting with the employee who was serving us. She was deeply invested in soccer and saw the uniform my youngest daughter was wearing and that was all she could talk about. I had recently been demoing a bunch of Power BI dashboard concepts - one of which included a soccer pitch and a bunch of stats. Making sure I could talk to the data I did some research to make sure I could be a Minimally Viable Imposter while presenting. It made it incredibly easy to carry on a meaningful conversation with a total stranger and quite frankly we probably got better service as well. As my wife witnessed this conversation unfold, and knowing I am not a sports fanatic, she thought to herself: "How on Earth does Greg know this stuff? Oh, right. He is The Greggle."

I have thought about situations like you described and what happened to me recently, and I don't think there is anything overly magical or extraordinary involved. I think we just need to break out of the molds our jobs and society try to cast us in. Rarely (never?) does a job description fully capture our breadth and depth of skills - typically they desire a narrow set of requirements to meet well-defined tasks. Our potential goes way beyond that.

Case in point: I am speaking at Pluralsight LIVE next week on Quantum Computing. Looking at the list of speakers and their qualifications and experience I am easily - or at least feel like - the biggest Imposter there. It certainly wasn't my employment that directed me to learn about this topic. Perhaps it was my interests in physics, math, and computer science that led me down this path... but really I don't think I would have taken it without the healthy dose of natural curiosity that I have always had. In the same way I couldn't talk to a soccer pitch demo without understanding the background, I needed to dive deep and research how Quantum Computing is starting to pop out of academia and into the mainstream.

As always thanks for your thought provoking words!
August 22, 2018 13:49
I'm a TA in the computer science dept. at my university, and I tend to tell my students: "As developers, you need to be lazy, and with low self-worth. Laziness will make you automate things, and low self-worth will tell you somebody already did what you want to do, and better. Use it." :-)
August 22, 2018 16:00
Perhaps it’s implied, but I think it’s exposure combined with a growth mindset and open perspective to the value of knowledge which isn’t obviously, immediately useful.

I’m not quite sure how to express it, but I think there is also an important dimension around ensuring that exposure includes a diversity of perspectives on the broad set of technical topics.
August 22, 2018 17:00
I think it comes with experience and figuring out what is important to know. A new developer will be more concerned with HOW to do something. So if they're working in Java, they really want to know all the specifics of Java in detail. But the WHEN is much more important. When to use a for vs. foreach. When to use if vs. switch.

If you get really good at that, the language doesn't matter and you unlock your developer superpowers. The language is the easy part. Google (with Bing) the specifics of the language you're working on to find out how to do it there. But you'll look like you're a genius if you can explain the underlying WHEN.
August 22, 2018 17:18
I think it is exposure, but not in the way that you may be thinking. As a self taught, we are used to searching for answers. To be any good, we had to be really good at knowing what questions to ask. This causes us to look at problems differently. We see things that classroom taught might miss because we have no notion of this is "how" it is done. In a classroom, you are taught how to do a thing. The teacher generally only shows you one way because in their mind it is the best way and they don't usually have the time to show other ways other than blatantly wrong ways to do it. We search for an answer and are usually presented with multiple options. We then also have a tendency to look at those options, take what we like from a couple of them and make NEW answers.
You knew that unicode glyphs exist. You knew that they could be used as an alternative to icons because you've seen it before. When presented with a problem of needing an icon, your mind went to this instead of the much more common, and therefore widely taught, approach of using an image.
Another aspect of it is the propensity for formerly taught well, anything really, to over-complicate a problem. An anecdote I like sharing that shows the difference between a self taught and formerly trained person is one of mine from when I was in the Air Force, literally my first day on station. I saw one of the other teams in my squadron working on a server all day. When the day ended, they were still working on it, so I decided to hang around to see if I could learn something since I had nothing else to do that night. I watched as, after replacing some internal component, they turned the server on. There was a BEEEEEEP BEEP BEEP BEEP and a 2 character hex code on the screen. They all sighed with frustration. From building my own computers as a kid, I knew immediately that it was a POST error. The next time they started up the server, I watched for the code and the BIOS brand. I then went to my desk to look it up. It was a keyboard controller failure. I checked multiple sites thinking there was no way they could've spent all day working on a server because of a bad keyboard, but every site said the same. I went back and told them to replace the keyboard. They dismissed my suggestion as stupid and told me to stay out of their way. About 30 minutes later, I asked them again to just replace the keyboard. They agreed to do it if it would get me to leave them alone. They replaced it, and the server booted up fine. These formerly trained techs assumed it was something more severe because the USAF tech school didn't bother teaching them basic PC troubleshooting.
August 22, 2018 17:39
1. Stuff in system design that are not just classes and methods one can easily Google.
Such as: the concepts of using message queues and message brokers, resiliency of a system, trade-offs (for example, between microservices and monoliths)

2. Hard lessons learnt which bring better designs for more experienced developers: idempotency, correlation, dangers in (and mitigation of) multi-threaded programming, distributed and local cache.
August 22, 2018 20:01
I'm with Greg. In fact, I was looking at this on my Samsung phone and wondered why the heck you would use that first icon. Unicode emojis only prescribe what they should depict, not how they should look. It can vary.
August 22, 2018 20:20
The idea of using D&D cards to express competencies is an interesting one. It could be a good way to find someone who does know the "crap" that you need to sort out, though I suspect imposter syndrome would keep people from evaluating themselves properly. The only place that I'm aware of that does something similar is Bridgewater, where Ray Dalio is known for the "baseball cards" he keeps on his employees.
August 22, 2018 20:28
I don't think it's only exposure, as the metaphor goes, you were "Standing on the shoulders of giants". It's the scientific method, being humble (you are not the first to have this problem), trust your field (the giant :) ), make assumptions and validate them (science!).
And i think here is the root of the imposter feeling, the more you use your "giant" the more you feel like a "dwarf" !

By the way thx for being one of my "Giant" :)
August 22, 2018 23:31
The Dunning–Kruger effect may be related with the imposter feeling. Here is a good video on YouTube about it.
August 23, 2018 2:01
All these other comments are great while here i am searching for "cromulent"
August 23, 2018 16:16
ARRRRGH, that gif at the end makes me unreasonably angry!
August 24, 2018 5:30
I think exposure is one factor.
Another is the number of hard won known points you can extrapolate from.

But I think a significant factor is your internal mental model of how you phrase questions to yourself. Sometimes people have internally jumped to the first answer that's popped into their head, so they unconciously don't consider alternatives and already have decieded "Need to add a png" and don't consider other possibilities of what might exist. If you have a habit of a considering more possibilities then you tend to have more mental hooks to believe certain things "MUST" exist because it seems likely and you have a habit of going through the cycle of believing certain things exist and then finding them.

August 29, 2018 9:50
Wow, this is very interesting article man. Keep it up. thanks for the friend's information
August 29, 2018 10:11
It's a nice blog you have over here! It's very usefull information for me and I just want to thank you for that! If you post more threads as this one

طراحی سایت در کرج
August 30, 2018 1:28
To answer the question "How is technical gut and intuition and smell developed?", it may help to also look at successful Business Analysts. Expertise at extracting core needs behind software feature requests from clients, having awareness of existing or possible solutions and alternative approaches, and communicating atomic requirements to developers all use similar skills and experience.

Instead of exposure, I'd use the term enlightenment - in the sense of the aggregate result of multiple meaningful experiences. The catalyst to getting better at creative problem solving is the delight of discovery when experiencing eye-opening revelations that challenge our assumptions or broaden our horizons. Curiosity, passion, and fearlessness are the key ingredients IMO.
August 31, 2018 1:52
Curiosity + Experience = Level 11
The number of times I've been able to apply simple stuff I learnt in Perl to modern day scripting languages like Powershell to get a quick solutions is based on curiosity (Just how do I do this in RegEx?) and experience (know when not to use RegEx).
People think you're some sort of guru because you can work out when they have accidentally changed their keyboard to UK English, and can fix it in 2 clicks...but it's just the experience of doing this yourself some time long ago and the ability to remember the easy fixes.
But the curiosity factor is key.
August 31, 2018 21:02
Thank you. Your cromulent words embiggened our minds.
September 03, 2018 22:05
You're pondering something here that I've wondered about for a couple decades now.
September 05, 2018 7:30
Dead indited subject material, regards for entropy.

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.