4 ms·
Keep in mind, you also have to be technically strong and organizationally savvy to get to this level. For starters, as a baseline, you need to be very sharp at
by geebee 11y ago
Keep in mind, you also have to be technically strong and organizationally savvy to get to this level.
For starters, as a baseline, you need to be very sharp at coding interview style questions. This isn't fizzbuzz. Based on my tech interviews at google and a few other companies, I'd say a question like [1] "find the sub matrix with the largest sum in an NXM matrix" is something they really will expect you do complete at a high level of accuracy in 45 minutes at a whiteboard, including run time efficiency improvements. You'll get some help, and they won't be complete sticklers about syntax, but they will largely expect you to writing accurate code that would compile and run properly without too much help. You'll need to be able to follow through on questions like this in a areas, such as binary, algorithms and data structures, and some operating systems issues (threads and processes, in particular), along with good overall design skills. While it is absolutely possible to get to this point without a CS degree, and many people do, it requires an academic talent, mindset, and ability to focus.
That's the baseline. Generally, that's the ante that gets you in the game. I think there's a way around, which is to create your own projects that are so high profile that you get hired directly into a company at a high enough level that you bypass the entry exams. However, this is rare, and plenty of people who have excellent track records are still filtered out at the interview level.
After that, you need savvy. My observation after 15 years in the field is that the people who are considered technically exceptional are also organizationally savvy. They're not fakers, at all, they really are good technically, but they understand how to pursue the good projects and avoid the bad ones. It becomes self-affirming after a while, their reputation allows them this kind of selectivity. But they don't get stuck on legacy projects that don't enhance their skills. They are able to navigate organizations well, and this requires political and social savvy.
In short, these people are both very strong technically and have the social savvy to get high profile projects where they will continue to learn and gain recognition for their achievements. This combination is relatively rare in humans.
I will agree that this kind of person has opportunities in the valley that are available only to a lesser degree elsewhere, and may not be available at all in some places.
[1] NOT an actual question from my interviews, but at about the level I'd say I experienced (maybe even a bit easier). I highly recommend the book "cracking the coding interview", just be aware that yes, really, they will expect this sort of thing in 45 minutes at a whiteboard with accuracy and efficiency.
- bpyne 11y agoMy first thought, about the sub-matrix interview question you posed, is that it's a younger person's game. The last time Linear Algebra entered my mind was in the undergraduate course I took in 1986. I would never even think to prep for questions like that because nothing except basic set theory and logic has been necessary in my career the last 25 years. (Although, I'm told that the programming language design course I'm taking this Fall will require a refresher in Linear Algebra. Hopefully it comes back to me.) Good observation about the technically exceptional people also having organizational savvy. They generally know how to send the message that they played a part in successful projects without seeming to take undue credit. The message gets picked up by the project/product managers and a reputation starts.
- geebee 11y agoI don't mean to sound too cynical when I mention organizational savvy. These people don't create the illusion of a contribution, they really make the contribution. It just isn't all based on technical skill. Experience has shown me that people (managers, senior developers who have delegating authority, and so forth) have trouble resisting the temptation to take the interesting work for themselves and assign the difficult, risky, and often dreary and dead end work elsewhere. Socially savvy developers are able to avoid these projects and instead end up on teams where they do interesting, relevant work that aligns well with their own interests and builds a lasting skill set. They don't end up debugging the old perl script that migrates data from peoplesoft to oracle and/or porting it to python. They end up on relevant and interesting data science, UI, or infrastructure projects, where they can learn tremendously. They are able to work on projects that align closely with their own personal interests and passions, which keeps them motivated (for instance, if they aren't into UI or Javascript, perhaps they work on a high profile machine learning or infrastructure project). They don't emerge two years later with deep understanding of a legacy system that mainly irritates the organization, they emerge with a skill set that aligns closely with the exciting new direction an organization wants to take. Again, I don't want to sound cynical, they also earn this through excellent technical skills, hard work, and meaningful contribution. But it does require social and organizational savvy to make sure your career trajectory doesn't get derailed. Almost every time someone looks up in the org and says "yeah, well, that programmer is just a technical badass", this is true, but I guarantee you there was exceptional social and organizational savvy behind that ascent as well.