Friday, I had a tech interview, aced it... Well except manual code review...
That had me spiraling. Both good and bad. Who really has the right to judge your potential for a role? Where is the bar set and at what point do you pass it? Does it all pivot on 1 thing, or is it actually a case of a standardized test, you either pass with flying colors, or the recruitment pipeline passes on you?
For reference, I aced the demos and technical questions, manual code review though, is becoming an archaic skill, I work on 12 projects at a time across 4 systems... It's not really a skill I practice regularly, let alone not EVERYTHING I do is in rust. So does failing a manual code review make me incompetent, or incapable of doing the job?
I think the answer to that isnt as clear cut as we'd like it to be... Manual review, is marketed as 'a competence test, to see how you think' and yet the environment is completely wrong for it? Who here still just LOOKS at code to judge it? Is writing tests and benchmarks not the preferred industry standard? Does having an AI do an initial sweep, fixing the obvious and giving context to the file, make you a bad developer, because you need hand-holding?
So many questions, with no obvious answer and it had my mind running all weekend, despite my best efforts not to... And I dont really think it's just me?
My opinion on it, is that manual review, with untestable code, during an interview, is more a trap than a real judgement of proficiency. If you review a caching system, but the last 1 you built was 3 years ago, would you still remember the right pattern? Would you be able to look at a bad design and scrap it entirely for a better solution? It's dated and relies on memory and experience, not skill and dont mistake them for eachother. Memory and past-experiences, are nuanced, that's the question you either ace, or fail, because you've either done it recently enough to remember, or you're shooting blanks. Whereas skill, is the ability to implement the mandate, correctly.
I do think part of it, is that companies have learned to devalue candidates before hiring. During the manual review phase, he said 'you actually caught the [u8; 16] for sha256, not many people caught that 1'. That was the only 1 caught, because that's the only 1 I had recently dealt with. Does that mean I'm a 1 trick pony? Or does it mean the code I was meant to review, is out of my domain? Or is it simply, 'I didnt do it before like this, so I wouldnt know'... As much as we rely on skill, being able to 'sniff out' bad code, or unoptimized patterns, that's hardly why we call ourselves developers? By definition, we develop, we innovate and create, we are each unique in the sense that our skillsets are tailored to our past work and our 'pattern recognition' has only had training data on what we've personally dealt with.
Dont get me wrong, take an expert of 20 years, have them review it, they'd likely still find all the issues... But how much of that years of experience is weighed in talent, vs 'I've done this before'? I think that's really where the world's conflated around hiring, years of experience, doesnt actually matter, it really doesnt. Take a developer with 10 years and 20 years experience, the gap between them is purely patterns they've dealt with, if it's a pattern the 10 year dealt with recently, vs the 20 year dealt with 10 years ago, chances are the 10 year will write a better solution?
So if it's all irrelevant, what really is the bar? Do you have to be confident? Do you have to 'know your stuff' even though your past job wont possibly map 1:1? Do you have to bring cool stuff? On that, I've always leaned to the business side of things... Do you bring value? If they hire you today, what does the ROI look like for that hire? That blankets over the entire job, over your capabilities, over everything. Because in the end, Claude is $20 (thank you for that 1 ex-boss...), we arent hired for coding anymore. So what value do we bring? Experience is circumstantial, skillsets evolve, innovations become standards, at some point value, becomes the norm and we'd need to bring more, else we're obsolete?
We develop, be that via AI, manually, or writing binary like it's Morse Code, with a telegraph... The creation medium is irrelevant, it's the problem solving skills, the ability to learn on the fly, experiment and discover new ways to do it and fight for innovation that makes a developer a good investment. Because in the end, that's exactly what we are in the grand scheme of things... Investments, that need to pay dividends, like a computer needs to bring value past it's power bill. So how do you set a value on it? Metrics... You use metrics, to determine if an employee brought value. Eg. my past job, I built the entire journaling system, stock system, manufacturing system, remote deployment system, the cashbook system, even the dashboard and debug logging system. Value delivered far exceeded my salary, because each thing I did, immediately gained them a customer or 2, which meant the profit far exceeded COGS for me within the first 3 months there... After that, everything I did was pure profit for them. Yet, companies get complacent, they forget that you did that, so they instead demand you do that again... and again... Till you cant keep growing their recurring revenue at an exponential rate. Then they see you as a liability and poof, you're gone, 1 way or another.
So back to the question that started it all, who sets the bar and how is it actually measured? Investment brokers need a portfolio to show their capability and a history of high-interest returns and yet, that's still a gamble. Vs if you need MS Office, you buy MS Office... Either your reputation precedes you, or you bring something they need out of the gate. The only question then, is hard can they haggle? How can they degrade your value, before signing, so they get a better deal? That's why they ask your current salary, not your expectation, so they know what's your actual floor, not the floor you're confident you're worth, because if they degrade your worth enough, you'll settle for that floor, just to have an income? And that's how professors become janitors and Engineers work at McDonalds... Once they devalue you far enough, you'll take what you can get. Despite dreamy eyed ideals, companies dont hire the best candidate, they hire the candidate that's lowest risk, highest return. Translation, whose the best value for money within the budget range and they will almost always scrape the bottom of the barrel, instead of pick the best talent, because it's easier to make a small bet that pays out smaller, than it is to risk it on the high end.
Manual code review, in my opinion, is 1 of those tactics. You dont do it daily, you cant possibly be high-throughput, while reviewing every line, like it's a philosophical koan, "what is this loop?", you'd be unproductive and a poor investment. So if a company wont ever hire you to do that, then why does it exist, beyond degrading your value, because people are notoriously bad at spot-checking an unknown? "Bring a project", is awesome, it translates to 'we want to see what value you bring on day 1'. Technical questions, are awesome, it translates to 'how much insight do you have into our industry, to identify bottlenecks and potential market gaps'. 'How do you use AI', awesome, because that shows whether the company's existing plans fit your usage, so they dont have to keep 20 different subscriptions. 3 high-value indicators, that actually show what value you actually bring, vs 1 that makes you feel like nothing, so they can low-ball you and you humbly accept their generous offer, because your self-esteem was crushed...
I'll admit, that's a very pessimistic view of things and I imagine everyone here'd have a different opinion on it? But that's where my 'clinical thinking' got me. Nobody wants to buy a brand new, shiny house at list price, they'd sooner look for cracks and water marks, so they can devalue it to where it's a bargain... Only, they arent buying a house, they're renting a person... And that degrading, is the degrading of the ego, which can have serious consequence if a person is unstable (I'm fine, incase you're worried). It's a business practice that we all practice in some way or another, like buying fancy things only when they're on special, we dont even recognize it's the same thing. It's only 'worth it' when it's devalued.
So I got a final question for you all. When you fail at anything during an interview, do you feel like your 'salary expectation' drops?