[1] https://www.youtube.com/watch?v=4r7wHMg5Yjg
[2] my personal breakdown: 50% luck, 40% perseverance, 10% ability to retain details
[1] https://www.youtube.com/watch?v=4r7wHMg5Yjg
[2] my personal breakdown: 50% luck, 40% perseverance, 10% ability to retain details
Some people will check if this is really a critical thing to accomplish right now, and just work around it when it makes sense. This can be the difference between 100% done, six weeks late, and 95% done on time, with a small outstanding improvement left to complete. It may even be easier to do when other work is done first.
Sometimes you can't go around it -- then the honey badger does surely take the day! But I've found (and seen) a lot of success in asking yourself / a Product Owner if a feature can be delayed, or even cut.
Often, you can't find the problem, but you can find a point where checking code will trap the problem earlier. Slowly, crash by crash, you work backwards to the source of the problem. Eventually you can find the root cause.
I got out of that after a few years and into the more theoretical end of computing, including proof of correctness. It was useful, though, to learn what makes software unreliable from the bottom.
(This is part of why I'm so down on unsafe code in Rust. Rust has a good safety system. There are people with an attitude that "I'm so l33t I don't need the checking." They're not. They may create something which imposes a safety constraint on the caller, and later, someone else violates that constraint and creates a memory corruption bug. They write code which has an implicit undocumented invariant which is violated when someone else makes a later change. Those are bugs waiting to happen.)
As an engineering candidate, how do I display these traits?
As an interviewer, how can I test for these traits?
This is one trick I haven't figured out.
I can ask problems that require tenaciousness to dig all the way to the bottom. BUT motivations and incentives in a 45min interview and an ongoing job are very different. There's a higher reward in the job interview, and you know an upper bound to how much time it'll take.
I've hired people who aced that, but then were pretty lazy day to day, even for looking up trivial stuff like "you submitted a python code review that wouldn't even run because you made a typo in the method name."
Stories can help, but stories are (even assuming true and not borrowed) from a past version of the candidate which may not be the same as the present version.
So I just do the best I can, but also recognize that I won't necessarily get a 100% perfect employee no matter what questions that I ask. But "pretty good" is about all you can realistically hope for, I think.
There are two very important tests to consider hiring someone:
- how a candidate handles feedback and negative situations like disapproval and rejection
- whether they delegate thinking or take ownership of solving hard problems
If they fail either, that’s a deal-breaker. Also, make the candidate pipeline as uniform, fair and repeatable as possible.
- anonymizing resumes by masking pedigree, names, addresses, etc.
- ask generally the same questions, while branching differently based on their responses
- perform social and skills tests as similarly as possible
”Be the change you seek”
Yes, this involves a lot of online stalking people. Honey badger doesn't care.
Occasionally there will be a post on HN about someone who debugged a compiler bug or a even a hardware bug, and it lifts my spirits.