Chain of Thought for Humans
boristhebrave.com
boristhebrave.com
I feel like being explicit like this put candidates at a bit more ease than having them try to suss out what the interviewer is expecting from them implicitly (and I know there are many interviewers that will auto-veto any candidate with the audacity to suggest a possibly imperfect approach).
I always thought I would easily pass an interview, but I may have been wrong before all this on the basis that I don't work that well on a team.
OTOH ...is the question now really valuable whether a candidate can explain their thought process rather than deliver? Why wasn't that a question 20 years ago when it actually mattered? Or does it matter more now because the bar needs to be higher, and there's no cache of more experienced devs to train them up?
On the other hand, I don't have the option to fail even slightly. I deployed a patch yesterday for an old, rare, logic bug in one reservation system, and within an hour I was being bombarded with edge cases of people seeing their reservations as cancelled during the 15 minute switch-over period.
Sometimes I feel like the job of a programmer for a company is just very different from what I do. If anything goes wrong with anything I deploy, I'm awake for however long it takes to make sure it's right. On the other hand: No PRs, no teamwork. Just a click to deploy once I'm relatively sure. And a lot of responsibility.
I would love to live in a world where every candidate represented their experience accurately, and every applicant was capable of fulfilling the role, but sadly it's not the case.
I agree there's some filters which are mostly performative (like leetcode), but being able to talk through the kind of work you do is table stakes. And not just for engineers, for any professional role.
I think you are likely to find that "working well on a team" is the number #1 thing tech firms are screening for. Technical skills are all well and good, but communicating/collaborating are half the job in a big company.
All the teams in which I have ever worked have greatly appreciated my contribution precisely because I was always willing to spend a lot of my time explaining to other colleagues, in a differentiated way appropriate for the understanding abilities of each of them, how I had solved my problems or how they should solve their problems.
On the other hand, I am also completely unable to explain my thinking while it is in progress, because reformulating it to become intelligible to the interlocutor would slow me down far too much.
Explaining on-line my thinking would require even a kind of language translation, because when I am speaking to myself I use a special language with precise non-ambiguous words, whose meanings correspond in many cases with old meanings of those words, because in the modern language a very large number of words have vague meanings, which have become very diluted due to the frequent use of those words in inappropriate contexts.
So when I describe some technical solution to others, I typically do not use the words with which I think about it, but whatever words are more fashionable today, so I expect familiarity with them, even when I think that those are not the right words.
Doing such a translation while I think is too difficult, and I do not attempt to think with whatever words become fashionable from time to time, without any good reasons, because in my opinion using the right names for concepts is very important for understanding and using them properly.
That's also why I have trouble working on teams. I tend to evolve a complete picture of how I'm going to approach a large problem in code at the same time as I'm thinking through the business logic. It's mostly written in my head before I sit down to write it, and I'm thinking through the sharp edges as I go along.
It's also why prompting an LLM is often more tedious, frustrating or imprecise than writing the code myself. The code is not the thing, the logic is the thing.
The question isn't about figuring out junior or senior. Its about the candidate being able to think thru a problem. They don't even necessarily have to be good at articulating their thought, I just want to see how (and if at all) they are splitting open the problem, walking thru it, figuring it out and then converging on something that (at least to them) feels like a reasonable solution.
If they get stuck, I am happy to help them out, without disrupting them or deviating them. If they go down a wrong rabbit hole, I may ask a leading question that helps them realize the issue and gets them back on track.
The bar isn't being set higher. Its just that there are a LOT of people interviewing (in my experience) unfortunately, who seem to be unable to model problems in their head, model how their code would work (mentally model the execution of the code), and reason things out. They have frequently coasted on blind copy paste from stackoverflow/help/tutorials. A huge fraction.
I also have been coding for a LONG time (older than you), and in the early days, this sort of conversation didn't have to be explicitly asked for, it happened naturally, like in every interview (where I was the one being interviewed) - cause you present me with a problem, and I can't help but be nerd-sniped by it. People who were candidates for tech jobs were there only cause they actually went into it with a bit of love/passion/skill.
But then it became a large industry, and most people who went into it were not 'hackers (problem solvers)' at all. They just liked the great pay. They may even be intelligent, but a lot were not capable as independent code owners. Still useful for basic crud with the right frameworks/etc. So thriving in enterprise applications, java/c# mega-platform/mega-framework domains.
IOW, I can't explain in real-time how I'm working things out. I have to work them out to completion first, quietly, or at least have a good idea about what the full path looks, end-to-end, in detail and only after the fact could I ever hope to explain my thinking. Asking me to explain my thinking while I'm thinking is easily the most stressful and impossible task anyone could ask of me. I'd rather you break my fingers as part of the interview process.
I understand as an interviewer that makes for quite a dilemma. And I suppose if you find this approach reasonable then you may not like working closely with someone like me (though if you're just a manager, then it's a bias to be aware of).
Similarly, practices like pair coding just don't work for me. I'm not not a team player. I like and benefit from design and ad hoc technical discussions, just don't ask me to sit down and write code with someone else, or even with someone looking over my shoulder. All parties involved, including myself, will just end up pulling their hair out. Though I do work best with people who think similar to me. We instinctively know when and how to set our boundaries and expectations.
To interview someone like me it's probably best to focus on having the interviewee identify waypoints (both abstract and concrete) to confirm they have the experience and understanding to navigate difficult problems. Just don't ask them to actually navigate on the spot. If you want to see how they ultimately connect the dots in practice, look at code they've already written. Unlike in most other fields, software developers often have a corpus of work that is easy to share and often already published.
The thinking gives more than just the answer and makes it more of a conversation. As a candidate I will mention projects I had similar when think about anything. As the interviewer it is hard to gather experience: so many people stay abstract and it’s infuriating (let me help you get this job! Yes you can do something means nothing; when you did do something means everything.)
I am sure that many interviewers don’t see it like this however and treat it like a quiz sadly. Best advice for interviews I was given as a candidate: the interviewer will decide in the first five minutes if they want to hire you. The rest of interview is them trying to convince themselves and others of that decision.
If someone can't communicate well on technical matters, that's generally a negative.
That said, if a candidate was frank with me that they don't do well being put on the spot with a question like that, and can articulate how they do actually solve problems, and give examples of how it's worked for them in professional settings, I would consider them for the role if their answer was convincing.
I.e. if I asked you to explain how you would approach a problem, and you said you might need to go off and write some throwaway code to explore the edges of the problem that's a good answer.
Or, perhaps the person thinks (solves) in abstract concepts rather than linear words. Just because many people mouth words when reading or can't think without hearing words in their head or aloud, doesn't mean others should have to handicap their own efficacy of thought while working it out. Two conceptuals can communicate in a kind of ultra condensed shorthand liner verbal thinkers struggle to follow. Less can't communicate, more can't conceptualize squared off with can't verbalize.
Both groups should synthesize simply and clearly at the end, both should work to get in sync. And both ways of thinking have their uses in a team. Catch: conceptual thinkers can interview verbal thinkers, the other way around is more challenging.
(Caveat: I've always been interviewing for members of a small team who I might very literally be sitting next to every day and communicating constantly with. BigCo interviewing is different.)
Once I have figured out the relationships, though, I can talk about it in words. "Why didn't you do it this way?" "That felt really clunky. This way seemed cleaner, because X Y Z."
But I've never had to go into that mode for an interview. Or maybe the interview is too "immediate" - too interactive - for me to go into that mode.
It's something I struggle a lot with (and I'm currently unemployed)
I have too. Stating this doesn't give you the credibility you probably think it does. Interviewing/hiring in general is a pretty broken process, and extremely susceptible to subjective interviewer bias.
> If someone can't communicate well on technical matters, that's generally a negative.
Your interview method doesn't test if someone "can communicate well on technical matters." I can see why you think it does, but it does not. "Good communication" is not the ability to produce the correct sequence of thoughts/words when given 45 minutes to solve a problem in a hostile environment (surrounded by strangers, with your livelihood on the line).
What you're actually selecting for is a very specific type of candidate who thinks and communicates like you in a way that you can easily understand. You're basically selecting for vibes. And when you structure your interviews this way, you specifically end up preferring candidates who are better at bullshitting and "selling themselves" as opposed to candidates who are actually the most technically sound.
The biggest indictment against your interviewing mentality is that it's limited by how good you are at listening and understanding. You're probably worse at it than you think you are, and spending too much time in the interviewer position and not enough in the interviewee position makes it easy to fall into this trap.
I've interviewed and placed dozens of candidates on teams I've led. I've also interviewed and gotten offers at dozens of companies in the past 10-15 years. The more offers I get, the more I realize how broken interviewing is.
The mistakes you're making won't necessarily cause you to hire bad candidates, but it will undoubtedly allow you to reject/ignore very strong candidates just because they don't talk/think like you. Maybe you have a problem with diversity of thought, but generally that's a desirable characteristic on most engineering teams.
My advice is to spend more time on objective measures, and to check your ego at the door before conducting your interviews. Spending so much time as a gatekeeper makes it easy to get a superiority complex, which comes across quite plainly in your original comment.
So maybe it puts them at ease, but I think the important part is actually listening.
I suppose this is where "gears turning" and "screw loose" come from, vestiges of that time. It will be interesting once we emerge from our current attention sequence model fever dream what vestiges leave a lasting imprint in the parlance.
Not Everybody Has an Inner Voice: Behavioral Consequences of Anendophasia - https://doi.org/10.1177/09567976241243004
Anyone with anendophasia care to opine on their experience?
But it’s more than that. I don’t have any conscious notions of thought at all. It’s much more like these guys in the tv show Severance who stare at numbers until “it feels right”.
The end result just pops into my head, often just as a feeling, not even as anything graspable, and only takes semantic shape when I say it out loud or write it. And even when I write it, it continues — it’s like a constant irking feeling of calibration that never feels quite right until it does.
There is one exception: demi-sleep is the only state where I can ruminate (e.g. stress-related), but then it's also non-verbal -- more like a combination of images and sensations. It's hard for me to put into words (no pun intended)...
Would you say you're a visual thinker, or is there no imagery either? I'm trying to imagine (ha) how someone can think without words or images. The closest I can relate to is when I'm playing music, like the piano, there is a thinking process - even problem solving - without any concrete concepts internally, no words, colors or forms, not even sounds. Now that I think about it, I get into that mode of non-verbal (and non-visual) thinking sometimes when I'm doing math or writing software. It's like thinking by doing, often through an external medium - shaping code, numbers and operations, music or art as it's happening.
> stare at numbers until “it feels right”
I think most people do this sometimes, consciously or not, but just not as their dominant mode of thinking. How interesting.
Perhaps it was more common in the past, or in some subcultures like a Buddhist monastery. Or among animals and plants, their "thinking process", problem-solving without words.
I lack conscious visual imagery. I can't recall faces of loved ones or really "see" scenes from memory in a way that feels visually coherent. Even though I have practiced drawing and painting at times, I cannot render people, animals, nor landscapes from memory. I would need a live model or reference photo. I could draw or paint fictional scenes or more basic forms, but would struggle with anything life-like without a reference. I can recognize it is flawed, but cannot summon the missing bits.
I also lack any inner monologue. My thinking is not verbal. It is extra work I have to do to cast ideas into words after I've already thought them up. I can think about words as a task, but I don't think in words. This interviewing strategy also sounds like a nightmare to me. I could talk at length about "how I think" in some philosophical or psychological mode, but I cannot recite a real thought process as if it is a sequence of verbalizable intermediate steps. That's just absurdly ill-fitting to me.
By contrast, I have a pretty strong inner stage for proprioception and a sense of spatial relationships or topology for both real 3D and 4D (space-time) structures. If I focus, I can nearly invoke physical sensation by imagining falls, spins, impact, flight, etc. This can also involuntarily engage my inner audio stage, where I might imagine corresponding sound effects.
There is a first-person and third-person version of my spatial stage. I can sometimes think about a dynamic stage, i.e. the 3D stuff moving, but more often this turns into a more static sense of a stage that includes motion vector information. (Alas, this hasn't made me a dancer nor given me appreciation for choreography...) I don't know how to describe this to people though. I don't "see" it. I feel or know it. It may have a perspective-like projection to it, favoring or enlarging the near space, but it doesn't have occlusion, lighting, or other visual qualia.
Sometimes, but not always, I cast more abstract thinking onto topological structures that map into this spatial stage. Then I can "feel" the shape of a problem, problem space, or search process over that.
As I mentioned above, I do have an inner audio stage. I can think about arbitrary sound and it has an experience like a faint version of real-time hearing on a secondary channel. There are intensity and frequency qualia, timing and rhythm, etc. It can convey harmony, noise, sharp attacks, etc. At the extremes, I can nearly induce accompanying physical senses like a deep bass thumping my chest or a high-hat sizzling in my ear. But it's always sort of off in the corner as an apparatus I can access, without being mistaken for real hearing. This and real hearing can operate in parallel, though it is harder to attend to the inner stage if real hearing is overwhelmingly loud or full of semantic content.
When I think about words, it is sometimes in this audio stage. To some degree, I can remember people talking or run through hypothetical speech with intonation etc. It's a bit thinner on the audio qualia than other audio thinking, as I focus more on the semantic and emotional content and less on the sounds qualities. I know whose voice I am imagining, but it's not necessarily a rich or faithful synthesis of the sound qualia. Musical thoughts bring more of that richness.
But, I have another linguistic stage that is more symbolic. It's more like feeling the topology of the words, a bit like a parse tree, and less a real-time stream. It would be a mistake to say it is a visual process, as it morphs into semantic units in my spatial/topological stage. It can also abstract, thinking about the sequenced structure of sections, chapters, etc. rather than all the words.
Finally, all of the above-mentioned things feel like tools I can apply. They don't seem like "me" or my core thoughts. It is very difficult to describe my thoughts that happen behind the scenes in all this. There is a version of the above senses that represents my real, anchored, position in the world. And there are the extra, "imagining" versions that I can operate. My real self is some amorphous attention that flits among these.
(Probably) due to trauma effects, I have very high situational awareness. So, it's very rare that my attention can completely separate from the real-world monitoring. But I can deprioritize it a bit when I really focus on other problem solving, recall, or rumination. It's a bit like a mixing board that cuts from one blend to another with different levels of abruptness versus smooth blending or transition...
Aometimes it feels like a super power because it takes away the "starting anxiety" and makes everything a trivial sequence of "following simple steps"
I have found that speaking the steps out loud helps, especially with new, confusing working steps. For example, it helps when tying a complex knot or following the steps/work of others without explicit instructions. In such situations, speaking out loud helps me to remember the steps much faster (simple repetition through multiple pathways) and also helps me to detect and correct spatial and sequential mistakes. It also helps enormously when working with or teaching someone else.
I have a funny memory from my youth: one time, I had to solve a particularly difficult maths problem on the blackboard. I don't remember exactly why, but while I talked out loud about solution A, I wrote a slightly different step (B) on the board. Looking back, I realised I had made mechanical mistakes, so I had to correct them to get the final valid solution. My teacher laughed and joked, 'A sign of genius is to write A, say B, but only C is the true solution.' :) (no, he was just too kind).
I have often experienced my handwriting being much slower than my speaking, so sometimes they don't sync and funny mistakes are made (one line contains the words of the next line). But I fondly remember that particular moment.
I feel like I'm the opposite, where most of my thinking is done in inner English, which feels slow. I.e. as opposed to instantly realizing the result of deep subconscious processing or something, I usually go the slow language way, if you get what I mean.
1. Intuitive thinking
2. Language based internal monologue
3. Written scratchpad
4. Explaining the problem to another person until they understand it (rubber ducking)
It does have an enormous mountain of downsides, though.
For example, I don't talk to myself in "monologue". But I can close my eyes or stare at the screen and visualize the solutions. The words that I usually tell myself during that are "what?", "why?", "strange!", "really",... not a monologue or sentences.
Anyway, a surprising related observation is that rubber ducking by describing the problem to quiet listener still often helps me, which suggests that internal chain of thought makes intuitive shortcuts that sometimes are counter productive, while talking to another person creates subconscious pressure to make the thoughts fully complete.
I couldn’t do that. I have no insight into my thought processes whatsoever. There are no semantic (or any other) processes to witness. It’s complete crickets at all times…
My wife is the opposite - constant chatter in her head. And she can trace every thought exactly. (No idea how people like her can focus or even function!)
Problem is solved before the solution is consciously perceived. The reverberations after perception can be of many different styles.
There is little value in chain of thought and I think humans are implicitly or explicitly instructed to verbally think and hinder their problem solving facilities. There are many examples of individuals that went much further with their own internal but externally indecipherable thinking models because they avoided language as a thinking faculty.
On top of that to ask for clear communication and decoding of the verbal thinking mush into sounds is just an extra hinderance. Id prefer to ask questions to evaluate understanding of the problem solved than force someone to dump their mush into a clear spoken summary.
Interviewing process is just a mush of nonscientific nonsense , a theatre for all involved, a sad affair.
?
TFA literally links to a study contradicting this core claim.
And of course it does not as any serious problem solving is not only hindered by verbalization but by sight as well, closing your eyes will improve your problem solving massively.
They prompt after solving the problem, they don’t mandate verbalization during the process, in the study.
There are studies that show no hinderance with verbalization except longer solve time, but the problems being solved are too simple.
> but maybe it has some nuance?
> eh, I think I still don't care enough to click
> but maybe I could post a funny comment
> it doesn't sound that funny, and besides, HN doesn't usually like these sorts of comments
> okay, let's just read the next story
> unless
I think and chase alternate chains of thought way faster than i can speak.