As someone who has interviewed many software developers, I can assure you that charisma is not something that experienced hiring managers in tech are expecting in the candidate pool. For sales positions, sure. For coding, though, competence is often inversely correlated with charisma.
Reasoning through technical problems is a different story.
I think your first observation about grinding leetcode is interesting. I suspect that this is the approach people take when they're trying to get picked up by big companies (FAANG or whatever). Programming problems become a quick way of winnowing the field for companies that have a highly process-oriented approach to hiring. My own experience has been in small companies, where being able to get in the door and make progress through the interview process is often dependent on one's personal connections/network, creativity and so on.
So my advice to the OP would be to leverage your network and try to get inside companies connected to people you know. Maybe look at smaller companies that aren't necessarily tech companies, but have a strong need for tech?
Source needed. I've been working in tech for 15+ years, alongside highly charismatic and competent people, terrible engineers with less charisma than my coffee pot, and everything in between.
You do not need to be charismatic to be a good engineer, but also it certainly doesn't hurt, and friendly teammates make for a better team atmosphere. If I'm considering two candidates otherwise similar, I'm going to go with the one that's more pleasant to work with.
Someone in the top 10% of competency or charisma will have average distribution of the other. If you consider the full population, you'll find no relationship, but because you are only look at the top 10% of each, those in the top 10% of one will be average in the other and vice versa. While some (~10% of each top 10% group) will be represented in the other group, you'll still find that they are more likely to be at the bottom of the group in the second group.
The end result is that if you only plot the data for the top 10% of each group, there will be an inverse correlation.
This can hold true even if there is a positive relationship between the two characteristics depending upon the strength of the relationship and how selective you are in selecting the top of each group.
This leads to some interesting results, such as when fruits are grown for look and shelf life risk losing taste and flavor despite these factors being unrelated.
Would you disagree that software development, as a profession, tends to have fewer charismatic people in it than other fields in which charisma is more valuable and/or essential? For instance, if I were to suggest that the average successful politician is more charismatic than the average successful software engineer, would you disagree with that statement?
If we think about it in purely economic terms, I'd suggest that people who are very good at getting other people to do things (i.e. they have charisma) have a powerful incentive to enter careers where they can leverage that special ability.
>Source needed
Experience and observation. When one is deeply involved in solving hard problems, one has less time for pleasantries, superfluous stuff ( but important to people in general) and subtle manipulations of relationships, that make up 'charisma'. Over time that becomes your personality. Not saying that this is the best thing to happen to an engineer, but it's the way things are IMO.
My guess, as someone who has occasionally been the hiring manager, is that this is true, but so is the leetcode crap. It's leetcode that gets you far enough to meet someone who matters. It's charisma and reasoning ability that will get you an offer.
I've met plenty of applicants who could give me superficially correct answers, but with any kind of detailed conversation it became clear that this was basically all they could do. When I hire someone for my team, I don't want leetcode answers, I want someone who can solve problems. I want someone that seems like they'll work well on the team. I want someone low maintenance and at least adequately productive.
But this is just a medium sized software company and not a FAANG.
After that might be more rounds of coding, system design, and hiring manager interview.
The part where you can be charismatic is once you pass the initial technical bar(s). The talking/behavior is a later point in time and is relatively easy IMO.
Examples of questions I've been asked:
1) https://leetcode.com/problems/non-overlapping-intervals/
2) https://leetcode.com/problems/design-add-and-search-words-da...
3) https://leetcode.com/problems/detect-cycles-in-2d-grid/descr...
4) https://leetcode.com/problems/evaluate-reverse-polish-notati...
So nothing too hard but you have to instantly solve it, and optimally. The hardest one I got was some type of AI search problem, where you have to find a way to navigate obstacles in a 2d grid, and another geometry problem I've not seen before.
Along with this questions like: what pitfalls arise in concurrency? Explain how you would design a pointer type that can be shared between threads, what is epoll? How do you debug a distributed system? etc.
i'm more than happy to do take-home assignments or complete reasonable timed assessments, but i have (politely) refused to complete leetcode-style gotcha screens when they have been presented to me as "just another part of the application process".
idk, though. maybe that's a privileged statement based on my position, but from what i can tell grinding leetcode seems to be much less reliable these days & the toll it takes on a lot of folks is pretty significant.
If someone asked my to do a leetcode style problem I'd politely refuse, and likely end the interview. I went through that kind of job hunt at the expense of my mental health and confidence in myself as an engineer once. It was one of the most degrading experiences of my life (so in all not a bad life to be fair). I'll never do it again.
When people started asking these questions, the whole point was to see how people reason about a new problem they haven't solved before. There are almost no work problems that require you to regurgitate something verbatim you saw on leetcode before.
It's seriously making me question the intelligence of these interviewers. Although at the same time I realize it's mainly just to arbitrarily whittle down the applicant pool to a smaller number you can interview in person.
it's really easy to identify code that is not optimal at code review time. it is far more challenging to have a conversation with a algorithm-regurgitating robot that their entire approach was wrong because they misunderstood the abstraction or that their code wasn't needed because Larry is refactoring that part of the system to a separate service already.
But if you're an interviewer or hiring manager who is telling people to "grind leetcode" because you legitimately believe this is a good way to find good talent ... you need your head examined. All you're doing is filtering for people who've grinded leetcode long enough to memorize solutions. This has ZERO correlation to software development ability.
Yes, you can certainly find companies out there that don't interview in this way, but leetcode interviews are extremely common.
No, they want the code to match their expectations. I interviewed last year, and breezed through the early and behavioral stuff, occasionally being up leveled or oddly positive feedback in the process. They'd often quickly move from interviewing to selling me, talking openly about (relatively good) salary, etc. Then I'd do the leet code* part and lol, bye bye. And after about 10+ rejections, as I got better (and similar) coding questions, suddenly that all changed. Rejections became offers, "not good enough" became "one of the best ever" -- same person, same(ish) questions. They all just care a LOT about the quality and speed of the coding part (along with the level of style and communication they expect). Its not unreasonable, I guess. Its odd, its frustrating. Maybe its accurate. But its best to accept what it is, get REALLY good at the coding part, and you'll get a lot more wiggle room if you're bad at the other parts. And if like me, you are great at the other parts, expect to do a lot of interviews to get the offers, and / or a lot of practice (but I strongly recommend interviewing first, as demoralizing as it is, because the companies you like tend to all ask same style of questions, I practiced tons of stuff I didnt end up using).
*They were rarely leet code, usually more realistic coding questions. But same vibe.
I'm not discounting that it is hard to find tech jobs right now, but have you considered that this attitude of "grinding leetcode" is possibly contributing to companies not biting? I would imagine the most important qualities to have in an interview are going to be charisma and an ability to reason through technical problems.