Press "Enter" to skip to content

Tech Debt – MPJ’s Musings – Fun Fun Function


good Monday morning check that it looks

sort of like real then you accept Tec

them to get what you want

quickly and in return you accept the

fact that you have to do more work later

Tec that is also similar to real that in

the sense that it can snowball if you

keep on adding more debt and not paying

it off that is what we’re going to talk

about today I am npj and you are

watching fun fun functions for the ones

of you who have been programming for a

couple of years now

answer me dis when was the first time

you encountered the concept of tech debt

when did you first really become aware

for me it was coming into this code base

that was just horrible to work with

whenever you change something in the

system it felt like you had to do it in

ten different places and there was a ton

of code everywhere that we was not

really sure what he was supposed to

achieve if it’s achieved anything there

were spelling errors in it didn’t have

any tests and there were layers and

layers of abstraction that obfuscated

what was happening and every time we

squash the bug two more bugs flopped up

somewhere else it was nearly impossible

for the team to deliver anything and I

felt horrible and I dreaded going to

work in the morning and that’s the

situation that you end up in if you

don’t manage tech debt so how do you

explain the concept of tech debt to

somebody who has not yet experienced it

themselves I’m going to try something

like that imagine a house and imagine

that the house is about 50 years old

imagine the technical wiring and the

plumbing and imagine that over time

different rooms have been used for

different purposes the room was at one

point it was a spare room and then it

turned into nursery and now the current

owners have turned it into an office so

the room doesn’t have any proper

telephone jack doesn’t have enough

electrical plugs it doesn’t have any

network port so we have fixed that by

dragging some extension cables from

another room

we have hammered them under the skirting

boards so that you can’t see them

however we just intend to do this as a

temporary solution because when we start

plugging like the third extension cable

into the first extension cable then

things are going to start to be a little

bit messy

the analogy falls apart a little bit

here because whether house it doesn’t

change all that much you can probably

get away with doing this for a pretty

long time maybe you move from the house

without ever having to do it properly

like you know running a dark getting the

cables into the walls and putting

ethernet and telephone jacks and I love

enough electrical outlets in the walls

you might get away with that but

absolute project while it is sort of

like a building and it has one key

important difference and that is that it

changes a lot more there’s a lot more

work going on over time in software you

start with you know a few rules and an

extension cable ah

but as time grows on like not a lot of

time perhaps even just a year then you

have over a hundred rooms and like six

interconnected extension cables that

have been duct-taped under these stairs

in analogies are hard do you know a

better one so anyway when a system has a

lot of tech that you take a kind of

interest on it because it’s now slower

and riskier to work in the system if the

system is neatly and correctly organized

just plugging a new peripheral in if

your stroke but if there’s a lot of

proverbial extension cables all over the

place then you have to constantly go

check where they go first in order

because last time you didn’t do that you

blew a fuse and everybody had to stop

working it’s not uncommon that it gets

so bad that it’s just not worth the risk

at all to plug in that new peripheral

and this is why it’s absolutely critical

that you manage TechNet I am

intentionally using the word managed

here and not eliminate because some

tech debt is actually healthy for your

project just like in real life having

some debt is sensible

you can’t hypothetically live your

entire life using just cash but it’s not

insensible to accept some degree of

death you you might allow a friend to

front you when you in front your lunch

when you have forgotten your wallet

taken out a reasonably priced mortgage

or loan that’s also sensible or if

you’re running a business it’s a very

good idea to have a flexible credit with

decent interest rates that allows you to

manage your cash flow of it in software

it’s often not obvious in what direction

to take the system upfront so it might

be a good idea to let tech step

accumulate a bit let a little bit of

duplication grow in order to give you an

idea of what direction you should take

the system so having some tech tests

that’s fine if you can even call it

fancy a side note that makes me slightly

bias is that I assign the papers to

purchase an apartment what is the

situation of death in your country

because in Sweden the rental market is

kind of it kind of messed up so buying

an apartment is it’s very common it’s

kind of funky because Swedes don’t buy

much on credit at all except for homes

and there were your scope bananas

Sweden actually has a negative reference

interest right now it’s not healthy

I don’t think anyone can tell because it

never happened before in history but

that’s a side note ah analogies are

distracting the point is that while some

debt is is fine and healthy it’s

extremely important to be very careful

when taking on more debt because that

generates more debt because you pay

interest on that and if you accumulate

more debt while not paying off the old

debt you will eventually end

up in a situation where you have to take

on new debt in order to pay the interest

on the old debt and this creates this

snowball effect that will you spiral out

of control and yet destroy you a good

software team knows that they are

responsible for shipping things for

getting things out the door but a great

software team is also well aware that

they will have that same responsibility

next month and next quarter and next

year too and take that into account in a

great software team the Monday meeting

can go a little bit like oh hey we

shipped the waffle feature last week

congratulations as you know we did some

dirty workarounds in the payment system

in order to get it out the door

and I would like to take this week to

clean that up I would also like to take

this week after that to clean up and

simplify the authentication system and I

think that is worth it because while

developing the waffle feature we almost

didn’t make the deadline because we

found that there were so many risks and

problems with working in the

authentication system if we spend some

time cleaning it up now it would save us

a lot of trouble in the future and in

order for a discussion like this to even

happen in a software team it’s very

important that leadership in the project

is aware of the concept of technical

debt if you as a leader is not aware

that tech debt is being constantly

generated you will focus on rewarding

shipping there’s nothing wrong with that

but you will believe that the team is

now after shipping ready to ship again

so if you as a leader start tacking on

new development right after shipping

your leadership is incentivizing the

developers in your team to become duct

tape programmers and what I mean by that

is developers that are very good at

shipping in the short term but behind

this

since they are actually taking out these

high interest loans on behalf of the

team in order to make the deadline a lot

SEC that works kind of like that in real

life you get what you want quickly but

in return you have to do more work later

and your tech that will snowball if you

keep on adding more and not paying it

off you have just watched an episode of

fun fun function I release these every

Monday morning Oh 800 GMT ah if you do

not want to wait until Monday you can

check out this episode that the YouTube

machine brain has determined is optimal

for you I am npj until next Monday morning stay curious

Please follow and like us: