Tech Stack I use at Google as a Software Engineer
Вставка
- Опубліковано 8 чер 2024
- 🚀 neetcode.io/ - A better way to prepare for Coding Interviews
🥷 Discord: / discord
🐦 Twitter: / neetcode1
🐮 Support the channel: / neetcode
⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
💡 DYNAMIC PROGRAMMING PLAYLIST: • House Robber - Leetco...
0:00 - Intro
0:35 - Frontend
2:05 - Backend
5:45 - Internal tools
#google #neetcode #techstack - Наука та технологія
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 ua-cam.com/video/W71BTkUbdqE/v-deo.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
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.
@@sushantbhargav4652 baeldung and jenkov tutorials were clear
Ooof that seems pretty hellish to me. I hate java and OOP in general but still use it
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.
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.
Hearing that the tools make things simple is so so huge. Most companies could never.
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
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
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.
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.
Every time Neetcode has a complaint about Java, he has to work with another Java project.
internal git tool and IDE are surprising to me.
thanks for sharing.
This is a lot 😵💫
At work, I use Express, Inverisfy, MongoDB, React, and TypeScript across everything.
They use typescript a ton
I use React Native, Typescript, Terraform, Git, GraphQL, Swift, and Kotlin at my job ❤
a very surprising video. thank you for sharing this tools with us. I am usually using python and django framework
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
Really interesting to watch. Want to see how it works the continuis integration, control version, pull request, code review process. Thanks!
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.
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.
Angular is not surprising. GCP and Firebase are prime examples, but GraphQL? That hit like a truck
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).
My tech stack at work is COBOL, z/OS, DB2, MVS...
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 ua-cam.com/video/W71BTkUbdqE/v-deo.html
I mean if you're still using piper at google...
Would love a video showing the process of opening a PR and getting reviews. A real pain point in my current contract
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'm currently using Java Spring and Angular two in a really big project (several hundreds of ppl) and it works beautifuly
Love you Neetcode, you helped me get an offer ❤️
Congratulations 😃
"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.
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
Software engineering is about solving problems. The language is secondary! I am glad you mentioned that.
Will you consider teaching GraphQL or Angular? I think you're the best tutor on the YT!!
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
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!
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.
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.
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
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
Polymer's new improved version LitHTML is easy, lightweight framework but the problem is its community, there is hardly any!
I also work on Angular, it's great
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
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?
nice insight bro 👌
Will you use a framework for the c++ backend ?
I used graphql on an open source :) just call the query to hit the API calls. Very easy
Hey, your doing great work, could please make a video on segment tree, lookin to learn to you⚡
What project do you use GraphQL for? I feel it's not widely adopted across the organization.
The only content im looking for many times. Solved
My favorite internal tool without a doubt will be Memegen 🤪
Great video, i expected some golang in the backend projects
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.
you are great you was known to so many countries
neetcode is really cool, it would have been awesome if you could add Go beside the other languages there.
Does Google use python in production for ML in Google assistant & else where?
Tiktok uses Golang as the backend language. Since Golang is from google, doesn't Google use it?
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.
I bet you they have their own version (wrapper) of Spring Boot similar to most Tech Companies 😀 !!
do I need to know any Frontend or backend framework along with DSA before joining any product based company? are these things required for interview there?
Did you apply for a front end role? Or did they just assign you to that team/role?
Im 6 months out from my graduation date: 01/2023 going for software systems engineering at CTU... Long story short, i am wanting to learn the mobile Google tech stack.. I'm assuming kotlin, Java, dart and JavaScript... Only know react Native.. Well in the middle of learning it.. Any other suggestions...
My end goal is to be a web developer( entry level fullstack) but have strong skills in mobile Android applications development as well..
Anyways, any help would be appreciated greatly
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.
great video ...thanks for sharing
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
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
Didn't know most of the frameworks you mentioned. It's now or never to explore
i enjoyed the video. thank you
Hi, what Java WebSockettechnologies has Google used? Tomcat or undertow?
What's your advice for a third year student to join Google as an intern or entry level SWE?
Hi, when will you upload new leetcode solution videos? Looking forward to it!
Which are the framework is used to backend in java and c++
Kotlin/Dagger2/Jetty or Spring/Jdbi, Kafka, Cassandra, biking distance from Amphitheatre Pkwy
Hi Neetcode, it is a pleasure to have found your channel, you seem like you know your stuff. I had a question? I am disappointed with myself, my javaScript skills really suck. By December 5th of this year I will make 1 year of programming. I am now learning React and trying to figure out the useEffect hook and I find myself at times forgetting high order arrays and how to use them in my React projects. My knowledge is very basic, how can I improving the complexity of writing of code? Any recommendations? I enjoy code not for the money but because I am passionate about it and I would love to become a master coder one day, thank you.
Thanks Neet for giving such an informative video. By the way Did Google use any Spring framework module?
Hello I am from Uzbekistan and I am backend developer. Do you recommend graphql ?
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
The Lord Neetcode is here again! ❤️❤️
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.
Angular + NestJs with NX tools
Nice vide 💕, I’m a CS student second year and was thinking about making UA-cam videos while I learn DSA & CP just so I can share my journey and just increase my understanding while explaining what do u think about 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?
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 :)
@Neetcode What is the speaker name in all your videos?
Why use Java for microservice instead of Go?
Hey neet can you please release a ds and algos course for python since there aren't any good ones out there
A sincere request 🙏🙏
the youtube viewcode (the v=... part of the URL) for this video leget looks like "sausage nobs" if you glance at it quickly...
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.
Why don't use spring instead of guice?
Angular is sweet
Is ruby on rails worth learning in 2022 or 2023???
do you have on call rotations?
Do you have coworkers without a BSc degree?
I'm curious about what projects you featured on your portfolio that got you an interview?
I actually made a video about my resume a few months ago. It actually wasn't very impressive.
Is talking about the actual internal tools forbidden?
Whats a tech stack? Does it have to do anything from data structures stack?
Noooooo.. stack here means just a pile of technology
What Database do you usually use in google?
GraphQL was pretty unsurprising tbh
But I guess I only thought that because I didn't know it was originally created by Facebook
I used c++/linux/docker/docker swarm/java/vba
I'm imagining the internal framework he can't speak of is an abstraction of Spring Boot but I could very well be wrong
Interesting, i was expecting a lot of Go
is google use node.js ?