Amazon / Google Engineer - Realities of Development
Summary
TLDRIn this video script, a seasoned software engineer emphasizes that knowing a specific programming language is less crucial than the ability to learn and adapt. He highlights the importance of fundamental coding skills, downplaying the significance of math and algorithms in most programming jobs. The speaker encourages aspiring developers to focus on real-world coding experience and avoid getting lost in tutorial overload.
Takeaways
- 😀 As a software engineer, you don't need to know everything; it's more important to know where to find information when you need it.
- 😎 The language you use is not as important as your ability to code and develop software effectively.
- 🤔 Focus on becoming a proficient developer rather than getting caught up in the popularity of specific programming languages.
- 🥊 Use a boxing analogy: it's not about the gloves or shoes you wear, but about your ability to box, similarly, coding is about your skills, not the tools.
- 🚀 Comprehension comes through application; understanding is gained by doing, not just by learning in theory.
- 📚 Math is often overemphasized in programming; for most business applications, basic math skills are sufficient.
- 🔍 Algorithms are not as crucial for most developers as they are often made out to be, with libraries available for most needs.
- 🌐 Scaling is not a concern for the majority of developers; database access optimization is typically more important.
- 🛠 Learn the fundamentals of programming and development, which are transferable across different languages and technologies.
- 🏃♂️ Avoid 'tutorial hell' by focusing on writing real code and gaining practical experience rather than endlessly consuming tutorials.
- 👨🏫 Uncle Steph emphasizes the importance of learning from experience and applying knowledge in real-world scenarios to become a better developer.
Q & A
What is the main message conveyed by the Google engineer in the LinkedIn post?
-The main message is that as a software engineer, you don't need to know everything. It's more important to know where to find information and how to apply it when needed.
What programming languages did the engineer mention not knowing at the start of his career?
-The engineer mentioned not knowing Linux commands, GET (HTTP method), Python, C++, and Dart at the start of his career.
What is the engineer's stance on the importance of programming languages?
-The engineer believes that the language is not important. What matters is the ability to be a good coder and developer, not the specific language being used.
What analogy does the engineer use to explain the irrelevance of programming languages?
-The engineer uses the analogy of boxing, driving, and martial arts to explain that it's not about the tools (like gloves, shoes, or the car), but about the skills and abilities of the person using them.
What is the engineer's advice for young developers who are overwhelmed by the number of programming languages?
-The engineer advises young developers not to get caught up in the languages but to focus on becoming a professional developer and learning to write professional code.
What is the engineer's opinion on the importance of math in software development?
-The engineer believes that math is one of the least important things in software development, especially for 99.99% of programming jobs that involve typical business applications.
What is the engineer's view on the necessity of knowing algorithms for most developers?
-The engineer suggests that knowing algorithms is not important for most developers, as there are libraries available for most algorithms, and it only becomes crucial in specialized fields like gaming engines or advanced AI research.
What is the engineer's perspective on the need for scalability in software development?
-The engineer argues that scalability is not an issue for 99.9% of development. It only becomes relevant in very specific cases, such as processing massive amounts of data at companies like Google.
What is the engineer's advice on how to effectively learn and master new programming languages or technologies?
-The engineer advises focusing on the fundamentals of coding and becoming a proficient developer first. Once you understand the basics, learning new languages or technologies becomes much easier.
What does the engineer mean by 'comprehension comes through application'?
-The engineer means that understanding and mastery come from actually doing and applying the knowledge, rather than just learning it theoretically.
What is the engineer's final advice for developers who want to avoid getting lost in the sea of information?
-The engineer advises developers to learn their fundamentals, get out of tutorial hell, and start writing real code. He emphasizes the importance of not worrying about knowing everything, but being able to learn quickly when needed.
Outlines
😀 Embracing the Unknown in Software Engineering
The speaker starts by sharing a message from a Google engineer on LinkedIn, emphasizing that as a software engineer, it's not necessary to know everything. The speaker reflects on his own experience, highlighting that he didn't know Linux commands when he started at Amazon, didn't understand Git, and had never written Python code when his first project required it. He stresses that the key is knowing where to find information when you need it. The speaker also discusses the importance of not being fixated on a specific programming language, using a boxing analogy to illustrate that the tools (languages) are less important than the skill of coding itself. He encourages viewers to focus on becoming proficient developers rather than mastering a specific language.
📚 Learning Through Application in Coding
Continuing the discussion, the speaker shares a principle that 'comprehension comes through application,' meaning understanding is achieved by doing. He uses his experience in martial arts to illustrate how real-world application deepens understanding. He then applies this principle to software development, advising that learning new languages and technologies becomes easier once you understand the fundamentals of coding. He dispels common myths about the importance of math and algorithms in programming, stating that for most business applications, these are not crucial skills. He also touches on the overemphasis on scaling in software development, suggesting that it's only relevant in a small percentage of cases.
🚀 Fundamentals Over Trivialities in Software Development
The speaker warns against the common mistake of getting caught in 'tutorial hell,' where beginners are pulled in many directions learning various technologies without focusing on the essentials. He emphasizes the importance of learning the key fundamentals first, such as understanding how to write efficient database queries and the strategic aspects of query optimization. He also discusses the misconception about the necessity of object-oriented programming and scaling, stating that for most developers, these are not primary concerns. The speaker encourages viewers to start writing real code and gain practical experience, which will make learning new technologies easier in the future.
👨🏫 Uncle Steph's Mentorship and Life Advice
In the final paragraph, the speaker introduces himself as Uncle Steph, a mentor who aims to pass on his decades of experience as a developer and entrepreneur. He reflects on the value of hindsight and how he would advise his younger self if given the chance. He invites viewers to his channel and mentoring program, promising to share the wisdom he has gained over the years. Uncle Steph emphasizes the importance of learning from real-world coding experiences and warns against the trap of endless tutorials without practical application. He concludes by encouraging viewers to engage with him, asking questions or sharing disagreements, and ends with a reminder to code long and prosper.
Mindmap
Keywords
💡Software Engineer
💡Language
💡Fundamentals
💡Professionalism
💡Comprehension through Application
💡Tutorial Hell
💡Martial Arts
💡Database Access
💡Scaling
💡Algorithms
💡Real Code
Highlights
A software engineer doesn't need to know everything; knowing where to find information is crucial.
The speaker didn't know Linux commands, fully understand GET, or program in Python or C++ when starting at Amazon or Google.
Language is not important; it's the ability to be a coder and a developer that matters.
The speaker often jokes about Ruby to emphasize that the language is not as important as the coding ability.
Young developers should focus on becoming proficient developers rather than focusing on specific languages.
Professionalism in coding is not tied to a specific language; it's about the quality of the code.
The speaker teaches programming languages but emphasizes professional-level development.
Once you understand how to be a professional developer, pivoting between languages is not a problem.
Comprehension comes through application; understanding is gained by doing.
Real-world experience in coding is more valuable than theoretical knowledge.
Math is not super important in development for most business apps.
Algorithms are not crucial for most development work; libraries can handle most algorithmic needs.
Scaling is not an issue for most development; database access is often the bottleneck.
Efficient database queries are more important than focusing on scaling for most business apps.
Caching is not as important as many people think for most development tasks.
Focusing on fundamentals is crucial for getting into the development world quickly.
Learning new technologies and languages on the fly is easy once you have the fundamentals.
Avoid getting caught in tutorial hell; focus on writing real code instead.
The speaker emphasizes the importance of learning fundamentals over specific languages or technologies.
The speaker's experience as a freelance developer shows flexibility in choosing technologies based on job requirements.
The speaker offers mentorship and shares decades of experience through his channel and mentoring program.
Transcripts
hey guys how you doing so somebody sent
me a little I don't know message that a
Google engineer put on LinkedIn so it's
public
so I'm going to put it here so uh let's
jump into it all right so let's just
read this here as a software
engineer you don't need to know
everything so before I read the rest of
this everything that we're going to see
here is what I've been talking about for
years for years I did not know any Linux
commands when I started my first job as
a programmer when I joined Amazon I did
not fully understand get at Amazon my
first project was in Python but I had
never written a single line of python
code when I joined Google I could not
program in C++ but most of my work was
in C++ later when I changed teams I
built a feature in Dart but never used
Dart before as a software engineer you
don't need to know everything you just
need to know where to find it and when
you need it so there you go something
I've been talking about for years and
years and years now I always say the
language is not important it's not
important my Ruby joke if you ever been
watching my videos I make fun of Ruby
all the time I'm not actually making fun
of Ruby I'm making fun of the notion
that the language is important
it's not important it's not important I
know a lot of you young nerling out
there are going how could you say a
language is not important Stu all these
Youtubers with at least 6 months of
experience on YouTube these 21y old
influencer experts uh they're telling me
that this is so important react is so
important or JavaScript is so important
it's not everything I've been saying for
years and years and years is born out
with this guy here who worked at Amazon
and worked at Google
it's not about the languages it's about
your ability your ability to be a coder
to be a developer that is the
key it's like um I'll use a boxing
analogy because I used to do uh I used
to box a little
bit it's not about the gloves you wear
it's not about the shorts you wear it's
not about the shoes you wear these are
just tools it's about whether or not you
can box same thing with driving by the
way it's not about the car that you
drive it's about how good of a driver
you are and yes we'll have our
preferences some of us will prefer this
and some of us will prefer that some of
us will prefer JavaScript some of us
will prefer Swift or python or PHP
whatever except for Ruby
and don't get caught up in the languages
get caught up in becoming a pro
developer learn to write Pro code so you
could take a great developer with 5
years plus experience and put them on
any language and the quality of that
code will be superior to the person
who's only done two years of coding on
average right all things being equal the
professionalism of your coding has
nothing to do with the language you can
write amazingly Pro level code in
Pearl and you can write dog crap code
code in
C++ it all depends on your ability to
code not the language that's why when
people ask me why don't you teach
typescript why don't you teach uh react
why don't you teach node I don't need to
because in my training courses I teach
three programming languages I teach s
not SQL that's not a programming
language I teach JavaScript python
PHP but more than the languages I teach
teach PR level development I teach
people to think like a pro developer I
teach people how to structure code like
a prole developer these lessons are 100%
transferable to all software development
once you understand how to be a pro
developer you can be like this sahil
Gaba guy uh Google Amazon engineer you
will be able to Pivot from language A to
B to C with no problem in a previous
video I uh cited a post that somebody
made under one of my YouTube videos
where he said that he had tried learning
react after only having spent a few
months on JavaScript and he couldn't get
his head wrapped around it so what he
did is he fell back to basics just
started building websites starting doing
some PHP some JavaScript vanilla stuff
and he did this making money for about 9
months and he decided to
revisit react CU he had a job
opportunity and to his surprise he
learned it in about a day wasn't an
expert but he was able to start doing
basic things why is that the case well
because once you understand how to be a
coder regardless of the language once
you understand you build things once you
build things you understand by building
then all these other Technologies
learning new languages new learning new
libraries is not such a big
deal remember here's one of my
principles
comprehension comes through
application write that down
comprehension comes through application
what does that mean that means you
understand by doing I learned this
actually in martial arts I started doing
martial arts when I was about 10 years
old started with Judo then did some
Japanese karate then Taekwondo then cat
Campbell and then a little bit of a
little bit of Muay Thai and all kinds of
different things Wrestling Judo I did
Judo you know anyway so I did a bunch of
styles a bunch of traditional Styles or
but you know what even the
weirdest and the least effective
traditional
Styles I was able to draw some
interesting uh lessons and understanding
from them so even in with some really
useless traditional martial arts I was
able to gain some knowledge so anyway I
did all these different types of martial
arts and what I found in practice is
that one street fight one you know
actual altercation in the street was
worth months and months of training and
there was every time I fought at least
for the first
several I found my understanding of
combat in general deepened quite a bit
and this real world experience
formed a lot of opinions about actual
combat then I became a bouncer in a
nightclub well years later I became a
bouncer in nightclub which was my last
job as a uh working for somebody uh so I
was like 1819 18 through 19 and so
anyway so I had a job as a de as a
bouncer and that experience in big group
situations uh sometimes we had group
fights beer bottles and chairs that
continued to form my
opinion and it changed the way I trained
it changed the way what I emphasized
what wasn't important what was what was
important this is something I notice
that we see a lot in all fields of
studying and what we see is that people
concentrate on things that are not
important yeah that's key especially in
software
development and coding there is so much
out there it's unbelievable how much
information we have out there there's so
many Lang languages but it's hard for a
beginner to know what is important what
do you really need to know so one of the
myths out there is that math is super
important in
development it's silly
99.99% of programming math is the one of
the least important
things there is like I've been writing
commercial code for three decades now
and I do typical business apps
and I've
I'm trying to think of the most advanced
math I've ever done maybe modulus or
something I don't know if you know how
to add and subtract the occasional once
every year two multiply divide that's
the extent of the math skills that you
need so when you hear these people say
oh you need to learn math these are just
people don't know what the hell they're
talking about the only exception is if
you're building a gaming engine maybe
doing some Advanced AI research Big Data
analysis perhaps but that's about it
every other type of development math is
the least important thing so if you're
math challenged don't worry about it for
99.99% of jobs you won't need math
another huge myth is algorithms oh you
got to know algorithms
no again algorithms is one of those
things that fall in the the
0.01% category of development it's not
important and there are libraries that
you can access for most algorithms if
you ever come across them in terms of
efficiency and applica another big
here's another big myth in software
development oo my apps have to scale
they have to scale no scaling is not an
issue for 99.9% of development the only
time scaling becomes an issue is maybe
if you work at Google and you got to
process you know ter flops of data I
don't know if that's a word Tera flop
you got to process a lot of
data for the vast majority of business
apps the uh bottleneck the bottleneck in
terms of uh
runtime speed that means as the app is
running uh the bottleneck is database
access so if you have a properly
structured database and typically it's
going to be a relational
database and you know how to write
efficient queries and know how to
effectively write queries so for example
I know if you're running an e-commerce
store and somebody comes to your site
Amazon or something and you got to
download you got to display all the uh
all the mouses that you have uh
available for sale how you query the
database to grab all that Mouse
information to present it to the user on
the
page uh how you do
that um how you write that query has to
do with some you know do you pull out
all the records do you pull out 10% of
the records it really depends on the
query side depends on a bunch of factors
so that's where VP optimization really
comes into play is understanding how to
logically write a good query and it's
not just a technical execution in terms
of how efficient your your SQL is but in
terms of you know is this strategic
really it's it's strategic in terms of
okay how much should I pull out what are
we typically looking at blah blah blah
you know do we you know do we do a
caching layer or not again caching is
for most people are not that important
anyway the point
being is that there's so much emphasis
on stuff that is so marginal meaning not
that important in the software world
that it it wastes so much time for
people this Wast so much time at the end
of the day if you want to get into the
development world as quickly as possible
you have to concentrate on what I would
call the key fundamentals once you have
your fundamentals then you're ready to
jump in the game into the game and like
that Google engineer you will find
yourself learning new things on the Fly
and it's not a big deal trust me once
you have your fundamentals down learning
new technologies new languages on the
Fly is no big deal so the big mistake
you don't want to make is to get caught
up in tutorial
hell where you're being pulled into
you're being
pulled in many different directions
because this nerd says you got to learn
this you got to learn that you want to
get in the ring like me when I wanted to
learn a fight actually getting into
actual
fights was far more important than me
trying to find the next school or the
next teacher the fights were so much
more
uh effective in terms of pushing my game
forward that's how it is with uh
coding the
more real code that you write that's not
doing school projects but real code the
far quicker you're going to become a
good developer and a competent developer
so if you take anything away from this
video number one don't learn Ruby number
two if you want to learn how to fight
get into a street fight don't do it
number three learn your fundamentals and
get out of tutorial hell just start
writing code don't worry about knowing
everything because there's nobody out
there who knows everything it's
impossible like I've been doing this for
decades and I can tell you is I forget
much more than I currently remember but
I don't care because I know that if I
needed to learn a particular language I
would just learn it it's not a big deal
and in fact in my last few years as a
freelance developer I had no
expectations about what language I would
use for a particular job I would just go
into the job I look at the requirements
and then I would choose a technology
accordingly sometimes I would use
something I was familiar with at that
time I was doing a lot of java other
times I would learn some weird funky
language that was very specific for the
particular job at hand was no big deal
at first I was resistant to learning new
languages because I was like a zealot I
was a Java Zealot that's a sign of a
noob when you're like oh only this
language is good that's a noob but when
you get more mature and you understand
the lay of the
land and you go okay I'll learn this
weird stuff here and I'll learn that
there ah this job Python's probably
better this job Dart may be better and
this job about just you know do a little
PHP the only thing I won't do is Ruby
hey I'm Uncle Steph I Mentor people in
the ways of code
freelancing personal finance a whole
bunch of other things
essentially I teach you what I've
learned over the last three decades as a
developer and
entrepreneur and I pass that on to you
guys like any good uncle should there's
an old expression if only I knew then
what I know now if only I knew
then when I was much younger if only I
knew then what I know now I would go
back in time I'm Uncle Steph I would go
back in time and say cousin Steph don't
do this you're wasting your time do that
turn left don't turn right that kind of
thing so my idea behind this Channel and
my mentoring program Shameless promo
Uncle step uncle.com
I just try to transfer my Decades of
experience to you guys to make it easier
for you guys you
know one of my uncles was very uh
helpful to me in terms of Life advice
and so I'm just passing it back I'm
Uncle Steph I'm here to help so if you
have any questions any disagreements
about anything in this video please uh
post them below all right cheers oh code
long and Prof it
5.0 / 5 (0 votes)