UPDATE: See Part 2 of this post
For many software developers, working in Silicon Valley is the ultimate dream. Exciting technologies, fast growing companies and everyone is awash in cash.
Who wouldn't want to be a part of that?
Today, I'm going to talk about the other side of that coin. Because many of us are taking for granted, the advantages we have right in front of us.
What if I told you that you could make more money, right now, with minimal effort. With less than five hours effort, you could increase your pay by 25% or more.
If you don't believe me then I'm telling you now: the fact that you don't believe me is THE PROBLEM.
A lot of developers don't place a high value on the knowledge that they have. It may be easy for you to write code. That doesn't mean it's easy for companies to find enough people like you.
A lot of developers, myself included, weren't the cool kids in school. So we tend to have a lot of limiting beliefs about ourselves.
If you want to know how to make more money then keep reading. If you want to work on interesting projects, then I'll tell you how.
But first, let me back up and give you the bigger picture.
Be Careful What You Wish For
If you live in a smaller city, where it's cheaper to live, it may be tempting to move to San Francisco.
I thought about it a lot myself. But do you want to know a secret? It's not worth it.
If you want to make more dollars, sure California has them for you. But it's not the top line that matters, it's the bottom line.
Do you want to make $100,000 and be broke or do you want to make $100,000 and be rich?
If you want to take away more money, then you need to be in a city where your expenses don't kill you.
I used to think that being successful meant getting hired by one of the big tech companies. And for some people that's the end game. But for me, it turned out to be dead wrong.
If you're holding out hope that you'll be in the valley some day, then you're wasting time. Your success has nothing to do with Google, Apple, Microsoft, Amazon or Facebook.
I used to think, "Sure I'll make more money as I go along in my career. But I'll never make really good money unless I'm with one of those big companies."
This was a huge limiting belief that I had. It actually caused me to settle for less for a lot of years in my career.
It turns out I didn't need the valley. I woke up. I decided that I wouldn't settle for less anymore.
I looked around and I saw that companies were constantly hiring more software developers.
In fact, they never stopped. They ran ads for software developers 100% of the time.
It occurred to me that they can't hire developers fast enough to meet their demand.
I took macroeconomics and microeconomics in college. It wasn't hard to figure out: high demand and low supply equals higher prices.
ADHD + Google Interview !== aGoodTime
But let me tell you why I think the big tech firms are a waste of time for most people.
If you work at one of these firms, nothing personal, this is just my perspective.
And if your number one goal in life is to work at Google then don't let me stop you.
My logic here doesn't apply to the outliers, only to the average person.
NOTE: It is possible that I am biased. It may be that I am too stupid to work at one of these companies. Or I could have a chip on my shoulder because I didn't go to an Ivy League school. Or I may be deficient in magic pixie dust.
Regardless, the big tech firms are an enormous pain in the ass to deal with. They get hundreds of thousands, even millions of resumes per year. It's hard to get noticed to begin with.
You will also have to prepare vigorously for this interview. You'll have to dust off that algorithms text book from college. You'll have to know time and space complexity. Data structures. Bit operations. And a whole bunch of other stuff from your comp sci days.
And if you get the job, you may be using some of this stuff and then again you may not. Which is kind of annoying because they're not testing you based on what you will actually be doing day in and day out.
They just want to make sure that you're well-rounded in things that don't necessarily matter. Which makes total sense if you don't think about it.
Let's face it. Some comp sci people I've met would be ready for this interview right out of the gate. They'd be frothing at the mouth to get someone in front of them who's willing to listen to them talk about a red-black tree.
But all those people already work there. And unless you're wearing jean shorts and a silk shirt in the dead of winter and you've coded your own OS in assembly language, chances are, you're not one of them.
You, like me, will likely have to buy a book or spend several weeks studying online to remember any of this shit.
Do you know why? Because it was 15 years ago the last time you attempted to balance a binary tree and you were drunk when you did it.
Brain teasers used to be a thing at these companies too. Something like:
"How many pizzas are there in Seattle right now? And if--hypothetically--you had to fit them all up your ass, how would you do it?"
You know, real practical stuff. Talk about applied mathematics! But thankfully, the big tech companies have backed off these.
If you didn't go to an ivy league school then you may not even get a phone screen. These companies love ivy leaguers. I guess paisley red pants have a correlation with strong programming ability.
Also, did you have a good GPA in college? I hope so, or this may be the end of the road for you as well.
If you are an ivy leaguer, or you managed to slip through undetected, then get ready. Because now the fun begins.
You will likely have to go through several phone screens just to get a real interview. And this is annoying as hell.
Most interviews I've had were with normal companies. These interviews almost always consisted of one phone screen followed by one on-site interview.
Back to the Hazing
If you're granted an in-person audience, then you'll have to fly to wherever their office is.
Once you're on-site, relax and make yourself comfortable. Because you're going to be here all fucking day.
You will now slog through an entire day of intense interviews. Unless of course someone doesn't like you. In that case, they'll stop and tell you, "Don't let the door hit you in the ass on the way out."
And these aren't ordinary interviews. When you're an extraordinary company, your interviews have to be anything but ordinary.
In the interviews, you will be coding actually. Which is great right! Because that's what you're good at.
Of course you'll be doing the coding without a computer. Without an IDE, Intellisense, Google, StackOverflow, reference books, or a debugger--basically in a vacuum.
I'm not really sure what the logic behind this strategy is. Were all the actual computers taken already?
If you manage to make it through all the face to face interviews, great. Now you just need to make it past the hiring committee(s).
They will take your resume and all the written feedback from your interiewers to make a decision. This is where having the ability to make a strong impression on paper is crucial.
This whole process can take weeks, months even.
This all sounds pretty frustrating right? That's because it is.
But the payoff is huge if you make the cut..isn't it?
As annoying as all that was, I'm just setting the stage for the real meat.
In Part 2, I'll talk about why you don't want this job in the first place and why it's not as great as you think.