hey tech light here welcome back to the
X Google X Facebook tech Late Show now
today I wanted to tell you about how
software engineers work in teams and
we're going to be covering a number of
people that you may be working with
software engineers may generally work
with other software engineers the
project manager who may be responsible
for the overall feature UI designers and
engineering managers so this is for like
a feature team type of project the type
of team that I usually work in and I
thought I will talk about my experiences
working with these sorts of people and
if you haven't worked in the team in
software engineering then this would
give you a good idea of what that's
going to be like and then some of my
tips and tricks in dealing with these
types of people quick pause thanks our
sponsor curiosity stream a subscription
streaming video service that offers
thousands of nonfiction titles and
documentaries from some of the world's
best filmmakers including exclusive
originals check them out at curiosity's
dream.com slash tech lead so first up
actually I wanted to talk about UI
designers who actually come up with the
design for a feature and I want to
mention this because I have a huge
problem with UI designers at least the
way they currently work usually they
just come up with a mock a graphic about
what a feature is going to look like and
then it's the engineers job to actually
translate this graphic into working code
that works across all sorts of different
screen sizes now the problem with UI
designers is that there's no holistic
thought behind a lot of this actually
for example if you take a look at say
material design or Apple's Cupertino
designed the human interface guidelines
then that's actually a holistic design
and what the engineers can do is
translate this design system into code
like you could have a set of consistent
colors padding tech sizes fonts and all
of this could just be translated into
code such that you have this one
cohesive system and design but usually
what happens with designers is that as
far as I've seen there's just no
consistency they just play it by eye and
each time is just like this time they
want the color to be a little bit
off-center red or they want the pixel to
be just a little bit shifted more but
they want a text size to be just a
little bit bigger than they used to be a
button to be padded by seven pixels
instead of eight pixels and what happens
is that this just creates a whole bunch
of churn in the code as well I've
actually been in meetings at Facebook
where the designer comes up with
inconsistent and different designs for
very similar views across different
pages of an app so what I'm trying to
say
that the design drives the code if the
design is consistent and holistic and
well thought-out then the code can also
be well thought-out and very organized
but if there's a different design for
each different page then you're going to
need to duplicate the code that many
number of times as well is just going to
be a complete mess
so what engineers can do is work with
designers to help them understand the
constraints within the system and the
need for consistency because that can
actually reduce the amount of code that
you will be ready back at Facebook I
think there are thousands or tens of
thousands of views each one just a
little bit different I mean how many
views do you really need I think we only
need like say ten but the reason we have
so many thousands of those was because
each designer had a different little
tweak on each view and then they
wouldn't want things to be a little bit
different each time not to mention these
days UI just needs to be far more
complex it needs to support all sorts of
screen sizes accessibility patterns dark
mode light mode variant excises and
responsive design so the cost and having
additional views and the UI's just goes
up quite a bit just in order to support
a small little inconsistency between
each one okay so the second type of
person that a software engineer may work
with is a product manager which is like
a mini CEO of a small little feature and
the PM helps guide a feature fort so the
product manager is responsible for the
overall role of a feature coordinating
with the software engineer the designers
may be the data scientists to analyze
metrics and they're to eventually ship a
feature so oftentimes it is a project
manager that is driving a feature Ford
and the engineer just sort of sits there
and implements whatever work they're
being told to do at least that's the
idea but what I found actually is that
engineers can actually help drive
feature development as well because it
is the engineer that usually knows which
feature is easy to do and which is not
easy to do so what I found is rather
than just sitting around and waiting for
the PM to tell you what to do you can
actually be digging around the code and
creatively think about cool ideas or
products and propose them to the PM and
let them know this type of feature can
be built very easily and quickly
sometimes I'll just build out a
prototype over a weekend and show people
on Monday and that may launch a project
for it because nobody except the
engineer
knows which features are easy to do and
which are difficult for example the
product manager may suggest a pop-up
dialog which they may think it's pretty
easy to do but could take two to three
weeks just to implement for the engineer
whereas in fact if you were to navigate
to a new patience that that could save
you two to three weeks of implementation
and just help you ship things much
faster so as an engineer I would
consider it part of your job to work
with the project manager occasionally
you can come up with suggestions or
ideas alternatives to help influence the
project direction now another person
that you may be working with are the
engineering managers in my experience
the managers they're not so technically
hands-on but they're more focused on
your career development as a person so
just making sure you're hitting your
goals getting good performance ratings
and any promotions that may be coming
your way as far as engineering managers
go my only suggestion would be to try to
find the technical manager who used to
be a programmer if at all possible
because in my opinion only they would
truly be able to understand what type of
work you're doing and be able to
sympathize with the hardships and
challenges that you may be going through
otherwise you know a manager may just be
driving you without truly understanding
how difficult the tasks you may be doing
right they may just say come on it's
just a button can you implement this
button why is it taking a week just to
implement button whereas it could be
easier said than done
maybe you have to implement it on the
front end then go into the back end
using a completely different language
just to wire everything up put in the
logging testing wire up the metrics
support accessibility right-to-left
international languages so there could
be a whole slew of other things there
but generally I find that managers
they're there to support you build out
your career and you just need to let
them know what you want and they can
help guide you in that direction and
then one more type of person you'll work
with as a software engineer or other
software engineers now the relationship
between software engineers I find to be
somewhat competitive as well as
collaborative as well what happens is I
find a lot of software engineers they're
competing with each other to try to take
on projects that are highly impactful
and if there's a good project idea
sometimes people will fight each other
for it sometimes you see engineers just
inventing random frameworks and then
they want everybody else to use these
frameworks these over engineered pieces
of garbage just such that they can claim
that on their performance review and if
you don't use their frameworks there
to feel a little bit offended and then
they're going to go through your code
and try to migrate your code and
refactor such that it's using their
framework and then you have to go
through tons of code reviews and before
you know it you've just got over
engineer to trash other times you're
working with software engineers and
they're just not pulling there away you
got to do everything yourself and then
they're taking your credit claiming that
they helped to work on this project in
which they didn't really do that much
not in my opinion the proper way to go
about this is actually to take on
initiative when you can take on the
initiative and come up with a really
great project idea you actually create
more opportunity and then people will be
clamoring to try to work with you on
this project if everybody is able to
come up with really cool big initiatives
then you know you want to work with
other engineers who came up with this
idea and other people want to work with
you on your idea and if you're not able
to come up with some impactful project
idea then yeah maybe you should just go
work with another engineer who is able
to come up with that maybe somebody
who's probably more senior who has more
context than experience and then learn
from that person and then later on
you'll be able to drive your own
projects as well alright so excited to
learn more well check out curiosity
stream comm slash tech lead one of the
world's first streaming video services
focus on understanding exploring and
learning more about our world created by
the founder of the Discovery Channel is
content span science nature history
technology society and lifestyle I
particularly like the episode African
and the mall rescue following a crew
saving some of the world's most exotic
and endangered wild animals get limited
access Avengers $2.99 a month or $19.99
a year and your plans and gift cards are
40% off for them at that time and
because I'm the tech lead I'm getting
you a free 30-day trial completely free
so check them out a curiosity stream
comm slash tech lead so those are some
of my tips but my overall message is
that as a software engineer you probably
have far more influence than you may
imagine because software engineers are
the only ones who are actually working
with the product in the code and they
know what can and cannot be done so that
there for me I hope this gave you a
clearer idea of how software engineers
work in themes let me know what your
tips are as well if you liked the video
give it a like and subscribe I'll see
you next time thanks bye