My advice to my 22 year old self, in order of priority, would be:
1. Get financially literate. Before any "hobby projects" make sure your money is working for you.
2. Take care of yourself physically. Join a martial arts gym. It will give you a community "outside of programming", keep you fit and you will have the pressure to show up no matter what.
3. Don't forget the basics - data structures, algorithms & distributed systems. Most companies asks for this. It may be a FAANG impostor syndrome but it's there.
4. Keep work as work. Do not develop a "passion for your job". Herculean efforts developing a CRUD app will not translate easily to more money at another company (see #3).
> 3. Don't forget the basics - data structures, algorithms & distributed systems. Most companies asks for this. It may be a FAANG impostor syndrome but it's there.
I wish I had realized when I was younger how much of a red flag the FAANG interview processes are. They put you through hell to get the job, and if you get hired you waste most of your time wading through bullshit, and nobody ever uses any of that stuff they got quizzed on. Don't take a FAANG or Enterprise job unless you want to collect a paycheck while wading through bureaucracy. (they're not all like that, but enough of them are that I won't go back)
I already severely dislike the interview process and I've only just started my entry-level, new grad job search, but there isn't much I can do to avoid it. I have also been looking into startups (ycombinator included) but haven't heard back yet, but I'm patient - it's a holiday break.
I have been slowly developing a study plan for data structures and algorithms since it's been a while since a took a class on that and that makes up most of the interview process for new grads from what I hear from peers. If you have any advice or resources on that, I would greatly appreciate it as well. Thank you!
If you're just starting out, and I'm looking to hire you, I'm looking for samples of your work. Contribute to open source projects and build your own projects. They don't have to be rocket science. Just show that you have a handle on the Software Development Life Cycle, that you can work with and contribute to teams of people, and try to incorporate all the professional software development practices into your project. After you do that with a "Hello World" app, you can show off your coding skills more, but a very simple example will do to start.
> nobody ever uses any of that stuff they got quizzed on
I’ve seen many threads on HN debating this, and I wonder if this actually matters. Isn’t the point of a good interview process to separate good candidates from bad with a few false positives and false negatives as possible? My understanding is that the “basics” are an effective filter for people who can build fundamental levels of understanding and therefore adapt to different challenges easily.
The complaint as I understand it is that if it's just supposed to be harder/more academic 'FizzBuzz', then it ought not to be something that requires revision, cramming prior to the interview (probably sufficient in itself! So what's it testing?) because it's not memorable/derivable after years of doing something different or that's built on top of abstractions on top of abstractions on top of abstractions on top of the question.
But I've never actually had an interview like it (or I have I didn't realise/object to it myself) and discussions about it tend not to be particularly concrete. For example in the spirit of 'harder/more academic FizzBuzz', I think 'given this data structure, write a function to transform it or others like it into one that looks like this' is perfectly reasonable, but say 'in big-O terms, what's the best an algorithm to invert a binary tree can be? Write it' is a bit unfair for a job writing CRUD apps.
It's a filter, but not a particularly effective one. It just shows a human can act like a robot and memorize/regurgitate information. It doesn't show dynamic problem-solving skills (nobody at a real job is pressured to solve a complex problem in 30 minutes on a whiteboard, and most people should be asking their teammates or researching to find the best answers), interpersonal skills, communication skills, or the specific skillset needed for a specific role. You have no idea how this person is going to adapt to those challenges just by showing you an example of a linked list. It's also possible that interview challenge questions are the only thing the candidate knows.
"I distinguish four types. There are clever, hardworking, stupid, and lazy officers.
Usually two characteristics are combined. Some are clever and hardworking; their place is the General Staff. The next ones are stupid and lazy; they make up 90 percent of every army and are suited to routine duties.
Anyone who is both clever and lazy is qualified for the highest leadership duties, because he possesses the mental clarity and strength of nerve necessary for difficult decisions.
One must beware of anyone who is both stupid and hardworking; he must not be entrusted with any responsibility because he will always only cause damage."
Well that's that confidence/experience curve (commonly attributed to Dunning-Kruger effect, idk if it's a reasonable interpretation) in a nutshell isn't it?
1. I'm so great; 2. I'm such an imposter; 3. I'm quite experienced, I know what I don't know.
Could it just be the Dunning-Kruger effect in play? it takes a while to realize how much you don't know (some don't stick around long enough to realize that or lack the self-awareness and self-inquiry)
This is something I didn't do early on and feel some level of regret around it. Again this is my personal opinion and you'll need to research / customize for your needs.
I've used Eric Tyson's "Personal finance for dummies" and "Investing for dummies". Both are excellent resources.
Basically:
1. Invest in your 401k and max it out if possible. The advice I've seen is use the Roth 401k instead of 401k. That way withdrawals in retirement are tax free.
2. Move money and invest actively (mostly mutual funds but keep some for speculation as well).
3. Look at a source that can provide additional income passively. E.g. Dividend shares, Real-Estate, etc.
4. If you plan to have kids research 529 plans. Some states provide a tax deduction on the 529 investment. You can setup a 529 even if you don't have children now and add in the beneficiaries later.
5. Estate planning - setup a trust. Makes it really easy to transfer money to heirs and other beneficiaries.
6. If you buy a house (and plan to have children) buy one in a good/excellent school district even if they're a little expensive. The houses hold value and appreciate much better.
It's a rather convoluted topic and finding good financial advisors is hard. I'd welcome suggestions and corrections.
1. Get financially literate. Before any "hobby projects" make sure your money is working for you.
2. Take care of yourself physically. Join a martial arts gym. It will give you a community "outside of programming", keep you fit and you will have the pressure to show up no matter what.
3. Don't forget the basics - data structures, algorithms & distributed systems. Most companies asks for this. It may be a FAANG impostor syndrome but it's there.
4. Keep work as work. Do not develop a "passion for your job". Herculean efforts developing a CRUD app will not translate easily to more money at another company (see #3).
5. Impostor syndrome is real. Do not fall for it.