oh yeah that's a good stuff hey tech
wait here and welcome back to another
episode
ah that's good at this rate I'm drinking
about three cups of instant coffee every
day and you may be thinking well that's
pretty unhealthy but it's not actually
because if you check the ingredients
it's just coffee instant coffees so you
know I can just drink a bunch of this a
better question you may be wondering is
at this rate maybe I should just be
investing in a normal coffee machine
given that I'm drinking so much coffee
every day and you might be right but at
the same time it just takes a lot more
work to be making coffee doesn't it well
I thought I would go over for you guys
today our five must know skills for
software engineers and this may be
especially useful for universities
students people who are just getting
into tech trying to become programmers
and people who aren't necessarily aware
of other skills that may be required or
needed for the field you know we all
know the obvious ones right like you
need to know how to program you need to
learn a language and maybe you need some
communication skills do some
problem-solving whiteboarding algorithms
data structures is that it and it might
be actually for you to pass a certain
interview or something but over time and
it may even help you look better if you
were to learn five additional skills and
these are skills that in my opinion
every single software engineer should
know they're not necessarily obvious but
over time you realize that every single
software engineer took the time to learn
these things
the first one is regular expressions
surprisingly I find that a lot of
university students they're not really
knowledgeable about regular expressions
unlike me I'm like a pro at regular
expressions I use them all the time I've
built entire databases out of regular
expressions when I didn't want to use a
standard like sequel database and
regular expressions can accomplish so
much it's a way to do pattern matching
on text the most obvious usage is for
searching large code bases for certain
pieces
texts using tools like grep you know
many code editors support this like
sublime Visual Studio code regular
expressions or rejects is are often used
for searching across large code bases
doing search and replaces refactoring
code they can even be used as code
checks to prohibit committing certain
strings of text certain styles of coding
using regular expressions you can scrape
websites parse poor data create entire
web applications where you read and data
validate the user input store the data
in a certain format and then read that
format back you can do all of that with
regular expressions you don't even need
a database every single company I've
worked in has depended heavily on
regular expressions if you're not
familiar with them I recommend you have
a gallon board moving on the second
skill that most developers should know
is sequel a lot of developers offend
especially if they're junior they don't
really know sequel yet but eventually
many developers wait go on to learn
sequel what is equally important
you know sequel is a database language
is for querying database tables creating
tables editing them reading them and you
might be thinking to yourself well
you're not a database engineer what do
you need sequel for turns out data
metrics are very important for any
engineer in order to launch any feature
you need to be able to check out the
data analyze it logging is very
important in order to measure the impact
that you have you know you don't just
ship a feature you ship the feature and
then you need to say well it increased
over our application usage time by two
percent it dropped some other metric by
one percent but I recover that in some
other way and sequel is essential for
being able to query your data logging
metrics dashboards and be able to figure
out what data is there these days in
most companies in order to launch any
feature you need to have the metrics the
data to back that up and in order to
obtain those metrics you need sequel
that's why it's going to be helpful for
any engineer to at least be able to
write a few standard sequel queries
using like group by order by aggregation
things like that the third skill that we
all need is debugging skill
all too often I see engineers if they
know how to code but they don't know how
to debug and they don't pay much
attention to it they just say you know
the compilers wrong I don't know they
can't figure out where bugs are there's
just no problem-solving ability there
even though they know some algorithms
and debugging is really the art of
problem solving being able to quickly
identify where in the code a bug may be
because for the majority of engineers
most of your task is going to involve
fixing small bugs you know there's a bug
figure out where it is and then fix that
bug and many times these bugs can be
obscure kind of strange hard to track
down the ability to debug is going to be
very important here and not only that I
would say but if you're working on say
mobile apps for example you're going to
want to be able to use the debugger gdb
step through the program create
breakpoints maybe even check out source
control check out the versions history
of a file and see where it changed at
what version and where the issue may
have first cropped up oftentimes people
see me as a senior engineer asked me to
go fix a certain problem that no one
else can fix it's not necessarily
because I know some algorithm better
than some other person is simply because
I know how to debug a program more
accurately and precisely it's really
about analytical and problem-solving
skills my fourth tip for you and this is
what separates the truly great
programmers from the mediocre ones is
scripting tooling being able to create
tools for yourself and you know I have
heard a quote recently that said all of
the best programmers are writing their
own tools if you're not writing your own
tools to speed up your own process your
own workflow you're just going to be
limited but the tooling that has already
provided you know I think what really
makes software engineers highly
productive the difference between an
engineer who is outputting 1x code
versus 2x code or 5x or 10x code is the
tooling and usually these tools are
going to be written in a language like
say Python maybe PHP bash you can even
use like nodejs JavaScript maybe Ruby on
Rails or go Lane some tooling language
that can we
on the command lane and you know these
scripts can be used to help expedite
your overall workflow for example for
Cobra factors you may be writing a
script there's only a one time usage
thing and it can analyze a repository of
code and override detect unused files
may be buggy lines of code I personally
write my own script wrappers on top of
version control so I'm not necessarily
using like say git or mercurial for
version control I'm using my own system
and I find that that for me helps be
that my personal workflow so I would
just recommend that you're not ignore
the script inside this is going to
involve maybe having some familiarity
with bash Linux UNIX and a language like
say Python or something like that for
the fifth final and last tip I could
have chosen a lot of things but I think
I'm gonna have to go with antisocial
skills and and their social skills are
very important for a developer you know
if you just go to your co-worker James
and you say hey James how's it going are
you feeling okay buddy do you want to go
grab a quick beer can I cheer you up
friend how was your weekend all of that
is not really providing much value for
anybody and James may even decline your
invitation to go out because he's a busy
guy everyone's trying to be productive
on company time
and so the standard social skill is not
really useful but you need some sort of
social skill communication is still very
important your antisocial skills is
really about communication without being
social and this may involve writing
emails creating wiki pages posting to
groups
setting in PowerPoint presentations
creating Excel sheets and notes and
properly circulating them it was funny
that I've worked in some companies where
I might send a private message to
somebody and that person would
explicitly decline to communicate back
with me because they would say that this
private messaging does not surface the
conversation for anybody else to see
that type of socialization is actually
frowned upon and what people really want
is a way to preserve history preserve
the knowledge and circulate it with as
many people as possible the proper forum
for that may be like a wiki or a
widespread
email message or something like that
where many people can see the
at the conversation you know this may
also involve if you have a one-on-one
conversation with somebody well sure
yeah that's so sure but after that you
want to capture that conversation in an
anti-social manner in which you write
down the notes of the meeting the
conversations and then you circulate
that across your team so that everybody
knows what was discussed that so for
those of you who are not social
butterflies I would take some
consolation in knowing that I don't
think anyone's really asking you to be a
social butterfly there's actually a
whole other set of socialization
communication skills that are needed
that are required for software engineers
that actually have more to do with being
the antisocial but yet communicating
effectively if you're looking for more
tips for software engineers be sure to
also check up daily coding problem comm
slash tech lead for daily interview
coding problems they'll send you a free
coding interview question every day just
to help keep your skill sharp and if you
sign up as M scribe they'll also send
you the solution so check them out daily
coding problem comm slash tech lead so
they'll do for me let me know if you
guys have any tips you'd like to share
in the comments below if you liked the
video give it a like and subscribe and
I'll see you next time bye