So basically you're asking for a HackerRank screening. In my experience, if your code doesn't pass 100% of all test cases you get automatically rejected. At least with a human interviewer, they can evaluate your thought process even if the code itself isn't quite correct. Trust me you don't want to me interviewed only by robots.
If you don't actively review this material you're going to forget it. I created my own study guide for data structures/algorithms that I frequently review to prevent forgetting any concept. Every few days, or at least once a week, I'll take a blank sheet of paper and try to write down everything I possibly know about every fundamental data structure, including pseudocode and real code for operations such as searching/insertion/deletion. When I go through interviews I read my notes and do this active recall exercise at least once a day every day. Unfortunately there's no shortcut and you have to actively think about and code this material in order to remember it (if your day job doesn't involve knowing those things).
So the gist of it is keep practising atleast once or twice a week and more so when you have interviews. And for the rest of the time, learn things that interests you. Right?
Technical interviews only test your data structures and algorithms skills and your actual work experience is mostly irrelevant. If you want to crack an interview, grind leetcode and practice writing code on a whiteboard. If you want to become a better developer, create software.
San Francisco marathon isn't generally regarded as an elite event, let alone "famous". Most metropolitan road races are around this price point. Especially pricier the closer you register to race-date.
But to your point, there are many smaller races that are cheaper. But often these are less organized, fewer road closures, less exciting, fewer perks; you get what you pay for.
#2: Have almost too much self-belief. Self-confidence has been something I've struggled with my entire life, to the point where its crippled my career growth as a developer. I've been told that I'm a good developer, but if I only believed in myself I could go a lot further and become truly great. However, it's hard for me to believe in myself when I don't have a lot of data points to prove that I AM competent and capable. Over the past 3 years of working full-time yes I've accomplished some things, but none of them were truly difficult or ground breaking. I'm always pushing myself harder to learn more and get better, but it never feels like its having enough impact on me actually growing. So if all I have are at best average/mediocre accomplishments, how do I convince myself that no, I AM great, that I CAN do this? I feel like if I start having a lot of self-belief it'll just become a lie that will blind me from my weaknesses and cause me to stop growing.
> Over the past 3 years of working full-time yes I've accomplished some things, but none of them were truly difficult or ground breaking.
3 years? Fuck. It sounds like you're on track for a long and successful career. Not everyone peaks early. Give yourself a break, spend a little more time networking and a little less time on your hard skills and you'll probably find greater opportunities for ground breaking things through relationships than through your skills.
I've been trying to find solutions myself - I'm trying to use some strategies listed in this book: The inner game of tennis, by Timothy Galloway, and I'm seeing positive results so far. He talks about 2 versions of self: self1 - the doer and self2 - the judgemental self, which is constantly evaluating self1, and adversely affect self1's potential. He has some useful suggestions on how to limit the impact of self2, and I found those pretty helpful so far.
If there's a common pattern of anxiety or lack of concentration in life, then it may be worth it to go to a family doctor or therapist to talk about it. This isn't an easy black-and-white decision to make either. It may take months or even years of self-reflection to come to terms with that, and even more time to work up the courage to seek help for something so ambivalent.
It's hard to be your successful when you're not the best version of yourself.
Hmm, your post made me think of machine learning somehow, because a life does seem like finding a good place in a maze/forest/mountain to me. Do you want to reach the absolute highest (i.e. global maxima)? I can tell you that it might be impossible, because you might have landed at a bad starting point! Some people try that anyway, but I found that's not really my style. Instead, I try to reach some local maxima and be happy about it (depending on your situation or upbringing). It's quite doable. Every day you nudge yourself to a slightly better point that is reachable. Sometimes you want to choose a steeper slope which is harder but also gains a lot. Rinse and repeat. It won't get you to some remote place like Mt. Everest, but hey, a nearby hill can be still pretty good! What's important is that you get an actionable plan instead of a vague and seemingly unachievable goal. Here's my favorite quote which put it quite nicely:
Do what you can, with what you have, where you are. - Theodore Roosevelt
"it never feels like its having enough impact on me actually growing"
Then you aren't outside your comfort zone enough because when you are, there will be NO DOUBT you've grown.
Do you know what the difference between a shitty golfer (like me) and a slightly better golfer (like my brother) is? Maybe 25 rounds of golf per year. If I played 25 MORE rounds of golf, I could beat him solidly.
Do you know what the difference between say Tiger woods and the very best Amateur golfer in the world is? A thousand rounds of golf. Ten thousand?
Point 1: Down here in the land of the unwashed masses of basically average developers like you and I, you can make noticeable strides by just consistently working a little harder. You can make leaps and bounds by consistently working A LOT HARDER.
Point 2: Once you start advancing past people, it gets harder and harder to advance past people. There's only so much room at the top, in every possible hierarchy. Check out some Jordan Peterson on Competence Hierarchy.
And I guess....
Point 3:
The only real way to be successful is to be comfortable in your own body. I have some bad news for you buddy, this part of the article is complete horse shit.
"The most successful people I know believe in themselves almost to the point of delusion. Cultivate this early. As you get more data points that your judgment is good and you can consistently deliver results, trust yourself more."
Cultivate what early? Delusion? Self confidence? \eyeroll
Success means actually liking yourself and nothing more. Some people call this CONFIDENCE. Same exact thing.
How do you become confident? Achieve.
How do you achieve? Apply your knowledge.
How do you get knowledge? FAIL AT THINGS
How do you fail at things? Try new things.
By the way "success" is such a stupid word. I have worked very, very closely with someone who has $100M in the bank. I was his computer guy for all his properties around the world and guess what? He's jealous of another guy we know with $1B in the bank.
Success != Money
Confidence != Money
Success == Confidence
OH and guess what shows up when you have confidence?
You need objective metrics of two kinds: absolute and relative.
Relative metrics will show if you really are better than most other people. Absolute ones will show whether or not you can, in fact, do X to some standard.
I do not suffer from Imposter Syndrome. That's why. I find measures that show me what I can do, and to heck with all the sturm and drang from most people.
OMG, you've been working for 3 whole years and haven't done anything ground-breaking?! Seriously though, maybe you aren't 'great', whatever that means exactly, and I doubt it's necessary for you to believe that, whether it's true or not.
You might find (books like) Albert Ellis' New Guide to Rational Living useful - I did! It's about observing and recording your recurring thoughts, particularly ones that make you feel bad, and replacing them with more accurate, helpful ones - stopping the self-sabotage. It's amazing how mean we can be to ourselves without noticing. We're trained to be nice to others, without including ourselves in that. I used to do a lot of extremely negative, paralyzing self-talk - saying nasty things to myself I'd never dream of laying on someone else; sounds like you do this too, maybe. This falls under "How to love yourself", something I had to learn to do. Louise Hay has a great 12-point list of things under that heading, stuff like "Treat yourself like you'd treat someone you really love." Then as you get older, you realize you aren't so terrible, and others aren't so great..
I think 'self-belief' comes naturally with untangling that stuff, and otherwise isn't always a good sign, e.g.
"Thoroughly worldly people never understand even the world; they rely altogether on a few cynical maxims which are not true. Once I remember walking with a prosperous publisher, who made a remark which I had often heard before; it is, indeed, almost a motto of the modern world. Yet I had heard it once too often, and I saw suddenly that there was nothing in it. The publisher said of somebody, "That man will get on; he believes in himself." ...I said to him, "Shall I tell you where the men are who believe most in themselves? For I can tell you. I know of men who believe in themselves more colossally than Napoleon or Caesar. I know where flames the fixed star of certainty and success. I can guide you to the thrones of the Super-men. The men who really believe in themselves are all in lunatic asylums." He said mildly that there were a good many men after all who believed in themselves and who were not in lunatic asylums. "Yes, there are," I retorted, "and you of all men ought to know them. That drunken poet from whom you would not take a dreary tragedy, he believed in himself. That elderly minister with an epic from whom you were hiding in a back room, he believed in himself. If you consulted your business experience instead of your ugly individualistic philosophy, you would know that believing in himself is one of the commonest signs of a rotter. Actors who can't act believe in themselves; and debtors who won't pay. It would be much truer to say that a man will certainly fail, because he believes in himself. Complete self-confidence is not merely a sin; complete self-confidence is a weakness. Believing utterly in one's self is a hysterical and superstitious belief.." - G.K. Chesterton, Orthodoxy
That's hilarious and so true. Last year I interviewed for a senior back-end engineering position at a well known mid-sized company in the Bay Area. They put me through 2 technical phone screens and a 6 hour onsite interview, grilling me in detail about system design, domain knowledge, personal experience, and of course doing endless exercises of writing solutions to algorithmic problems on a whiteboard. I really felt like I nailed the interview but they still rejected me because they thought my technical skills weren't good enough. 7 months later I start applying to jobs again via LinkedIn, and guess what, that exact same position on the same team is still open. It seems insane that during the past 7 months they couldn't find a single person to fill that role. Makes me wonder if they know what they're really looking for.
There's a whole metagame of HR metrics within companies. KPI's are set to interview X amount of candidates or extend Y offers. Arbitrary hiring is a common goal after a fundraise. Not every HR team sets thoughtful efficient goals or gets reviewed for waste. This can lead to perpetual interview pipelines and fake work to keep the Hiring team employed. This is equivalent to software engineers building knowledge moats for job security.
It's also possible someone quit. LinkedIn has/had a feature where you can find people who used to work at company X. I interviewed somewhere and got an offer. The work was up my alley, and the interview was a difficult but fair interview. But it felt it was a bit too "fast-paced" for my taste. I used that LinkedIn feature and saw most engineers stayed about a year there.
"senior engineer for team y" is a position that's constantly been hired for at most growth companies. The fact that they're still hiring for it probably doesn't mean much.
Respectfully, I don’t think you can really determine much from the outside, there are just too many things that happen. Maybe they hired someone and then they ran into visa issues, maybe someone switched to a different team, the possibilities are endless.
One thing I will say is that for many employers, a "no" now doesn't mean a "no" forever.
2015 15" Macbook Pro. The screen size and resolution is perfect for coding and watching movies. Keyboard is super comfortable, the touchpad is the best of any laptop I've ever used. The physical size and weight of the laptop is hardly noticeable in my backpack. It integrates flawlessly with all my peripherals like a mechanical keyboard, mouse, external monitors, etc. macOS is also sleek and simple. The overall experience of using that MBP is a pleasure.
This might sound stupid, but another thing I really like is that the headphones jack connector is aligned with the Caps Lock key. When I take the laptop on my couch with headphones, I just look at the Caps Lock key to find the socket.
It might be random chance, but I think someone at Apple designed it this way. Saves me maybe half a second but it's thoroughly satisfying.
You can't learn this in a book. You need to put yourself out there (in social settings) and learn through trial and effort. Much like reading books about weight lifting won't make your body grow muscle, you need to actually get inside a gym and put in the work.
I was given a take home project to complete as part of an interview process for one company. I was given 48 hours to implement a basic chat server in Golang. I didn't know Golang, but the hiring manager thought it'd be a good challenge to see how quickly I learn new things and deliver results. I spent an entire weekend learning Go and tried to be honest about using only 48 hours to write the application. I wasn't given any skeleton code, had to implement the whole thing from scratch. I never made an entire web app from scratch especially in language I wasn't familiar with so the learning experience felt like drinking from a firehose. I learned a ton but couldn't complete the project because it was a bit too much on top of my full-time job and going through interviews with other companies, so I submitted my barely functioning code in shame and knew that was automatic rejection right there. I wonder if I'm just a shitty developer or if given enough time I would have been able to make it work.
Maybe it's just me, but I'm not sure what the point of take home projects like that is. Like my first instinct for something like this is to Google it. Guess what happens when I do google "chat server in golang"? I get a bunch of examples. So do I just copy them/strip them down/combine the examples or do I try to code this thing from scratch with no examples? Guess which I would do in an actual job?
No, you're not a shitty dev. I'm sure given enough time you would have gotten it. Take home projects are weird. They are better than the whiteboarding imo, but only barely.