
watching fun fun function today is one
of those days you just want to be a
little bit more relaxed so today I’m not
going to do a normal episode I’m just
going to take questions and answers Yong
Barone how do you overcome frustration
in our line work this is an interesting
question so I’m assuming or at leaning
the question ever the feeling that you
get when you are yes you know hammering
your head against against the problem
and it just doesn’t seem to debauch one
of the most important things in in your
professional career as any kind of
creative engineering like profession is
to have a structured approach to
problem-solving there are some books
about this to get you started there is
this book I was recommended a while back
how to solve it
I’ve linked it in the episode
description it’s not about programming
per se it’s about math but it’d be the
generals the important part is the
general thinking process behind problem
solving and how you develop a structured
approach to it how you think about it
that is and I think that this is
something that every individual has to
create one for themselves
but I think that most experienced
software professionals well of course
they experience frustration but it’s not
a problem for them because they they
know what to do when they are faced with
a problem that they cannot yet solve
they have oh I’m gonna do this so I’m
going to think in this way I’m going to
draw these things I’m going to do these
things you can actually observe the
person have this in a software interview
because a an experienced professional
well during whiteboard coding session
they won’t start coding immediately they
will start by
thinking about the problem and asking
questions about the problem to make sure
that they first of all have understood
the problem correctly and can formulate
appropriate Pro coupe problem back to
thee and to the interviewer but also
they figure out the general algorithm or
approach to the problem before they even
start writing any code and this is an
indicator that the the person has a
structured approach to problem solving
they they know what to do when faced
with a problem and this is this is very
important to build up over the years and
any well as you go along you will you
will find it once you stop learning from
your own mistakes when it comes to
problem solving and how do you think
about things Jose Rios do you use
something like this Pomodoro Technique
yes I do I even made an episode where I
built a Pomodoro timer there’s a link to
that episode in the description but yes
we set expectations I don’t finish any
profitable hunger in that in that
episode but it’s fun
real tough yeah I asked how to deal with
vague project requirements oh great
question first of all it’s important to
set your expectations or project
requirements project requirements are to
some degree going to be baby per
definition the if if they weren’t vague
the project requirements would be code
essentially code is what describes a
piece of software and a project
specification is only kind of sort of a
description of that your job as a
software developer is to take the kind
of fluffy unspecified of your
requirements and turn that into the
exact construct that is is code that
said there are degrees in hell and there
are project specifications that are so
vague
they really cannot be executed on and
this the worst kind of software
requirement is the ones that do not
really understand if you don’t have the
why and there’s just and you just have a
lot of watts to like oh we’re gonna
implement this and implement this and
increment this you you it’s going to be
impossible for you to fill in the gaps
between the Watts because you don’t know
the why that that was the collator
of of these watts so answer a software
developer it is extremely extremely
important that you make sure that you
communicate with whoever your customer
or boss or manager whatever who gave you
the specs and make sure that you
understand why this this project exists
and what it is supposed to achieve and
then you can start of taking these
things of what it is that you’re
supposed to be doing and start filling
in the gaps in order for this to work
it’s extremely important that you have a
very fast feedback loop with your
customers so that you can when you have
filled in those gaps you can send off
the slack message and ask your customer
is this what you wanted here you haven’t
specified and the more vague the plan is
the more you’re going to be doing that
so it’s extremely important that you
that the feedback loop is fast I didn’t
episode on this called the mission
clarity I have linked that in the ex-ceo
description tiranos flex asks what are
indicators of over-engineering in
software also how does one avoid to over
engineer in the first place so over
engineering is a very large term I if we
limit this question to talking about
this
two kinds of our engineering that I
think or most common that is premature
optimization and premature a
generalization premature optimization is
rather well known it’s when you start
optimizing your code without empirical
evidence that optimizing this piece of
code will holistically make your
software faster if you just look at this
little bit of code that all this is so
inefficient I need to optimize this this
piece of code but the problem is that
this piece of code might only be run
once for ten seconds or something and
then you have this other function that
is pretty well optimized but it’s run
like many many many many times per
second and even though like this is
atrocious and this is a lot better this
is actually the one that you should be
spending time on because that is used a
lot more often and this is the problem
with premature generalization and the
way you you solve premature
generalization or the way you avoid it
is by making sure that you do you do
proof profiling that you profile your
application and make it really identify
empirically which parts are your actual
real bottlenecks instead of trying to
figure that out by looking at the code
premature generalization is generally
pretty easy to spot if somebody makes a
change in a pull request that is an it’s
an optimization it’s very easy to spot
an optimization because an optimization
is almost always more complicated than
the straightforward named version so you
can like just simply ask the person okay
what was the how did you profile this
why did you do this performance
optimization and then they will explain
that all day yeah you did this profiling
and this is why I did it or they oh yeah
I did Griet is
else like optimizing this piece of code
a great way to avoid over engineering in
general by the way is to have mandatory
code review he attends to captured
remember performance software is born in
the profiler nowhere else another kind
of over engineering that is very common
is premature generalization or premature
abstraction abstraction is one of the
most important tools for a software
developer and they are fantastic
abstractions allows us to take a
complicated problem and encapsulated
into like a nice need to a ball that we
can reason about completely separately
even though that is a lot of complexity
in science that is the amazing thing
about abstraction it also allows us to
take duplication and create a general
version of something so that we can
avoid having to repeat ourselves a lot
abstraction it’s just fantastic
but the danger with abstraction is that
it’s a lot harder to pull off correctly
than you intuitively think for me I have
found that abstracting things it can
share this trait with doing time
estimation I I find that every time
estimation that I make is always way too
optimistic I find that I have to
multiply every time estimation that I
make with 3.14 in order to get something
that is more reasonable even if I
account for the 3.14 it’s very bizarre
and abstractions are the same thing I
guess I feel like I have a good sense of
like I feel that I’m good at seeing that
ok these three things here they are
duplicated yeah we can probably abstract
these into a general form and I do that
but then this fourth case arrives and it
doesn’t trick
my generalization and then yes
everything becomes slow because I
generalize prematurely so nowadays I
find that I wait for a lot of
duplication before removing it with code
I find that I I absolutely must wait for
at least three cases of duplication
before before making an obstruction over
it and list this it’s hard for a lot of
programmers to see duplication and leave
it around and it’s hard for me too but
you need two less duplication grow so
that the general case reveals itself
properly before you you take a stab at
the abstraction this is very important
or you are going to make a mistake if
you’re writing unit tests I found that
this figure is even higher I tend to
wait for at least five or six times
before and before removing duplication
and the reason for this is that tests
have this kind of inherent repetitive
quality to them but they are the tests
are intentionally different because they
are testing different parts in your code
so the general case is it’s often very
misleading it it’s not at all as as
general as it looks even though this lot
of code being repeated but just looks
general I hope that makes some kind of
sense which code editor do you use and
why are you special studio code at the
moment because ah I want an editor that
just works from the get-go I what I mean
by that is that I should be able to like
if I’m on a friend’s computer I should
just be able to install the the editor
from the from the interwebs in in a
minute and be up and running I shouldn’t
be having to configure it in our
Hegelian kabillion ways Visual Studio
code is also marvelously well done I
really
like that you can just press f5 on a in
a JavaScript file and debug it line by
line that is so cool Edward should I ask
for a raise or quit my job you should
absolutely just usually switch jobs if
it has been shown over and over that
more money after certain levels does not
do anything for your life’s happiness
unless you are specifically saving money
for some kind of you know starting your
own business or or buying a house or yet
something that is part of your life
goals like just getting more money no
it’s not going to make you happy Jake’s
lazy silence or music when working uh I
actually use music it has a tendency to
be a bit a bit distracting but silence
is also distracting nowadays because my
tinnitus has flared up recently so right
now I’m using a lot of white noise and
rain sound when I work and it’s very
relaxing and nice Mike how do you handle
bad superiors to give poor advice and
management all right so if you have a
bad boss your first like your first line
of defense needs to be to delete this
boss it’s important like as a member of
an organization that takes ownership
which you should be doing because I will
make you happier and it will make the
organization perform better it is to not
only lead downwards if you have
subordinates it’s also leading upwards
to your bosses and also leading to the
side and leading your your your
co-workers to make sure that you all
make good decisions if you have a
superior that that gives you bad
direction you need to make sure that you
you manage your manager and make sure
that they help them to make better
decision give them more information
about the realities that
exists that perhaps they are not aware
of or explain that all this thing that
you did explained in a constructive way
that that made me very frustrated and
motivated they might not be aware of
that leaving is very very hard and a lot
of the process and people under you or
essentially made invisible to you the
second you become a manager people stop
talking to you and you lose the feel for
for the organization it’s kind of it
sucks actually
so you might need to give your managers
on slack instead of asking what like oh
my god what’s bad management they are
giving up perhaps you should also ask
what management am i giving them that
said some managers are simply not
receptive is just as some subordinates
or not receptive to to management and in
those cases if the person is is not
listening to you and your relationship
with them has has become infected and
you feel like this is this is not going
anywhere and I have done everything in
my power to help them become better and
they are just not absorbing it then you
should absolutely look into switching
switching teams or if that is not
possible switching organizations that is
that is just a reality of it our life is
very short and it’s way too short to
suffer bad managers eight hours a day
that long yes so we just destroy you so
yeah make sure you fix that in your life
how do you finally discipline to
complete stuff outside of work Evan I’ve
made a video on this you can find it in
the episode description it’s called self
discipline is a fraud according to my
sound recorder we are out of time I hope
some of that was valuable to you if you
have any reflections please post them
down below I’d love to hear them that’s
it for today if you’re new you have just
watched an episode of fun fun function I
couldn’t
and release this every Monday morning Oh
800 GMT if you don’t want to wait that
long you can check out some of the
episodes that I mentioned during the
video in the description that is it for
today I am mpj until next Monday morning thank you