DevTernity 2019: Kevlin Henney - Lean Code Talk

https://www.youtube.com/watch?v=-nWhH-4wWBU&t=35s

Goals

Value

What do you actually mean by it? You need to figure this out

  • Value for whom? The developer? the team? The user? Society?
  • Over what period? Short term ? long term?

your customers do not buy your software by line of code

Utility - you get something from it (latin: utilitas)

Deleting dead code is not a technical problem; it is a problem of mindset and culture.

if it doesn’t get executed it has no value.

we can’t delete it because we don’t know if anyone uses it.

Quality

Robustness. It works as expected. it doesn’t fall over No nasty side effects when we do things that are stupid. We are human.

debt is not magic money.

when the term debt was introduced the itention was to imply that you can borrow but you must pay back.

Rember there is no code faster than no code can replace faster with “cheaper to maintain”, “more secure” etc.

“I always listen to what I can leave out” - Miles David (musician)

Knowledge

What we do in code is knowledge work. We codify an understanding.

“to be a 10x developer you need to be a good developer who helps 10 others get better.”

communicate

“code in the language of the domain” - Dan North

Encapsulation helps us reason about our code. Use the domain.

Change

“In the long run every program becomes rococo – then rubble “ - Alan Perlis

Even if “nothing” changed you change as you learn about what you’re building.

Traumatropism - is the regrowth of a tree often in a bizarre shape, after something traumatic like a lighting strike.

“Write code that is easy to delete. Not easy to extend”. Not everything needs to be extensible. If you’re not sure. Travel light. You’ll learn later.

Begin with a list of difficult design decisions and decisions likely to change. Each module is then designed to hide such a desicion from the others.

If you can’t agree with your colleague this is a good piece of information. It shows that the thing you are trying to design is difficult. This is a good clue that it might be something to encapsulate.

Flow

Meet the needs of the present without compirising the future ability to meet needs <– sustainable dev

Move slow and mend things. Deliver sooner, NOT faster. Seek velocity not speed.

Plan -> Do -> Study -> Act (deming/shewhart Cycle)

(he likes the word study as it sounds slow / deliberate)

People

Problems generally disappear when things are enjoyable. Habitability!!

You architecture should allow people to work in it

Wisdom of crowds

Holism

Always design a thing by considering it in its next largest context.

Turns out the fullstack is actually quite deep.

We’ve degraded the term ux. What does the user actually care bout.