Looks like my comments get deleted. Tech stack at my firm is similar too but non-internal tool version of such. No C++ though and Kotlin instead of Java.
At Amazon we have a ton of internal tools as well, but they kinda suck, especially when it comes to testing. I'm on a team that owns backend services (Java) and some front end components (React, TypeScript, GraphQL).
@@michaelasin6050 We have an internal version called Borg which I guess is public info. Here's the paper on it: static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf
I don't know anything other than DSA and system design. just core java. Do I need to know anything else?? before entering google?? I have interview scheduled. Currently i'm working in networking domain and work is mainly based on C.
@@x12624 thank you. i'll make sure i know those things. anything else you would like to suggest? please let me know. I want to make it to FAANG and survive there. My dream.
The version control is actually a homebrew thing with origins based on Perforce's model. Though there is a Mercurial based compatibility "thing" (more than a shim, but less than a legit full mirrored central hg repo) available, which is probably what you were referencing.
90% of tech companies in China use Java based tech stack. The interviews contain very in-depth Java knowledge which requires you to read the source code of some Java basic package.
Same in India. Most tech stacks are on Spring MVC/Spring Boot and frontend is on Angular/React. MySQL database with Redshift (AWS), or Snowflake. Apache Spark, Kafka etc.
Hi Zhao, I am starting out with java again after 5 years of last using java ever, Any suggestion how should I start, basically I want to reach to expert level but there are too much clutter on web but most resources only teach introductory academic level Java, I dont want to get stuck in Tutorial hell and looking for direction that can help me prepare an Industrial experience on my own. Thanks.
I am eternally grateful to you ! I got my job offer a few days ago and will be starting early August ! Your videos really helped me get the job. I hope I can see you around at Google :)
@@jv1192 yes you can and you should stick to 1 language as a beginner, and focus on the Software Development concepts rather than the language itself, once you get enough experience, you will realize that language is just a medium to express your thoughts! I am an Android developer for example and only know JVM based languages (Java/Kotlin)
I work at AWS on Account Administration, we run with Java and most of our micro-services with Native AWS server less products (Lambda, DynamoDB, SNS, SQS, Step Functions, CDK). We also use a lot of internal tools for ticketing, code review, CI/CD etc.
@@liamconverse8950 For rarely used APIs, Java may not be a good choice because of cold start. But after the instance is 'HOT'... then it is faster than most of other languages. After the first call, the instance stays online for some time, hoping to answer other requests.
The problem with all that internal tooling is you become completely used to it and dependent on it. If you ever leave it’ll be like you cut your hands off and you’re using prosthetics now. Same goes for all layers of abstraction. Make sure you don’t lose the underlying skills you have.
I'm surprised to hear that Google doesn't use Spring framework for Java projects. I'm korean and like more than half of the back-end software engineer job postings in South Korea requires Java and Spring framework experience for entry level positions.
As someone who works in software support, a lot of people would be surprised about the amount of Java that is used at Enterprise scale. Python, Rust, Go, C++ get a lot of attention from the programming adjacent communities, but there are few languages as prevalent as Java in the server space that can handle Networking at scale.
I think there is no problem is you talk about piper or blaze, there are a bunch of talks about them from back 2017 or so. I also believe the same about Boq and Pod, bunch of talks from ServerConf. It would also be nice to explain the languages we use at Google and when. Java and C++ for backend Servers to receive external traffic, JS for frontend, Go for internal services and managed infrastructure(this is mostly my space in GCP), etc…
Java was released in 1995. Golang was released in 2009. It's like saying why use TCP/IP when there is a better internet stack. They use Go, but they have a lot of products that were existent before the release of Go, and would be hard or waste of time to change them.
Actually they coexists in heterogeneous microservice. Java is pretty well in setting-up the framework to manage all the services. And inside each service, the stack can be Java, Go or C++, as long as they follow the same protocol to communicate.
"angular has a certain way of doing things thats consistent across projects". I wish more tech would be and stay consistent with practices throughout their lifecycle.
The comment on submitting code changes being so easy is so very true. Assuming it's a very simple fix (e.g., typo, comment, trivial bug, etc.), I've had cases where going from noticing the issue, to creating the change, to pushing it for review, to getting it approved, and submitting it, was all done within a few minutes, within one chrome tab (plus the code-reviewer's chrome tab). On the other hand, I've also had cases where relatively simple changes, say about 50 lines of code, could take weeks to forever (aka never) to get submitted, but that's not about tooling, but about scale (when the total power consumption, at data centers, of the function you are changing is measured in how many major american cities it's equivalent to, expect that it will take a while to get that change checked in).
I was not surprised by GraphQL. It is an excellent open sourced tool. I am somewhat surprised by the lack of Kotlin and Rust usage. I was aware of Java and C++ being used and I understand that large scale apps are near impossible to swap out a language. I just figured there would be a more inclination to use something like Kotlin or Rust for microservices especially considering Oracle's and Google's history. There was also no mention of GCP or even using Apigee with GraphQL so it makes me wonder if they use their own internal tooling for APIs. Other than that, very informative. thanks for the share.
There is a bunch of languages you can use, but it comes down to technical factors a lot. Newer stuff can use rust or (especially) kotlin. Internal tooling or (especially) internal versions of open source stuff with better google integration is SUPER common. I be using go a lot at work, but coworkers even on the same team will have not touched go in a bit
I personally think that backend is better than frontend. Most business logic (i.e. the interesting stuff) happens in the backend, and playing with microservices is fun.
you haven't worked on frontend before in that case. Maintaining the state of the UI, how to achieve routing, how to make the rendering fast by pre-fetching the pages etc are all complicated challenges. Both backend and front-end have their own challenges, so saying business logic happens in backend has no weight since business logic is just one piece. Infra people can argue that infra is better than even business logic portion
@@CODFactory why you’re pressed? 😂 I didn’t argue, I intentionally started my comment with “I personally think…” to chase people like you away. And why would you assume I didn’t work on frontend?! I’ve equally worked on frontend, backend and devops.
Pretty cool, I am about to be promoted at my small company to a SWE and our tech stack includes Angular and .Net. Haven't graduated college yet but most of my software classes are in Java, great to know that I am using tech relevant to google.
Man your work sounds really interesting. My current dev role is so boring and is built on such ancient tech that Microsoft doesn't even support it anymore and they don't want to even let us upgrade the version of the program language platform that was used to write the software
It's time to switch jobs I guess unless you get paid a ton and you intend to retire at that place. I used to do Sharepoint 2010/2013 development prior to going to blockchain development.
I use meteorjs at work - it’s a framework for building web app, desktop app and stuff. It’s alright because I work on the frontend and can integrate react and blaze. But good luck when you run into a bug, there is little to no community on the language
Having internal tooling for everything seems so fun, probably makes collaboration easy. I interned at THE open source company and they used everything under the sun, devs could even install whatever OS they wanted. The latter was great, but the former was mildly annoying sometimes
@@friction5001 Some people have preferences in companies as they love the stack those companies use or they love their products, so they want to work on them.
Don't put any company in some pedestal. I say this as someone who is also a software engineer in a tech firm. It's all the same job everywhere. Work for a company that pays you well and has a great team. Google has been known in recent years to pay less than the rest of the market and isn't as preferred among many veteran engineers. Sometimes paying less by over 6 figures just for the name. Same happened to Blizzard in past. Put a company in some pedestal and companies take advantage of its workers. But give a try for sure. Great company to relax at.
Would be cool to get a walkthrough of how the internal tooling (IDEs, repository, pull requests etc) works together. Even if it's just schematic. In that area, a lot of commonly available tooling really feels like some stitched up frankenstein of various barely compatible projects.
Java is mostly likely used, because majority of senior staff in Google come from Java background. And their existing CI, code quality checks, ... Buch of standardisation tools are well tuned for Java.
Using an in-house IDE is really weird when the publicly available options are so good. At Amazon we have our own internal build tools but use in-house plug-ins to extend publicly available IDEs for customization, like working with those build tools.
The IDE is cloud-based, new version is a fork of VS Code, replacing old version that existed for 15+ years. It encourages Chromebook usage and reduces data exfiltration risk.
Amazon's a big place so things will differ a lot between teams. But I use vanilla PyCharm using the company's license, I know some other engineers in the same org I'm in use VSCode. Setting up an IDE was not part of new hire onboarding.
About 5 years ago, it was pretty much the same at Google, lots of internal build tools and custom extensions for various IDEs (emacs, sublime, vi, etc.) that were popular. There was an internal in-browser IDE that could be used, but it wasn't very good, but good enough for light work (quick-fix) or while using a laptop. But with the pandemic, they had to fix that really quick, and get a proper in-browser IDE, which is now a fork of VSCode. Most people I know, including myself, just never switched back after they got used to this new tool, which was pretty much the only thing you could use while working from home (for security reasons, laptops are just portals to cloud tools, so, an IDE has to be either cloud-based and in-browser, or in a terminal on the other end of an SSH connection to a desktop computer physically plugged into the corp network, like emacs / vi / less). I would add that there was a significant amount of friction between the external IDEs or text editors, even with really good custom plug-ins, and the cloud infrastructure behind the version control and distributed build systems at Google, coupled with the famously huge mono-repo. It was often too easy to click the wrong button or hit the wrong shortcut key combo and send your IDE into a tail-spin, trying to chug through the entire mono-repo or the entire distributed build artifacts.
funny how I was researching GraphQL last night for my upcoming project and 3 hours before Neetcode posted a video discussing GraphQL lol!! Neetcode is stalking me now lmaaaoooo :p :p
At least it's still software development. I joined IBM after graduation and was told I would be doing development but instead I'm here doing the opposite. System engineer. I'll be paying back my sign on bonus and leaving.
Have a google interview in about a month, using your vids to prepare! Wish me luck man! Edit: literally a day after I posted this theres a hiring freeze LOL
So I'm wondering this: If you don't know Java or C++, should they transfer you to the backend team? Did they ask if you have a minimum requirements for the job in backend? (like knowledge of Java) or did they give you time to quickly learn Java/C++?
Most of the time you're expected to learn new tech as needed. If you're new to c++ for example, it's expected that the code reviewers will have to help you but you also need to learn on your own.
I'm a bit confused how you're hired as a frontend dev but then you're working with Java and then C++. Nothing against it obviously but C++ is quite a complex language. Google has even developed their own standard library (kinda) called Abseil. Seems like a cool place to work, hoping from project to project and language, really fun.
Googler don't have privilege such as stack overflow which other developers gets. It's all about reading documentations and code to figure out solution. No more copy and paste from Stack overflow
GraphQL is not a tool btw, it is a query language for APIs. You can consider it a standard. There are multiple tools such as Apollo built for this standard, and most likely Google has its own tool. That's why it's no big deal that it was developed by Facebook.
But most importantly: if you wanna work at Google you need to know algos and data structurs and stuff So you're not primarily tested on knowledge but on logical thinking, right?
The fact that you don’t use GIT is what surprised me the most. Surely Google knows what they are doing and there must be a good reason for that but really surprising nonetheless
Google uses a monorepo, where (almost) all code across the company is stored in one repository. Branching isn't used, so everyone is developing against HEAD. It sounds crazy (it did to me when I first joined), but it works incredibly well. It means that if I write a library which other teams use, there is only ever one version of it. I don't have to worry about them using an old version of my library. I can make breaking changes to my library by updating all of the existing uses of it, since I can easily find all references to my code. I don't have to leave around deprecated functions in case someone somewhere *might* use it.
Hey Neetcode, with your videos I was able to make it past HC! I applied to be an L3 Engineer. Unfortunately, today I was informed by my recruiter 2 weeks into the team match process that Google hit their 2022 hiring goals, which I guess isn't all too surprising given the recent announcement. How soon do you think Google will start hiring new engineers again?
@@Aripoma I would say if you’re in the middle of the process just go through with it, they keep your interview scores for a year + a little prep never hurt anyone 🤞
Thanks @@hello1000ize do you have any tips on your preparation? I’m doing leetcode every day and trying to learn the patterns. Where you part of any discords/groups that helped
Dylan Patel Jellico Tn is a software engineer who plans to begin work with a car company soon. He lives in Jellico, TN, and moved to the United States when he was seven. Dylan Patel arrests attention in his community for his devotion to helping other people when they need it most
No Golang at all? It is promoted as being used to solve google's type problems. We use golang and frankly we are satisfied. It has native built in features for microservices that otherwise need framework to do so
Plenty of teams and projects use Go. Usually, your choice of language is made for you because you're working on part of a larger project which is already written in some language. You wouldn't want to have 99% of a product written in C++ and then have the last 1% written in Go, even if you like Go better.
The languages used at Google more or less break down like this, as far as I've seen over the years: - C++ for the core of all production systems and all heavy-lifting - Golang for glue-ing those systems together - Python for non-critical tools, "launching scripts" and experiments - Java for Android-related stuff - TS, Node.js, and friends for frontend (that's not my domain though) - an internal SQL dialect to observe what goes on in the systems - Protobuf for everything in between, literally-speaking Obviously, all those have exceptions based on legacy projects, interoperability, or some historical accidents. Finally, by use of compute resources, I don't know for sure, but I suspect it's about 99% C++, not because it's slow, obviously, but because if anything is big enough to consume a non-trivial amount of compute resources in Google's servers, then it's probably critical enough to have to be written in C++ for performance and maintainability reasons (equally important, IMO).
You would think Google would be using a lot of Kotlin in their tech stack since they modeled it after Java and its developed by themselves... but no. JAVA.
I am a fan of Golang and since it was created by Google I thought it would be used internally a lot. Does anyone know how much it is being used at Google?
NeetCode: "I really got played when they told me I was going to be a front-end developer." Me: "You and thousands of other developers in the tech world. 😂" Seriously though, this was a very insightful video. Definitely surprised about using Java so much!
What tech stack do you guys use?
🚀 neetcode.io/ - Get access to every course I will ever create!
Guice vs spring', which one do u think is better for microservice @Neetcode
@@obiwankenobi07 There are public talks about all this. Here it is about piper for instance ruclips.net/video/W71BTkUbdqE/видео.html
Looks like my comments get deleted.
Tech stack at my firm is similar too but non-internal tool version of such. No C++ though and Kotlin instead of Java.
you are epic
At Amazon we have a ton of internal tools as well, but they kinda suck, especially when it comes to testing. I'm on a team that owns backend services (Java) and some front end components (React, TypeScript, GraphQL).
Surprised you guys dont use google docs as an IDE
hahahaha
😂☠️
Lol
💀
wait until you find out that no one actually inverts binary trees or merges linked lists at work! 😂
1. Angular
2. GraphQL
3. Java
4. Guice
5. gRPC
6. C++
7. An absurd amount of internal tools
Thanks Ted!
No K8s though?
@@michaelasin6050 There should be I think, neetcode just didn't get to explain it, maybe because it's more like infra tools
First one was React.
@@michaelasin6050 We have an internal version called Borg which I guess is public info. Here's the paper on it: static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf
Working at Google right now (got a job thanks to you :D). It's definitively a tech island. Feels like I have to learn everything from scratch.
Have you checked out the internal tech island doc that Urs wrote?
I don't know anything other than DSA and system design. just core java. Do I need to know anything else?? before entering google?? I have interview scheduled. Currently i'm working in networking domain and work is mainly based on C.
@@sharathkumar8338 System Design dude. Make sure you know the in and out of system design
@@x12624 thank you. i'll make sure i know those things. anything else you would like to suggest? please let me know. I want to make it to FAANG and survive there. My dream.
congrats man
The new IDE is just an internal version of VSCode. The build tool is just Bazel. The version control system is an internal version of Mercurial.
Bazel is Google's Open Source fork of their private tool, Blaze.
The version control is actually a homebrew thing with origins based on Perforce's model.
Though there is a Mercurial based compatibility "thing" (more than a shim, but less than a legit full mirrored central hg repo) available, which is probably what you were referencing.
90% of tech companies in China use Java based tech stack. The interviews contain very in-depth Java knowledge which requires you to read the source code of some Java basic package.
Same in India. Most tech stacks are on Spring MVC/Spring Boot and frontend is on Angular/React. MySQL database with Redshift (AWS), or Snowflake. Apache Spark, Kafka etc.
That's hilarious. C# is the better language though with default arguments, LINQ, and object initializers.
Hi Zhao, I am starting out with java again after 5 years of last using java ever, Any suggestion how should I start, basically I want to reach to expert level but there are too much clutter on web but most resources only teach introductory academic level Java, I dont want to get stuck in Tutorial hell and looking for direction that can help me prepare an Industrial experience on my own. Thanks.
@@BhargavSushant baeldung and jenkov tutorials were clear
Ooof that seems pretty hellish to me. I hate java and OOP in general but still use it
I am eternally grateful to you ! I got my job offer a few days ago and will be starting early August ! Your videos really helped me get the job. I hope I can see you around at Google :)
Do you really have to learn all thes languages ? Can I get a decent paying job that only requires you to know one or two languages at the most?
@@jv1192 yes you can and you should stick to 1 language as a beginner, and focus on the Software Development concepts rather than the language itself, once you get enough experience, you will realize that language is just a medium to express your thoughts! I am an Android developer for example and only know JVM based languages (Java/Kotlin)
congrats man
I work at AWS on Account Administration, we run with Java and most of our micro-services with Native AWS server less products (Lambda, DynamoDB, SNS, SQS, Step Functions, CDK). We also use a lot of internal tools for ticketing, code review, CI/CD etc.
Java doesn't seem like a good thing to use with lambda because don't you have to like start up the jvm every time the function is called?
Is that what causes the cold start issues? Python/JavaScript would be faster?
@@liamconverse8950 For rarely used APIs, Java may not be a good choice because of cold start. But after the instance is 'HOT'... then it is faster than most of other languages. After the first call, the instance stays online for some time, hoping to answer other requests.
I use React Native, Typescript, Terraform, Git, GraphQL, Swift, and Kotlin at my job ❤
The problem with all that internal tooling is you become completely used to it and dependent on it. If you ever leave it’ll be like you cut your hands off and you’re using prosthetics now. Same goes for all layers of abstraction. Make sure you don’t lose the underlying skills you have.
Underrated comment right here
I'm surprised to hear that Google doesn't use Spring framework for Java projects. I'm korean and like more than half of the back-end software engineer job postings in South Korea requires Java and Spring framework experience for entry level positions.
They just have their own version that probably does basically the same thing
This is a lot 😵💫
At work, I use Express, Inverisfy, MongoDB, React, and TypeScript across everything.
They use typescript a ton
As someone who works in software support, a lot of people would be surprised about the amount of Java that is used at Enterprise scale. Python, Rust, Go, C++ get a lot of attention from the programming adjacent communities, but there are few languages as prevalent as Java in the server space that can handle Networking at scale.
I think there is no problem is you talk about piper or blaze, there are a bunch of talks about them from back 2017 or so. I also believe the same about Boq and Pod, bunch of talks from ServerConf.
It would also be nice to explain the languages we use at Google and when. Java and C++ for backend Servers to receive external traffic, JS for frontend, Go for internal services and managed infrastructure(this is mostly my space in GCP), etc…
Ah, thanks I didn't know that
@@NeetCode Piper talk here ruclips.net/video/W71BTkUbdqE/видео.html
I mean if you're still using piper at google...
Hearing that the tools make things simple is so so huge. Most companies could never.
Why use Java when you work at the company that made Go?
Java was released in 1995. Golang was released in 2009. It's like saying why use TCP/IP when there is a better internet stack. They use Go, but they have a lot of products that were existent before the release of Go, and would be hard or waste of time to change them.
Actually they coexists in heterogeneous microservice. Java is pretty well in setting-up the framework to manage all the services. And inside each service, the stack can be Java, Go or C++, as long as they follow the same protocol to communicate.
"angular has a certain way of doing things thats consistent across projects".
I wish more tech would be and stay consistent with practices throughout their lifecycle.
The comment on submitting code changes being so easy is so very true. Assuming it's a very simple fix (e.g., typo, comment, trivial bug, etc.), I've had cases where going from noticing the issue, to creating the change, to pushing it for review, to getting it approved, and submitting it, was all done within a few minutes, within one chrome tab (plus the code-reviewer's chrome tab). On the other hand, I've also had cases where relatively simple changes, say about 50 lines of code, could take weeks to forever (aka never) to get submitted, but that's not about tooling, but about scale (when the total power consumption, at data centers, of the function you are changing is measured in how many major american cities it's equivalent to, expect that it will take a while to get that change checked in).
I was not surprised by GraphQL. It is an excellent open sourced tool. I am somewhat surprised by the lack of Kotlin and Rust usage. I was aware of Java and C++ being used and I understand that large scale apps are near impossible to swap out a language. I just figured there would be a more inclination to use something like Kotlin or Rust for microservices especially considering Oracle's and Google's history. There was also no mention of GCP or even using Apigee with GraphQL so it makes me wonder if they use their own internal tooling for APIs. Other than that, very informative. thanks for the share.
There is a bunch of languages you can use, but it comes down to technical factors a lot. Newer stuff can use rust or (especially) kotlin.
Internal tooling or (especially) internal versions of open source stuff with better google integration is SUPER common. I be using go a lot at work, but coworkers even on the same team will have not touched go in a bit
I personally think that backend is better than frontend. Most business logic (i.e. the interesting stuff) happens in the backend, and playing with microservices is fun.
As a front end developer I don’t necessarily disagree but I would never choose backend over front end. To each their own 👩🏽💻
you haven't worked on frontend before in that case. Maintaining the state of the UI, how to achieve routing, how to make the rendering fast by pre-fetching the pages etc are all complicated challenges. Both backend and front-end have their own challenges, so saying business logic happens in backend has no weight since business logic is just one piece. Infra people can argue that infra is better than even business logic portion
@@CODFactory why you’re pressed? 😂 I didn’t argue, I intentionally started my comment with “I personally think…” to chase people like you away. And why would you assume I didn’t work on frontend?! I’ve equally worked on frontend, backend and devops.
@@Aripoma Even I like frontend. Observables and RxJS are too fun to use. Microservices are good as well especially with cloud.
Every time Neetcode has a complaint about Java, he has to work with another Java project.
Angular is not surprising. GCP and Firebase are prime examples, but GraphQL? That hit like a truck
internal git tool and IDE are surprising to me.
thanks for sharing.
Man your voice is so soothing and calming ,.
One day even I made your video on autoplay in playlist and on hearing your voice i slept.
I’m not surprised google does not use react. GraphQL is definitely a surprise
yeah why use graphql when you have grpc
@@archmad grpc is an overkill
@@archmad Maybe for BE-FE communication they use GraphQL, but for BE-BE they use gRPC
Cmiiw
I bet they're currently working on their own replacement for GraphQL
@@archmad Web browsers don't support gRPC since it operates over HTTP/2. You need to use a HTTP/1 protocol like REST or GraphQL
Pretty cool, I am about to be promoted at my small company to a SWE and our tech stack includes Angular and .Net. Haven't graduated college yet but most of my software classes are in Java, great to know that I am using tech relevant to google.
My favorite internal tool without a doubt will be Memegen 🤪
My tech stack at work is COBOL, z/OS, DB2, MVS...
Man your work sounds really interesting. My current dev role is so boring and is built on such ancient tech that Microsoft doesn't even support it anymore and they don't want to even let us upgrade the version of the program language platform that was used to write the software
It's time to switch jobs I guess unless you get paid a ton and you intend to retire at that place. I used to do Sharepoint 2010/2013 development prior to going to blockchain development.
I use meteorjs at work - it’s a framework for building web app, desktop app and stuff. It’s alright because I work on the frontend and can integrate react and blaze. But good luck when you run into a bug, there is little to no community on the language
Good to know, thanks for sharing!
Also it requires months to upgrade
Good to know , I used meteor js 2018-2020 . Now it seems mostly dead
Having internal tooling for everything seems so fun, probably makes collaboration easy. I interned at THE open source company and they used everything under the sun, devs could even install whatever OS they wanted. The latter was great, but the former was mildly annoying sometimes
Also a great way to make sure the employees have a harder time leaving too.
@@alexandrep4913 I agree. Specifics of internal tools are mostly useless once you’ve left the company
Software engineering is about solving problems. The language is secondary! I am glad you mentioned that.
Love you Neetcode, you helped me get an offer ❤️
Congratulations 😃
Hey Neetcode I’d find it really helpful if you could post a video solely on analyzing Time and Space complexities!
I've been thinking about that, will try to make one this month!
I'm currently using Java Spring and Angular two in a really big project (several hundreds of ppl) and it works beautifuly
This motivates me even more to apply for Google. Working for Google is an engineers dream
Don’t solely rely on google but the opportunity to work in the industry should be the dream; google is just an additional bonus
@@friction5001 Some people have preferences in companies as they love the stack those companies use or they love their products, so they want to work on them.
Don't put any company in some pedestal. I say this as someone who is also a software engineer in a tech firm.
It's all the same job everywhere. Work for a company that pays you well and has a great team.
Google has been known in recent years to pay less than the rest of the market and isn't as preferred among many veteran engineers.
Sometimes paying less by over 6 figures just for the name.
Same happened to Blizzard in past. Put a company in some pedestal and companies take advantage of its workers.
But give a try for sure. Great company to relax at.
@@2RosarioVampire So what are the companies that you suggest?
@@reviews9216 In this economy? Any company that accepts you. Most of tech firms are laying off/freezing overall.
Would be cool to get a walkthrough of how the internal tooling (IDEs, repository, pull requests etc) works together. Even if it's just schematic. In that area, a lot of commonly available tooling really feels like some stitched up frankenstein of various barely compatible projects.
Graphql is something I was not expecting but makes sense when you think about it. Java was the big one to me
Java is mostly likely used, because majority of senior staff in Google come from Java background.
And their existing CI, code quality checks, ... Buch of standardisation tools are well tuned for Java.
In addition, one complaint I heard that Google Tech Stack and Ecosystem are very propriety making it difficult to transition outside Google.
thats actually a good point lol
Using an in-house IDE is really weird when the publicly available options are so good. At Amazon we have our own internal build tools but use in-house plug-ins to extend publicly available IDEs for customization, like working with those build tools.
Google uses a version of vscode thats on steroids. Probably similar setup as amazon.
Which publicly available IDEs do you use at Amazon?
The IDE is cloud-based, new version is a fork of VS Code, replacing old version that existed for 15+ years. It encourages Chromebook usage and reduces data exfiltration risk.
Amazon's a big place so things will differ a lot between teams. But I use vanilla PyCharm using the company's license, I know some other engineers in the same org I'm in use VSCode. Setting up an IDE was not part of new hire onboarding.
About 5 years ago, it was pretty much the same at Google, lots of internal build tools and custom extensions for various IDEs (emacs, sublime, vi, etc.) that were popular. There was an internal in-browser IDE that could be used, but it wasn't very good, but good enough for light work (quick-fix) or while using a laptop. But with the pandemic, they had to fix that really quick, and get a proper in-browser IDE, which is now a fork of VSCode. Most people I know, including myself, just never switched back after they got used to this new tool, which was pretty much the only thing you could use while working from home (for security reasons, laptops are just portals to cloud tools, so, an IDE has to be either cloud-based and in-browser, or in a terminal on the other end of an SSH connection to a desktop computer physically plugged into the corp network, like emacs / vi / less).
I would add that there was a significant amount of friction between the external IDEs or text editors, even with really good custom plug-ins, and the cloud infrastructure behind the version control and distributed build systems at Google, coupled with the famously huge mono-repo. It was often too easy to click the wrong button or hit the wrong shortcut key combo and send your IDE into a tail-spin, trying to chug through the entire mono-repo or the entire distributed build artifacts.
Tiktok uses Golang as the backend language. Since Golang is from google, doesn't Google use it?
you are great you was known to so many countries
Really interesting to watch. Want to see how it works the continuis integration, control version, pull request, code review process. Thanks!
Would love a video showing the process of opening a PR and getting reviews. A real pain point in my current contract
funny how I was researching GraphQL last night for my upcoming project and 3 hours before Neetcode posted a video discussing GraphQL lol!! Neetcode is stalking me now lmaaaoooo :p :p
a very surprising video. thank you for sharing this tools with us. I am usually using python and django framework
Can u make a video talking about how data structures and algorithms helped you to solve your day a day tasks in Google ?
It doesn’t 🤪 Leetcode stuff is only used for interviews and that’s it
Is it compulsory to learn both frontend and backend to get into Google? I am enjoying backend and made a project, but frontend doesn't excite me.
Polymer's new improved version LitHTML is easy, lightweight framework but the problem is its community, there is hardly any!
At least it's still software development. I joined IBM after graduation and was told I would be doing development but instead I'm here doing the opposite. System engineer. I'll be paying back my sign on bonus and leaving.
What does a system engineer do?
I also work on Angular, it's great
Kotlin/Dagger2/Jetty or Spring/Jdbi, Kafka, Cassandra, biking distance from Amphitheatre Pkwy
Have a google interview in about a month, using your vids to prepare! Wish me luck man!
Edit: literally a day after I posted this theres a hiring freeze LOL
Wish you best of luck🔥🔥
Good luck, you'll do great 👍😃
@@NeetCode Thanks!
Will you consider teaching GraphQL or Angular? I think you're the best tutor on the YT!!
neetcode is really cool, it would have been awesome if you could add Go beside the other languages there.
The only content im looking for many times. Solved
So I'm wondering this: If you don't know Java or C++, should they transfer you to the backend team? Did they ask if you have a minimum requirements for the job in backend? (like knowledge of Java) or did they give you time to quickly learn Java/C++?
Most of the time you're expected to learn new tech as needed. If you're new to c++ for example, it's expected that the code reviewers will have to help you but you also need to learn on your own.
I'm a bit confused how you're hired as a frontend dev but then you're working with Java and then C++.
Nothing against it obviously but C++ is quite a complex language. Google has even developed their own standard library (kinda) called Abseil.
Seems like a cool place to work, hoping from project to project and language, really fun.
at the end of the day it's more important that you have the ability to learn quickly as well as think before doing.
do you use Spring framework?
I do not, but I think the frameworks I used are somewhat comparable
Great video, i expected some golang in the backend projects
GraphQL is awesome
Googler don't have privilege such as stack overflow which other developers gets. It's all about reading documentations and code to figure out solution. No more copy and paste from Stack overflow
GraphQL is not a tool btw, it is a query language for APIs. You can consider it a standard. There are multiple tools such as Apollo built for this standard, and most likely Google has its own tool. That's why it's no big deal that it was developed by Facebook.
But most importantly: if you wanna work at Google you need to know algos and data structurs and stuff
So you're not primarily tested on knowledge but on logical thinking, right?
Experienced undergrad: “yeah but no one uses Java anymore except for companies running applications from the 90s”. He was so damn confident too
Then you are mistaken xD
Shocked they aren't moving to a full TypeScript tech stack, definitely selling Alphabet, appreciate the insight.
Didn't know most of the frameworks you mentioned. It's now or never to explore
Angular is sweet
so many internal tools sounds like a ton of overhead and tech debt
The fact that you don’t use GIT is what surprised me the most. Surely Google knows what they are doing and there must be a good reason for that but really surprising nonetheless
Git is used, quite a lot, just not for the core stuff. Like, all of Android, Chrome, ChromeOS, etc is on git.
"Google knows what they are doing", Really? "Google+", "Sites", "Hangout"...
Maybe google know, but users don't!
Google uses a monorepo, where (almost) all code across the company is stored in one repository. Branching isn't used, so everyone is developing against HEAD. It sounds crazy (it did to me when I first joined), but it works incredibly well.
It means that if I write a library which other teams use, there is only ever one version of it. I don't have to worry about them using an old version of my library. I can make breaking changes to my library by updating all of the existing uses of it, since I can easily find all references to my code. I don't have to leave around deprecated functions in case someone somewhere *might* use it.
@@haxney So how to do actions like revert, decide when everyone is done and changes are ready for review or ready for release etc?
Hey Neetcode, with your videos I was able to make it past HC! I applied to be an L3 Engineer. Unfortunately, today I was informed by my recruiter 2 weeks into the team match process that Google hit their 2022 hiring goals, which I guess isn't all too surprising given the recent announcement. How soon do you think Google will start hiring new engineers again?
OMG are you serious. I’m doing interview prep right now because I was hoping to interview with them 😩
I have heard about slow hiring there recently, didn't believe at first but looks real now after reading your comment
@@Aripoma I would say if you’re in the middle of the process just go through with it, they keep your interview scores for a year + a little prep never hurt anyone 🤞
Thanks @@hello1000ize
do you have any tips on your preparation? I’m doing leetcode every day and trying to learn the patterns. Where you part of any discords/groups that helped
@@hello1000ize Loving your positivity! You’ll definitely succeed, all in a matter of time :)
Hey, your doing great work, could please make a video on segment tree, lookin to learn to you⚡
I bet you they have their own version (wrapper) of Spring Boot similar to most Tech Companies 😀 !!
I was surprised you dont use Kotlin instead of Java
I used graphql on an open source :) just call the query to hit the API calls. Very easy
I am working at first year in an indian college
we use
engineering chem,eng phy,eng maths,eng drawing,python,english
Dylan Patel Jellico Tn is a software engineer who plans to begin work with a car company soon. He lives in Jellico, TN, and moved to the United States when he was seven. Dylan Patel arrests attention in his community for his devotion to helping other people when they need it most
What in the absolute fuck?
nice insight bro 👌
Always learn Java basically. Everyone i know uses Java
@@freedomgoddess learning how to call APIs and callbacks are pretty important from what I've seen also
No Golang at all? It is promoted as being used to solve google's type problems. We use golang and frankly we are satisfied. It has native built in features for microservices that otherwise need framework to do so
Plenty of teams and projects use Go. Usually, your choice of language is made for you because you're working on part of a larger project which is already written in some language. You wouldn't want to have 99% of a product written in C++ and then have the last 1% written in Go, even if you like Go better.
So.... Started with C++ in my early teens, certified java developer, knows graphQL, Microservice Specialist.. sounds like I would fit right in?
i enjoyed the video. thank you
The languages used at Google more or less break down like this, as far as I've seen over the years:
- C++ for the core of all production systems and all heavy-lifting
- Golang for glue-ing those systems together
- Python for non-critical tools, "launching scripts" and experiments
- Java for Android-related stuff
- TS, Node.js, and friends for frontend (that's not my domain though)
- an internal SQL dialect to observe what goes on in the systems
- Protobuf for everything in between, literally-speaking
Obviously, all those have exceptions based on legacy projects, interoperability, or some historical accidents.
Finally, by use of compute resources, I don't know for sure, but I suspect it's about 99% C++, not because it's slow, obviously, but because if anything is big enough to consume a non-trivial amount of compute resources in Google's servers, then it's probably critical enough to have to be written in C++ for performance and maintainability reasons (equally important, IMO).
But what is google working on? What is the goal? How much more can you improve google's search engine? Asside from that I don't know what google does.
The Lord Neetcode is here again! ❤️❤️
Does Google use python in production for ML in Google assistant & else where?
Hi, when will you upload new leetcode solution videos? Looking forward to it!
Did you apply for a front end role? Or did they just assign you to that team/role?
No Go for backend dev? That's a little surprising
java, php, react, node, python, swift, oracle, mysql
You would think Google would be using a lot of Kotlin in their tech stack since they modeled it after Java and its developed by themselves... but no. JAVA.
I was surprised you don't extensively use Go lang
Yeah I wish
Hey Neet, I've got a question. I see you pump out Leetcode answers. Yeah, where do I start so I can do this? Just memorize and understand algs?
I am a fan of Golang and since it was created by Google I thought it would be used internally a lot. Does anyone know how much it is being used at Google?
It's definitely used a decent amount, but a lot less than Java or c++, mostly cause of legacy systems
NeetCode: "I really got played when they told me I was going to be a front-end developer."
Me: "You and thousands of other developers in the tech world. 😂"
Seriously though, this was a very insightful video. Definitely surprised about using Java so much!
i just heard this man walk on thin ice for 8 minutes.
Please keep going we really like your work thank you.
Does google uses spring boot?
I think it depends on the team. Generally, they use C++, Go, Python, and Java. And I assume they build their own frameworks.
Will you use a framework for the c++ backend ?
Using Java and not Go?!?!?!!!
Actually, Graphql was the least surprising tech here for me.