Press "Enter" to skip to content

How to deal with bad bosses + other questions – Fun Fun Function


good Monday morning I am mpj and you are

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

Please follow and like us: