I remember John Washam's original blog post that followed his preparations for taking a Google SW interview. At the time, I felt he way over-prepared and wasted time on things that weren't directly relevant to the actual interview.
Looking at his new study plan, it looks like he's learned from his original undertaking and created an exhaustive list of things to know for a FAANG interview. I do think he skipped over the behavioral interview preparations which can be extremely important for certain companies.
Create, modify, and test the code and scripts that allow computer applications to run. Work from specifications drawn up by software and web developers or other individuals. May develop and write computer programs to store, locate, and retrieve specific documents, data, and information.
Illustrative examples: Applications Programmer , Computer Language Coder , IT Programmer , Systems Programme
15-1252 Software Developers
Research, design, and develop computer and network software or specialized utility programs. Analyze user needs and develop software solutions, applying principles and techniques of computer science, engineering, and mathematical analysis. Update software or enhance existing software capabilities. May work with computer hardware engineers to integrate hardware and software systems, and develop specifications and performance requirements. May maintain databases within an application area, working individually or coordinating database development as part of a team.
Illustrative examples: Computer Applications Engineer , Computer Systems Engineer , Mobile Applications Developer , Software Applications Architect , Software Engineer , Systems Software Developer
15-1254 Web Developers
Develop and implement websites, web applications, application databases, and interactive web interfaces. Evaluate code to ensure that it is properly structured, meets industry standards, and is compatible with browsers and devices. Optimize website performance, scalability, and server-side code and processes. May develop website infrastructure and integrate websites with other computer applications. Excludes "Special Effects Artists and Animators" (27-1014).
Illustrative examples: Intranet Developer , Web Applications Developer , Web Architect
Instead of seeking wisdom in this arbitrary tome, I'd instead look at it as if it's an append-only CSS file where nobody ever goes back to rethink the taxonomy which I guarantee more closely reflects the reality of it.
It's like thinking there's actually difference between "Coder", "Computer Programmer", and "Software Developer" just because developers kept penciling in those roles into a form. Anyone with experience in the industry knows that any of those could have the exact same job.
- Create robots/IoT projects with frameworks like Cylon.js, Johnny-Five, etc.
Sure, you can't use JS to program some stuff (integrated circuits, cisco networking gear, etc.), but there's a lot more you can do with it than web programming.
Given there are plenty of browser, mobile, desktop, and even embedded disciplines that utilize URIs to transmit resources I think that's a very broad term. Or did you have another definition for web?
At my company, this was not true until a new CTO stepped in. That was nice because it instantly increased my salary by about 20% with no change in work.
There’s a lot of interesting posts with facts and the like for me it’s just: “I’ve tried to do web development and failed every time. The barrier to entry is too damn high. Babel, webpack, blah blah blah, then frameworks, and then good UI design and then efficient API consumption...”
I started as a "web developer" without any credentials and have transitioned to "software engineer" without any credentials, though now I'm actually not 100% sure how I did that.
Mostly I just obsessed over functional programming for a long time, and then took the first job I could find doing Haskell (at NYU), then doing an Erlang chat server at a startup, and then doing F# at Jet.com. I guess people assume that only engineers and academics want to do functional languages.
I started as a mobile dev, transitioned to backend, and somewhere between then and now, I've become an engineer. My skillset never really changed and the only cert I have is unrelated to code. I feel like it's just title creep. When I was a kid building websites "web dev" was the cool title. Now it's "something something engineer."
I mean, in fairness to me (and possibly you, I don't know), I do a lot more algorithmic stuff now than when I first started. I actually have to think about time-complexity in what I do, in addition to knowing the best kind of concurrency algorithms for a certain task.
I haven't done any web dev in awhile, and my understanding is that this has changed, but when I was doing it, you could get away without worrying a lot about performance or theory.
My dear friend, Web Developers are indeed software engineers. In fact, a Software Development Engineer is essentially Developer for short.
All software engineers have some sort of specialization or another; there is nothing preventing a web developer from writing software in another discipline.
A very large portion of developers at FANG companies are web developers; the web is a big part of software these days. FANG companies do not have a monopoly on defining what software engineering is.
Even if you are currently in a FANG company, you must take some time to prepare before you go to an interview for another FANG company. The reason is simple, you don't really get a lot of algorithm/data structure practice in most day jobs; leetcode is your friend.
And please, can we stop this incessant gatekeeping? It does not help. There are a lot of amazing software engineers working at non-FANG companies doing great work, building great things.
> And please, can we stop this incessant gatekeeping? It does not help. There are a lot of amazing software engineers working at non-FANG companies doing great work, building great things.
Sure, but not making north of $200k in non-management, non-super-specialized-and-rare positions. Except ("mostly", I must add, because this is an Internet comment) at places that interview similarly.
[EDIT] While we're at it—dear all you folks hiring in the low to mid-100 range for remote positions: your competition, for me, includes local places that don't have a weeks-long five-stage hazing interview process that take 4-8 hours total time, or more. They have maybe two hours of relatively low-stress phone calls and in-person conversations and make a decision in a day or three. And offer the same money you do. They shit or get off the effing pot, because they know if they don't they'll miss me. Your slow-ass high-time-commitment "oh we'll do two hours of pair coding online then fly you out and have you do a half-day of whiteboarding" processes are why it's "hard to find developers", assuming the money you're offering is right. You are not Google. Your money is not Google money. Your competition includes shops that have cashflow and contracts and need—need—developers with half a clue right now and can't afford to dick around, and they pay the same that you do. Knock it off. I'd rather work for you guys but you make it a real pain in the ass.
You can get >$200k in non-FANG. I know of at least one company in Austin, the position is partial remote, you can work 3 days from home if you want to.
I completely agree with your sentiment in the [EDIT] part. My theory always was that remote shops can do more `hazing` because they have people who want to freely move/travel/go full digital nomad lining up for them. Would be interesting to know if this is the case.
29 comments
[ 2.8 ms ] story [ 74.7 ms ] threadLooking at his new study plan, it looks like he's learned from his original undertaking and created an exhaustive list of things to know for a FAANG interview. I do think he skipped over the behavioral interview preparations which can be extremely important for certain companies.
- 15-1251 Computer Programmers
- 15-1252 Software Developers
- 15-1253 Software Quality Assurance Analysts and Testers
- 15-1254 Web Developers
- 15-1255 Web and Digital Interface Designers
Quoted from the Bureau of Labor Statistics:
5-1251 Computer Programmers
Create, modify, and test the code and scripts that allow computer applications to run. Work from specifications drawn up by software and web developers or other individuals. May develop and write computer programs to store, locate, and retrieve specific documents, data, and information.
Illustrative examples: Applications Programmer , Computer Language Coder , IT Programmer , Systems Programme
15-1252 Software Developers
Research, design, and develop computer and network software or specialized utility programs. Analyze user needs and develop software solutions, applying principles and techniques of computer science, engineering, and mathematical analysis. Update software or enhance existing software capabilities. May work with computer hardware engineers to integrate hardware and software systems, and develop specifications and performance requirements. May maintain databases within an application area, working individually or coordinating database development as part of a team.
Illustrative examples: Computer Applications Engineer , Computer Systems Engineer , Mobile Applications Developer , Software Applications Architect , Software Engineer , Systems Software Developer
15-1254 Web Developers
Develop and implement websites, web applications, application databases, and interactive web interfaces. Evaluate code to ensure that it is properly structured, meets industry standards, and is compatible with browsers and devices. Optimize website performance, scalability, and server-side code and processes. May develop website infrastructure and integrate websites with other computer applications. Excludes "Special Effects Artists and Animators" (27-1014).
Illustrative examples: Intranet Developer , Web Applications Developer , Web Architect
(Source: https://www.bls.gov/soc/2018/major_groups.htm)
It's like thinking there's actually difference between "Coder", "Computer Programmer", and "Software Developer" just because developers kept penciling in those roles into a form. Anyone with experience in the industry knows that any of those could have the exact same job.
- Create iPhone & Android Phone apps with React Native framework
- Create robots/IoT projects with frameworks like Cylon.js, Johnny-Five, etc.
Sure, you can't use JS to program some stuff (integrated circuits, cisco networking gear, etc.), but there's a lot more you can do with it than web programming.
Mostly I just obsessed over functional programming for a long time, and then took the first job I could find doing Haskell (at NYU), then doing an Erlang chat server at a startup, and then doing F# at Jet.com. I guess people assume that only engineers and academics want to do functional languages.
I haven't done any web dev in awhile, and my understanding is that this has changed, but when I was doing it, you could get away without worrying a lot about performance or theory.
All software engineers have some sort of specialization or another; there is nothing preventing a web developer from writing software in another discipline.
A very large portion of developers at FANG companies are web developers; the web is a big part of software these days. FANG companies do not have a monopoly on defining what software engineering is.
Even if you are currently in a FANG company, you must take some time to prepare before you go to an interview for another FANG company. The reason is simple, you don't really get a lot of algorithm/data structure practice in most day jobs; leetcode is your friend.
And please, can we stop this incessant gatekeeping? It does not help. There are a lot of amazing software engineers working at non-FANG companies doing great work, building great things.
Sure, but not making north of $200k in non-management, non-super-specialized-and-rare positions. Except ("mostly", I must add, because this is an Internet comment) at places that interview similarly.
[EDIT] While we're at it—dear all you folks hiring in the low to mid-100 range for remote positions: your competition, for me, includes local places that don't have a weeks-long five-stage hazing interview process that take 4-8 hours total time, or more. They have maybe two hours of relatively low-stress phone calls and in-person conversations and make a decision in a day or three. And offer the same money you do. They shit or get off the effing pot, because they know if they don't they'll miss me. Your slow-ass high-time-commitment "oh we'll do two hours of pair coding online then fly you out and have you do a half-day of whiteboarding" processes are why it's "hard to find developers", assuming the money you're offering is right. You are not Google. Your money is not Google money. Your competition includes shops that have cashflow and contracts and need—need—developers with half a clue right now and can't afford to dick around, and they pay the same that you do. Knock it off. I'd rather work for you guys but you make it a real pain in the ass.