Learniverse

Die Evolution der Entwickler

00:00

Good afternoon. How are we doing? Day one. Go to.

00:16

Sunday afternoon. So yeah, that was a fun one to explain to my wife. I'm just going to be travelling

00:24

to. Welcome. I want to talk about human beings. So who here is a developer? Nearly all the

00:36

hands went up. Who isn't a developer? Are you all sort of managers? Are you your causes

00:42

of work in developers? Or you coach developers? If you're in Martin's talk this morning,

00:50

it's brilliant. I love Martin's talk. And he started off with, there's coming out of some

00:55

quotes about, you know, that we sort of think of as fairly modern in terms of software and

01:00

you're saying, you know, Alan Perlis said this in 1967 and, you know, Melvin Conway said that thing

01:05

in 1968 and all of this stuff like, you know, we've been there before. I want to do what

01:11

to do something a little bit similar. I want to go back in time. I want to talk about what it used

01:16

to be like to be a developer and how that's changed over the years and what that means for us.

01:22

Right? Well, that means for us as developers. So let's go way way back. Let's go back to the

01:28

old testament. Okay. So in the beginning, in the beginning, we're not all the way back. 1844. Does

01:40

anyone know what this is? One hand went up, go, what is it? No, no, no, the other love

01:47

laced. This is a reproduction of, so this is all of the software in the world in 1844. This is

02:01

arguably the world's first computer algorithm. So the story is Charles Babbage who's invented

02:08

this computing engine, this arithmetic engine thing is made out of steam and goats and stuff.

02:18

And he's explaining to people how it works and what it does and that you can get it to do calculations.

02:24

And there's this young Italian guy in the audience who went on to it turns out to become the

02:29

Prime Minister of Italy. But he's making notes and it turns out he's making notes in French. I

02:34

don't know if he's showing off or what, but he's making notes in French. And so a little bit later,

02:40

Charles Babbage decided it might be useful to have this translated, so he's got notes of his talk.

02:45

So he asks a young lady. Her name is Augusta Ida Kingnoll. We know her better as a

02:56

love-laced accountist of love-laced. She is the daughter of Lord Byron, Lord Byron, famous for being

03:03

a opium-fiend and poet. And so a Lord Byron sort of run off and galvancing with all these women and say

03:11

his wife said, right, there's no way his daughter is going to grow up to be a poet. So we're going to

03:16

teach her engineering and science and math and stuff. And so Aida love-laced had a very unusual

03:22

education and she was educated in a very scientific way. And so she took on this job of translating

03:30

this stuff for Charles Babbage from French. And on the way through she made some notes and they were

03:36

very originally called notes. So all of the notes are just a little note. And note G, which was the

03:45

previous picture, that is her making a notation of essentially how you could teach this analytical

03:54

engine to do binary numbers, to calculate binary numbers. So she saw that you could take a computing

04:00

engine and give it instructions and make it do stuff. Okay, no tests. Okay, just going to put that

04:08

out there. But you know, they didn't have a computer, so that's fair enough. So this is 1844.

04:16

This is all the programmers in the world. So that's two things. Firstly, all the programmers in the

04:20

world with female. And secondly, all the programmers in the world really knew how to dress.

04:26

Who knows their own t-shirts and shabby jeans and whatever and she's like, I mean, that's quite an

04:31

outfit. So okay. So time passes. Okay. Does anybody recognize that? Any hands going up?

04:43

No, you have a couple of hands. One of my favorite favorite games of all time from the 1980s,

04:49

it's the Hobbit, the Hobbit adventure game and your type in things. And it said, and if you typed

04:54

in weight, it said, you wait time passes. And if you were with Thorin, Thorin waits as well.

04:59

Which is kind of nice, you know, Thorin doesn't just walk off and leave you, Thorin waits with you.

05:03

Which is nice. So 100 years later, okay, it's now 1944. Things have got a bit serious now.

05:12

So the only deal of a computer has become, and as with many of these things,

05:17

okay, Martin alluded to this in the morning, most technical innovation tends to start in the military,

05:25

tends to start in defense. And then it goes into academia and then it goes into commerce,

05:29

it goes into business. And so for instance, the internet started as an exercise in getting

05:35

computers connected to each other by DARPA, the US defense, advanced research project

05:40

agency, and it was originally called ARPANET and then it went into universities, it was called

05:44

Janet, the joint academic network, and then we knew it as the internet. So computers are being used

05:50

to crack codes, okay? So this is two women, because again, all of the programmers are at the time

05:57

more women. And these women genuinely are hackers, right? Because they're hacking, they're hacking

06:03

the rent cipher, the crypto that went into the, into the enigma, cryptography machine.

06:13

And according to Wikipedia, the, the, the, the, the founder of all knowledge, this is Dorothee

06:18

Divosor, an LC booker, who are a couple of early programmers. And so in assessed his mother

06:24

invention, and then then what happens? And then we invent tools. So this is Admiral Grace Hoffa,

06:29

one of my heroes. She invented the compiler, because, because she had to, because it sucks not to

06:38

have a compiler. There's a wonderful interview with her on a chat show. And I can't remember who's

06:46

interviewing her. But he says, he says, so, so, so, so they hired you, um, because what you

06:52

were that you were a computer expert. And she's like, they weren't any computer experts. We were

06:56

inventing this stuff as we went along. So she invented the compiler. She also invented the nano

07:01

second. I don't know if you know about this. So what she was doing, she was trying to explain to

07:05

other admirals in the US Navy and US military in general. She was saying, you can't have

07:12

instantaneous communication with your ships at sea, because space. Right? And they said, well,

07:18

well, why do I? I can pick up a telephone and blah. And she said, no, let me explain. And so she

07:22

phoned down to the machinery. She said, I need you to cut me off a bunch of lengths of wire about that

07:27

long. Okay. And so, 100 lengths of wire. So she would walk around with these lengths of wire

07:31

around her neck. And when she was in a meeting, she said, here, have a nano second. And she'd

07:36

pass one of these lengths of wire. And like, what's that? That's a nano, that's how far light

07:40

travels in a nano second. And so then she'd say, right, so now what happens is this, when you send a

07:46

message, the light travels in nano second. So we've got to lay these things out. Yeah. So every one of

07:51

these all the way up to the ionosphere and all the way back down to the ship, right? Every single one

07:55

of those is a nano second. That's the shortest possible time you can have communication in.

08:00

And they were going, oh, oh, she also had some micro seconds as well, but they were much longer.

08:06

They'd be coils of wire. That's how we invent tools. And then, okay, so now we've got some tools.

08:12

And now people start to specialize. So this is now in the 60s and computing has become

08:16

simply enough even men can do it. And, and so we've got these two guys here debugging a mainframe.

08:24

This is an academia now. And of course, pair programming, which is nice, right? So, you know,

08:31

they got into that pretty early on. And so people start to specialize. And so you get into

08:36

these different kind of specialisms. So it wasn't just come in and fix stuff. It was, well,

08:41

you know, we've got the idea of an analyst and a program and whatever else. And so we got

08:46

commandments. Okay, so then we just want to lay down rules. And we'd say things like,

08:49

you shall have a business requirements document. Okay? Because this is what we do. When we take

08:54

things into industry, we like to put rules around it. And we say things like, you shall have a functional

08:59

specification, you shall program in the manner of the specification. Okay? You shall have no other

09:05

specification before me. Okay? There is one truth, right? And you code to that truth. Analysts

09:13

shall analyze architecture, architect. We have these silos of specialism. And then we say program

09:20

and show program. And by that we mean take a detailed functional specification and turn it into code.

09:26

It's like an intray out tray kind of thing. And then a test of the shell test, which is taking the

09:31

crappy code and turning it into bug reports, right? Similar sort of deal. Okay, there's more.

09:37

There's more commandments. It doesn't stop there. You shall complete a formal change request.

09:41

You don't just go, this could be better. I think if I brought my baby and put it at my feet

09:49

and figured out how to land a rocket on the moon, right? I could probably, no, no, no, no. Do you have

09:53

a functional specification? Do you have a formal change request for that? No, no, I don't.

09:58

You shall provide release documentation. Okay? You don't just get to put stuff into production.

10:04

You shall not release to production yourself, list you incur the wrath of the release manager.

10:09

We still have that one. That hasn't gone away. You shall not hack on that, which is in production.

10:18

More of a guideline, really.

10:20

But then, this was my early career. This is probably up until I'd know, 1998, 1999. I started

10:29

programming. I'm much younger than Martin. I started programming in the mid-80s. Okay, about two years.

10:37

But like professionally, as well, not professionally, but as a graduate,

10:42

probably 91. 91 onwards. So the first 10 years of my career, this was normal. This is how you did work.

10:48

And then, and then stuff happened. Right? Then we got the new testament. And this was around

10:54

about 2001. It was a new covenant, a new deal, a new contract. This is Linda Rising famously

11:02

calls this the Council of Middle-aged White guys, which are quite like. This was Bob Martin

11:12

late 90s, early 2000s. He knew a bunch of people. And all these people were trying to solve similar

11:17

problems. Okay? They were essentially what they were trying to do was help teams deliver stuff

11:24

in big companies. And what they were tend to do is, you know, we have these multi-year massive

11:31

programs of work. And various different people had these guerrilla approaches. And these guerrilla

11:37

approaches had names like XP, DSDM, FDD, Feet of Driven Development, Crystal, Adaptive,

11:45

Scrum. Right? So all these loads and loads of different methods that people have come up with

11:50

the name. And it's like, okay, this is great. But that's really kind of fragmented. We need an umbrella

11:55

term. It's come together and come up. And so they did. And it turns out that they actually tried this

11:59

in 2000. And they all met up in a ski cabin in Utah. And they spent the weekend drinking whiskey,

12:06

because that's what happened when he gets 17 middle-aged white guys together. And apparently nothing

12:10

happened. And so they went, oh, well, I mean it was great fun, but nothing happened. So then the following

12:14

year they got together again. And this time they came up with a thing we know as the other

12:19

agile manifesto. So agile manifesto, I think it's a fantastically enduring document. Okay,

12:29

if you stand back and squint, everything about this is true, 15, 16, 17 years later. And I suspect

12:36

we'll still be true in 10 years time. We are uncovering better ways of working is how it starts.

12:43

It doesn't say, hey, we've solved software. We've done it. See, we got this. It's no, we're uncovering

12:47

ways of working. It's an ongoing. It's a continuum. We value a bunch of things. We value processes

12:57

and tools. Those things are important. We value individuals and interactions more than that.

13:01

So the stuff on the right isn't rubbish. The stuff on the right is valuable. Otherwise it

13:04

wouldn't even have made it onto the sheet. But the stuff on the left is more important. That's what

13:09

they say. We like comprehensive documentation because that's how people are going to understand what's

13:14

happening later on. Famously with Amazon, whenever someone's going to start a new feature or new

13:21

product to Amazon, they start with, what do they start with? Meetings, functional specification,

13:32

BRD. They start with a press release. The first thing they do is they write the press release

13:39

as though the product already exists and is awesome. And so they write this amazing press release

13:44

and they go, right, shrug. Let's go build that. Because that's a really, really good way to focus.

13:50

Very good friend of mine. He's like my favorite programmer. He, whenever he starts anything,

13:55

he starts with the read me. He starts with the read me that he wants to read in order to build this thing.

14:01

And then the second thing they do is they write the FAQ. Imagine this is already out there and

14:05

is super popular. What would the questions be and how would we answer them? And I did this once.

14:10

I'd written a thing like a little hero who kind of rip off. So the internal cloud deployment thing.

14:16

And, and I was leaving the company and I was handing it over to my buddy and I started writing

14:23

the documentation for it. I thought because I don't have a dump it on him. And I wrote the read me

14:27

and I said, here's all the things you need to do to install this. And as I was writing it, it got

14:30

to about two or three pages long. And I was embarrassed, right. And so, and so I figured, right,

14:38

well, what could I clean up here to make the read me smaller? And so we ended up, so I iterated,

14:44

I only took like a few days. But eventually this read me, went all the way down, it said, right.

14:50

Install this thing, change that thing over there and just choose a port number. So the whole thing

14:57

you could configure with an IP address and a port number. And so I thought that was embarrassment,

15:01

driven refactoring. I couldn't look him in the eye and hand him this thing. I had to clean it up.

15:08

So, okay, so we've got this Agile Manifesto. And this changed a huge amount of stuff. Who's been

15:15

in technology for less than 15 years? Okay, probably half the over half year. So that means

15:23

this stuff's always existed. Your whole career, this is always existed. Who's been around

15:28

more than 15 years? All the tired arms go, oh me, I have, right? So you've seen this kind of

15:36

sea change during your career. So revelation. Revelation is, there's more going on. I'm now not

15:44

a person who turns functional specification into code. You know, testers are not someone who

15:51

turns deployed software and a testing environment into a bunch of test scripts and test script reports.

15:59

We need to think beyond developer. Okay, we need to think about things slightly differently. So I'll

16:03

tell you what I am now. I think of myself, I am a multi-dimensional creature. I'm a developer, sure,

16:09

but I'm a developer in a team. Okay, I'm not a developer on my own with my own little pile of

16:14

work. I'm an developer in a team. I'm building a product. So I've got to start thinking about what

16:19

it means to build a product. And I'm not, again, I'm not building that product in isolation. I'm

16:24

building that product on a platform. Okay, so that means I need to start thinking about the ecosystem

16:29

I'm working on in the organization. I mean, a department is not just my team. You know, this is

16:35

a little silo team based thing. There's probably a whole bunch of teams working towards a single

16:40

program. There may be a whole bunch of programs going on across the portfolio of work within a

16:44

department. And that department exists inside an organization. So there's a bunch of stuff going on here,

16:50

right? But I don't want to talk about me. I want to talk about you. Okay, because you are

16:57

all those things too. So what I want to do is unpack each of those things and have a think about

17:06

how that impacts what you are, who you are, your identity, things that are going to help make

17:12

you a more effective developer. Okay, so we'll be on this little silo program a thing.

17:19

So you're a developer. What does that mean? We're thinking about some stuff. Obviously, it means

17:25

you need to learn the language. Whatever language you're programming in, you need to learn that

17:30

language. And there's learning and there's learning. Right? There's I can know roughly how to get

17:35

by in C-Sharp. Right? I can figure out what to type. I can figure out that kind of thing.

17:42

That might help. But then for instance, C-Sharp and Java look very similar as languages. I'm

17:49

much much more proficient in Java. Because a language isn't just the syntax. It's the libraries.

17:55

So there are some core libraries in there. And it's not just knowing where they are. It's

17:59

knowing what they do, knowing what their performance characteristics are. Great example, Ruby has a

18:05

data structure called List. And I can make lists in Ruby and they're a list. Right? There's another

18:11

data structure called Set. In Java, I have a plethora of lists and sets, different types of those,

18:20

for any occasion. Why? Because the sorts of problems that Ruby solves, it usually doesn't

18:26

really matter what's going on under the hood. Right? By the time it does, you have to invent stuff,

18:34

like MemCash. Right? Because Ruby really wasn't designed to do the things that people try and

18:40

beat it to do. Yeah? Ruby has a great prototype in language. It's a great sketching language,

18:45

like Python. They're really good sketching languages. They're really expressive. But again,

18:50

they don't have an opinion about things like so in Java, I could have a regular array list,

18:55

which is a list back by an array. I could have a linked list, which is typically going to be slower

18:59

to do a bunch of things faster to do a bunch of other things, much easier to, for instance, resize.

19:06

In certain things in the middle of, muck around with. Whereas on a ray list, I've got all of the

19:11

behavioral characteristics of an array. With sets, I could have a regular hash set. So I've got a

19:15

bunch of buckets. I could have a linked hash set. I could have a concurrent hash set, which means

19:22

it's got certain safeguards, which means it's safe under concurrent modification, which probably

19:27

slows it down a bit, but means that it's safe in certain circumstances. As a Java program, I need to

19:32

think about those concerns, typically, and I need to choose the tool, the most appropriate tool for

19:36

the job. Or, if I'm most Java programmers, I go, oh, hash set. New hash set. Set, set, equals new hash set.

19:47

If you think about what's going on under the hood, what Martin's talking about earlier on,

19:52

these algorithms and data structures, the fact the language has them, you should know what's

19:56

going on in there. I had a conversation with Josh Block once many years ago. He was one of the

20:03

core early contributors to Java, so he wrote the Java 2 collections API. He did a whole bunch of

20:09

stuff early on. And he said in Java 1.0, if I think it was pre 1.0, the implementation of hash code

20:16

in Java-lang string was made a hash of the first seven characters in the string. Now the only

20:22

of a hash code is that it comes up with a number and they use that number to put it in a particular

20:25

bucket. And then what they realize is that most of the strings people were using in Java started with

20:31

H, T, T, P, colon slash, slash. And so your perfectly balanced hash set, your hash base list of

20:42

whatever, everything was ending up in the same bucket, right? Or, could. Now luckily they didn't publish

20:49

that implementation. What they published is it has a hash code and it has an equals. And this is

20:54

the relationship between hash code and equals. So they could slide in a whole, another implementation

20:58

of hash code for Java 1.1 and no one noticed. Yeah. And so be careful about the behavior

21:06

characteristics of what you're doing. So you need to learn the libraries. You need to know

21:09

what's there. My brief phrase into closure have been, which is a kind of list that runs on the

21:14

JVM, have been every time I do something in closure. I end up writing a bunch of code and I look

21:19

at the core libraries and some code goes away. And I look at the core libraries and more code goes away.

21:23

So I do this and then my code goes, did, did, did, did, did, did, did, did, and it's mostly being

21:27

in the core libraries. Because the people who design closure are much, much smarter than me.

21:32

Okay. And so really a good way to become proficient in closure is to really understand what those

21:36

core libraries can do for you. Because there's a huge amount of power to wait in that.

21:40

What else? It's not just about knowing your own stuff. It's about being aware of what else

21:44

is going on out there. So JVM folks, who's been looking at Kotlin? He's been saying,

21:50

that Kotlin and obviously Scarler and Closure and some of his other JVM languages. There's a huge

21:55

amount of stuff going on on the JVM. It's a very exciting place to be. If you're in the

22:00

dot net world, you're suddenly seeing like, you know, dot net core on Linux. SQL Server just came

22:05

out on Linux. Since it's as I never thought I'd hear myself say in my lifetime. So understanding

22:14

what's going on in your ecosystem, understanding what's going on elsewhere as well. So this is

22:18

all the part of what you need to do as your day job. And it's not just about programming. It's

22:25

not just about writing code, that intellectual masturbation we're talking about this morning. It's

22:30

not just about, you know, I'm going to write beautiful code. It's I need to get this stuff live,

22:36

right? So I need to know what the tool chain looks like for my language or for my technology stack.

22:42

If I don't understand the tool chain, it limits me. It limits me in my abilities.

22:46

And again, I don't exist in isolation. Okay. So a big part of you being a developer now in the

22:56

modern age, in the post Agile or in the Agile, I guess, whatever age, is there is a huge amount of

23:02

stuff out there. And engaging with the community doesn't mean copying some stuff I found on

23:07

Stack Overflow, right? And upvoting it when it works. Right? That's not engaging with the community,

23:15

you know, meetups, any kind of gathering where you can go and learn share knowledge, come into

23:21

conferences. Everyone here is at a conference. Epic, well done, fab. Right? So share your knowledge,

23:27

talk to people you haven't met before, right? I know you're saying this to Danes and that's like,

23:32

we don't even talk to that family. So what are you talking about? So, you know, try it, try it.

23:37

It's going like, you know, walk up to somebody you've never met before and say, hi, where do you work?

23:41

What do you do? What are you here for? What are you excited about learning? Okay? So that's what

23:46

you do as a developer. But again, you're not just you on your own. You're a developer in a team.

23:53

So what does that mean? That means you need to understand how work gets done. You need to

23:58

understand what is the system of work looked like in your team. Right? And how could you improve

24:04

that system of work? Understanding that we're not generic, fungible, exchangeable things.

24:15

Each of us has a skills profile. Each of us has capabilities. But also, each of us has interest.

24:20

Each of us has aspirations. Each of us has stuff that they get really excited about.

24:25

And also stuff that really, really bothers us. And if you get me doing something I'm excited about,

24:30

guess what, you'll get great work out of me. And if you get me doing something that sucks

24:34

for me, then I'm probably not going to be at my best. However hard I try. So understand in the roles

24:41

in a team. I think of this as two stages. The first stage is understanding what the different roles

24:47

are, what people think the expectations are. And the second part, which I'm much prefer is messing

24:52

around with them a bit. Right? And this idea of T-shaped people or M-shaped people or Pi-shaped people.

24:58

Or whatever. The idea that you can not just, you're not just known for the thing you do.

25:05

You know, if I take Martin Thompson is a Java performance specialist. That's a pretty, most people

25:12

say it's a pretty accurate description of Martin. He's not. He's a really bloody pro-grammer who

25:18

happens to be working in Java, and happens to get really excited about what happens close to the

25:23

metal. Right? That's him now. I don't think for the last jump on to time. There will be other

25:28

languages that won't make him redundant or historic. What it means is he'll go, oh, let me

25:34

try and take all of this stuff I know and apply it to a completely new context. What if this were

25:38

operating the safety critical machinery? How would that affect things? What if this were in a small

25:47

mobile device? What if this were in a pacemaker? I don't know. So understanding the roles in the

25:52

team and mucking around with those roles a bit. I'm sorry kids. You have to learn to share your

25:57

toys. Collaborating is really important. There's a bank, a well-known investment bank. I know

26:14

and they're American, but I know I'm in UK. And when you first join there, as a graduate,

26:20

they're kind of a graduate, accelerated whatever development program. They do two things. They

26:26

throw you together with a whole bunch of other graduates from all over the world and they tell

26:30

you there are there's two things that matter to make you successful at this bank. And they call it

26:35

impacts and influence. Impact is what you can do. Influence is what you can cause others to do around

26:44

you. So early in your career, most of what you'll do is impact. It's you being good at what you

26:50

do and getting better at what you do and growing in that way. Later on in your career, it's about

26:54

influence. So even if you're the best programmer in the world, there's only one of you. If you as a good

27:02

programmer can infect other people, infuse other people with those habits, with those capabilities,

27:09

you just became a 10x 20x 50x programmer. Yeah, that's how you scale. Can Beck famously said,

27:16

I'm not a great programmer. He said I'm a good programmer with great habits. What makes him a fantastic

27:22

programmer is he goes into organizations and teaches those great habits to other people. He is a

27:27

500x multiplier. So collaborating with others, being aware that you solve problems better when

27:35

there's more than one of you. Per programming isn't two people at a computer, at a sitting

27:41

in a computer, programming. It's two people programming. It's not one of you navigating and driving

27:48

and all these crappy metaphors. It's two human beings collaborating to solve a problem. They

27:53

happen to have a computer with them. But all of the magic happens by the fact that these two people

27:58

are collaborating and disagreeing. And I maybe I'm pairing with I know on something and she's

28:06

solved this a hundred times before and she says, I know the answer, this is the answer.

28:11

And I've solved this a hundred times before and I know this is the answer. So we start working and

28:15

this sort of happens. Let me go that way a bit and let me go that way a bit and then we end up

28:18

sort of here and we both go, whoa, that's so cool. Right? Because we would never have thought of

28:25

that either one of us on our own. Yeah. And all of the software in my career that I've been

28:30

really proud of, most of the software I've ever written that was any good, I didn't write.

28:35

I was one of a pair that wrote it but I cannot put my hand on my heart and say I wrote it because

28:39

I didn't. Okay. And not just people you like. Collaborating is about really reaching out,

28:52

really getting to grips with all of the people in the team. So you may be very much a technical

29:00

program. You'd like to be down in the weeds and the technology and all of that. And maybe the

29:05

idea of, you know, I happen to be building a trading system, I happen to be doing health care,

29:09

I happen to be doing finance. It doesn't really matter the domain because I'm really down here.

29:14

You still need to collaborate with people towards the business side, towards the commercial

29:18

side of the product you're building. That makes you a better programmer, that makes you a better

29:22

developer. So collaborating with all the others. And again, it's not just about you. So there's

29:29

six of you in the team. If each of you is looking out for yourself, each of you has one person

29:32

looking out for them. If each of you is looking after everyone else in the team, you now all have

29:37

five people looking out for you. It's just basic maths. Okay. So you attend to the team's health.

29:44

You sometimes you pause and there are other people, you know, go ahead of you. There was one team

29:49

I was working a bunch of years ago in a bank, most of my story is a bank, sorry. And there was a

29:55

particular manager who wanted to understand each individual team members contribution in terms of

30:01

story points. Okay. So we're going to measure everyone's story points and we're going to

30:05

call the weakest people in the team. And so there's a chat. I don't know if any of you guys have

30:09

come across him. His name is Tim McKinnon, fan nominal developer and wonderful wonderful coach

30:15

and all around lovely human being. So he's in the team and he's coaching in his team. And his

30:20

velocity was zero. Tim's velocity, Tim's personal velocity was zero points. And so the project

30:28

manager said, well, it's obvious, isn't it? That's the person we call and I said, no, no, no,

30:31

you don't get to do that. The reason Tim's velocity is zero is Tim never signs up for stories.

30:38

Because Tim knows he had much more effective pairing with everybody in the team. He has the minister

30:44

without portfolio within that team. Right. And so what he does is he accelerates the whole team.

30:49

He is that 10x developer by not committing to anything himself. He enables the whole team to go

30:56

fast. I said, if you take that guy out of the team, everyone on the team will slow down.

31:00

You will cripple that team. And it took a bit of fighting, but we got to hang on to it. Yeah.

31:05

So attending to team's health is a really, really important thing. There's a bit of a tail wagging

31:11

the dog thing that happens in, even in some quite forward-looking organizations where they get a

31:14

bunch of agile coaches, right? And the agile coaches coming into agile coaching. And what that

31:19

does, and particularly I see this in Scrummelock, because you have a Scrummaster and a Scrummaster

31:24

job is to remove obstacles. No, the team's job is to remove obstacles, because that's how you get

31:28

worked done. Right. But as soon as I have a person, I can absolve responsibility onto them.

31:33

It's probably the product owner. I've got a product owner, so I can absolve responsibility of

31:37

product thinking. I don't need to think that anymore. So originally these were coaching roles,

31:41

but we've lost sight of that, and now they become the systems kind of gone back in the other

31:46

direction, which is sad. So the team attends to the team's health. The team removes the team's

31:51

obstacles. Okay. See you in a team. You're building a product. What does that mean?

31:59

That means we need to start thinking about product. There's a parallel track going on about

32:04

kind of lean UX and product development, and all that kind of stuff. I hope you guys are taking

32:08

the opportunity to bounce between the two, because there's some gold in both tracks. It's really,

32:12

really, really fun. It's a really well set-up day today. Or it's a really badly set-up day,

32:17

because you want to be everywhere. Right. But I'm building a product. So that means I need to

32:21

understand why I'm here. I can't get excited about something unless I know why I'm here.

32:28

You know, we hear all the time about how do I motivate my team? Give them something meaning

32:32

full to do and they'll do the rest. Yeah. If they don't have a sense of meaning, if you don't

32:37

have a sense of purpose in your work, someone needs to pay you a lot of money to turn up.

32:43

If you do have a sense of purpose, I was talking to someone who you're on about games

32:46

that are the game industry. And an awful lot of particularly independent games development is just

32:52

done out of passion. I've got this game in my head and I have to get it out of my head. If I don't

32:55

get it out of my head, I'm going to explode. Right. How much you want to get paid? I don't care. Get

32:59

out of my way. Right. I need to build my game. Yeah. So you need to understand the business objective.

33:04

What's the point of what I'm doing? Because if I understand the point of what I'm doing,

33:08

I can start making trade-offs. I can start moving towards that goal. You study the domain.

33:14

If you're building health care software, find out how health care works. If you're building

33:19

banking software, find out how banking works and work with an enormous German bank at the

33:24

moment. And we're going through an exercise and it's wonderfully life affirming where people who

33:31

think their job is to move data from point A to point B. You suddenly, so actually your job isn't

33:38

to move data from point A to point B. Your job is to enable the flow of information so this guy can

33:44

pay his mortgage or so this lady can have money arriving her bank so that her family can eat. Right

33:52

and do stuff. Your job is to create the mechanisms by which money flows through Germany.

34:00

That's what you're building. You're building an entire system of finance for a country. And you

34:06

look at it and they are. And they suddenly go, whoa, A. They start taking it a bit more seriously,

34:12

which is always nice to see in a bank. I have things quite healthy. But you just see the motivation.

34:18

They energize. They're like, you know, I'm not turning this set of requirements into the

34:23

there. And they start to become much more empowered. And I'm a bit into who minds about this word

34:29

empowered. Because in power times that's something you do to someone. I'm going to empower you.

34:33

Right? It's as an asymmetry. No, you can empower yourself. You can decide you're going to go and

34:38

do stuff. You can decide you're going to think differently about things. That's how one can empower.

34:44

So we study the domain and by studying the domain, that means we can understand

34:48

we can solve problems in that domain. You can't study a domain unless you know about the

34:54

people, unless you interact with the people who care about that domain. So if I am, again,

35:00

building a finance system, I've got traders. I've probably got brokers. I might have some

35:05

compliance people and legal people, right? Some security people. How else might I have?

35:11

Well, I've got the tech operations people in the support team. Right? Those poor buggers who are

35:15

going to have to run my software. Yeah. We don't usually think of those. So we need to get to know

35:21

all the stakeholders. Mark McNeil, who's on my favorite UX people. He has this lovely phrase for

35:28

stakeholders. He's a stakeholders. A people whose lives you touch.

35:33

Right? Anyone whose lives you touch by doing work, they are stakeholders. So anyone who's

35:40

involved in the work you're doing. So those security people, the scary legal people, their lives are

35:47

touched by the work where you're doing work. Chaapaino was working in another bank and they were

35:52

building a new system and he said, I'm going to build security in. I'm going to build security in.

35:59

Rather than what we usually do, which is the security at the end where we have the rip holes in it,

36:02

and my send us away for three months, I'm going to build security and tell you go, so the security

36:07

office only says, hey, security officer, can you tell me what I need to do to build a secure application?

36:14

And the security officer said, sure, show me what you've got. And you haven't got anything.

36:18

I'm going to start it. Is it, no, you need to show me what you've got and I tell you what's wrong with

36:23

it. That's how security works. And you guys, no, I want to do it the other, I want you to tell me

36:28

because I'm good at software, but I'm rubbish at security. Will you explain to me how security works?

36:32

And he's like, he says, no one's ever asked me that before. So he said, well, okay, let's figure it

36:41

out together. What's the first thing I should know? And they started talking about like a tax

36:45

surface areas and threat analysis and threat modeling and risk and trade-offs. And all this

36:51

kind of, and so between them, they built up a collaboratively, a body of kind of your idiot

36:57

list for security 101 for securing an application. And so that was a side effect artifact of this

37:03

product. And so the next time they came along with that application, someone said, oh, what about?

37:07

And also, what it meant is that when they got to the security at the end, the review was a bit like

37:12

this. You know what that stuff we talked about? Yeah. Did you do it? Yeah. On your way.

37:22

Because they'd already been engaged. And so these people who are often gatekeepers,

37:26

policemen down the line, they become upstream, you know, it's a shifting left thing. They become

37:31

upstream collaborators. You know, they become consultants into your process. So getting to know the

37:36

stakeholders is a, there's a reinforcing virtue of cycle there. So you're learning about them,

37:41

they're learning about you, you're figuring out how you can solve problems together. It's

37:44

pretty exciting. And of course, you contribute to the product. I'm working for a retailer in the UK,

37:51

one of my clients. And everybody literally, everybody who works there, shops there.

37:59

Okay, partly because they get a really big employee discount. Yeah. But everyone who's writing code,

38:04

everyone who's testing systems, all the product team, the back office, all of the commercial

38:10

guys, every single person there, shops in their store. So when they say, well, what would our

38:15

customers want? Well, I can tell you because I am one. Yeah. And I'll go into their shop because I

38:21

like their shop as well. And I try using their mobile app. And it's not great. It's not great.

38:27

They're amazing brand of amazing products. Pretty good website. No, well, products kind of okay.

38:34

You know, but they know this because they use it. And so what's happened is the mobile product

38:38

in the last probably year has gone from OK to actually really pretty good. You know, and

38:43

because they didn't have meeting after meeting of business requirements, documents, and flow charts,

38:48

and blah, they said, what do we want to be better? Let's go make it better. What's the next

38:52

thing we want to be better? Let's get in front of some customers and let's see what they think.

38:56

So you can contribute back to the product. And we've, I'm asking you, this is a plea,

39:01

this is a call to action. Everyone here who's in a development role is to shake off that mental

39:06

shackle of we have requirements come at us. We are told what to do. In psychological terms,

39:14

it's called being at effect. You can either be at cause or be at effect. If you're at effect,

39:18

that means things happen to you. If you're at cause, that means you make things happen.

39:22

So we tend to be at effect when it comes to requirements, when it comes to what we do in a product.

39:27

Everyone here has a brain. Everyone here has empathy. I mean, apart from the sociopaths,

39:32

you guys are fine. Apart from the sociopaths, everyone here has empathy to different degrees.

39:38

And so you can contribute to the product. I've seen probably some of the highest performing

39:43

teams I've seen were in trading firm I was working out a few years ago, and you had developers

39:48

and traders sitting in amongst each other. And it was just as likely a really cool idea for

39:54

improving the trading stack would come from a developer as it would from the traders. And over time,

39:59

if at the traders, they knew their way around Excel anyway, but they started learning Python,

40:04

because it's a really easy language to learn and it meant they could just sketch for things. And once

40:07

I was sketching things, I could say, hey, I've had this idea. I know it's really crappy code,

40:10

because I'm a trader. But what do you think of this? And then one of the developers would go,

40:14

that's a really cool idea. I'm going to iterate on that and then turn it into a product and it

40:19

may learn a money. Right? So you get technical algorithmic ideas coming from traders. You get

40:23

business ideas coming from developers because they both care about learning the domain,

40:27

care learning the product, and they contribute to the product. So putting a product.

40:33

We're putting a product in a platform. In defense of web logic six,

40:40

which took a bit of a kicking this morning. So I was also, I too was using web logic six in

40:45

probably 2005-ish. But interestingly you see, and this really is the kind of figure to gain into

40:53

one more thing to talk about earlier, is yes, we understand principles and things like data structures

41:00

and whatever else. At the time we were wrestling with web logic six, there was web logic,

41:06

there was web sphere, there was Oracle had a product that no one even knew what it was,

41:12

and there were a bunch of these things, and all of them were equally massive, unwieldy,

41:17

complicated, heavyweight, and all very clicky configurations. So you had to click on a really

41:22

slow ugly UI that would crash a lot and do bad things. And what we noticed was

41:30

behind the scenes, web logic was a Java app, and we pretty much knew our way around Java apps,

41:36

and everything it did was XML. So what you could do is, and this is what we did,

41:42

whereas you could install web logic, and then just snapshot the directory, snapshot everything that

41:47

just changed on your file system, and you got a whole bunch of XML files, and then you go into

41:51

the config pages and start changing some values, and then see what's changed to like a recursive

41:57

diff, the whole thing under version control. And that started to tell us where in these XML files,

42:03

those values were being stored. It wasn't a great leap to then take those values and tokenize them,

42:08

and then have an automated build process that would drop the values in for us, and so we had this

42:13

idea of a template server. And so you could take a server, you could template it up, you could drop

42:18

the values in, and now you had build time configuration completely automated, and a whole bunch of

42:24

other patterns and techniques came out of that period, and a bunch of them were then collated

42:31

into a book written by Jez Humble and Dave Farley, because Jez was on the team with me, I heard Jez,

42:37

we were doing the build engineering side of web logic, and Dave Farley was heading up a bunch of

42:43

development teams that were chucking stuff into it, and I guess, again, in terms of necessity

42:48

being the mother of invention, all of these things turned into what we now call continuous delivery.

42:54

So we can thank Quad Logic for that, because if it had been easy to use, that might never have

42:59

happened. But even when you're using these tools, you can be at effect, all this tool is horrible,

43:08

it's, I hate it, okay, biz talk, I have no love for biz talk, right? There's nothing good

43:13

came out of biz talk, but you know, a lot of other tools and technologies, you're in there

43:17

and you're thinking, how can I make this easier for the next person to use, okay? So I need to

43:23

understand the technical landscape within my organization, right? And you to understand what the

43:28

APIs are, what other technical platforms there are. I need to understand my path to production,

43:33

we talked about this already. So it's not just enough to write code, I need to be able to deploy code.

43:39

I then need to think about runtime concerns, monitoring, telemetry, instrumentation,

43:46

alerting, even prediction, you know, once you get to a learning sufficient,

43:51

sophisticated, you can put a machine learning on there, and guess what you can start to

43:54

predict when bad things are going to happen, Netflix does this with their Amazon stack.

43:59

So I need to care about runtime concerns as a developer. This is something I do in teams,

44:04

as I put all of the developers, I rotate through the build role. For a period of time,

44:08

I find it makes them a safer driver, okay? I'm a huge fan of development teams carrying a

44:14

page, right? Because if someone's going to get page three in the morning, it might as well be you.

44:19

Oh, oh, now you're going to think twice about whether that's a warning message or an error message,

44:24

because a warning message you won't get page three in the morning.

44:28

No, okay? And usually it's someone else that gets page three, so we tend to care about that.

44:33

We value automation, okay? We care about automation, but not all the automation.

44:39

We can get obsessive with automation. Automation has a trade-off, it has opportunity cost,

44:44

automate things, automate repetitive tasks. My here is sick is automated when it gets boring.

44:50

Okay? Boring means you've done it enough times that you know how it works, and it's been similar

45:00

enough times that it's boring now. If it changes every time, don't automate it yet. Once it becomes

45:05

boring, that's a good time to automate it. And again, you contribute back to the platform. As

45:11

you're learning things, you're feeding that back to the other teams, the other custodians,

45:15

of the other platforms. And you end up with Dave Thomas calls these organizational APIs.

45:20

You end up being able to communicate between departments or between groups through their APIs,

45:26

because you've got a robust enough business process modeled through those APIs.

45:32

In a department, so what does this mean? This is that. Remember, I'm talking about impact versus

45:36

influence, this is the influence part. So you understand the wider context, okay? And you can make

45:41

trade-offs. I'm in a position now where even though locally for my team or my program,

45:47

this would be, this would get me forward. The right thing for the organization is to do something

45:52

a little bit more sensible. Organizations like Spotify have this, you know, this wonderful matrix

45:57

model of tribes and guilds and whatever. That mostly exists to try and get some consistency.

46:03

Okay? To try and create those communication channels, communities of practice, so that people

46:08

can find out what's going on. It's a very, very clever idea. It breaks under really,

46:13

really big scale, but there's other stuff you can do. Right? And then now you're showing

46:19

your knowledge across teams. So you're maybe having meetups internally, internal open source,

46:24

internal conferences. One of the things I love about the work I do, I'm an independent consultant,

46:28

I often get invited into companies, doing internal conferences, like really big companies,

46:33

often do internal conferences. And they've run like this, they're run very professionally,

46:37

but it's just for their internal employees. And it's great because that's a clear message that

46:43

we're investing in people. We're taking everyone out of their day jobs and moving them all

46:46

time, no, Berlin or Paris or somewhere cool for a couple of days and we're going to decount.

46:52

Right? All of those people are now not at work. Right? That's a really cool thing.

46:58

So sharing your knowledge across the teams. All your knowledge. So when I first started out

47:03

as a contractor, which would have been probably late 90s, I very quickly realised that there are

47:09

two ways to be a successful contractor, to be a successful independent. One is to hoard all the knowledge,

47:16

but if you hoard all the knowledge, you're unsackable. Okay? The other is to share all the knowledge.

47:23

Because if you share all the knowledge, people want you to be around. They like having you there.

47:28

And I also learned, and this was during my Thought Workstays, there was a really interesting

47:32

thing that happened, was this, you were going there and you had to solve a problem and you'd

47:36

make yourself redundant. And what happens when you make yourself redundant? Usually isn't,

47:42

go away. It's usually, that was pretty cool. Can you come and solve this other

47:47

nirally problem we've got over here? So you don't really make yourself redundant. You just

47:51

make yourself available again. And then you go off and do something else. So I realised fairly

47:57

early on, I was going to have to choose one or the other, and I went with all the knowledge.

48:02

So this is why I do this stuff. I love sharing knowledge. I'm a huge fan of sharing knowledge.

48:06

I encourage it in others. You contribute to the department. Okay? So this is now about care and

48:11

feeding of the organisation. You know, I've seen really, really high performing developers move

48:20

into people roles. So they've burned out as a developer. No, they realise that they could have a

48:25

much bigger multiplying effect by helping loads of other developers. A lot of programmers

48:32

I know who speak events and things. They could be a lot more productive if they weren't

48:36

speaking events. If they were sitting there typing stuff. But do you know what they are trying

48:41

to contribute to the wider, the wider group? So, and now this is about the influencing. So you're

48:49

influenced at across the organisation. So this is like building your communities of practice.

48:54

This is doing your learning lunches or that kind of stuff. Okay? And then finally, in an organisation

49:00

then, so an organisation wherever you work has values. That may be one of the reasons you joined

49:08

that company. Do you project those companies values? And as a nice little kind of rule of thumb,

49:17

in terms of are you proud of where you work? Would you proudly wear a t-shirt with your company's

49:22

logo on it? Okay? I know lots of people who would. I know several people who probably wouldn't.

49:29

Yeah? Or who would be completely indifferent because they're just sort of, you know, they work

49:33

somewhere. It's neither great nor whatever. But that organisation has values. Right? And so,

49:41

and so your values are either aligned with them or not. And if they're aligned with them,

49:44

you should be projecting those values. You should be walking down the street and someone says,

49:48

oh, that's a so-and-so person. They must work at that organisation because of the way they

49:52

conduct themselves. And so you care about the organisation's reputation. It matters to you. You take it

49:58

personally. Right? And so that means that you get out there, you get out into the world.

50:04

There's a lovely phrase, a destination employer making your company a destination employer.

50:09

It's kind of exciting. So that is somewhere that other people would want to come and work.

50:14

I have an idea that I'd like to do is a couple of my banking clients. I'm calling it the reverse

50:20

cockcroft maneuver. Okay? So Adrian Cockcroft was a conference not unlike this and he was

50:27

talking about Netflix and some of the cool stuff they do because he loves talking about Netflix and the

50:31

cool stuff they do. And someone on the front row they put their hand up and he's doing a Q&A

50:36

and they said, oh, but Mr. Cockcroft, you've got all these incredible engineers. You know,

50:40

I'm just a bank and he looks across the front row and he's looking at the company names on the

50:45

people's kind of land yet. And he said, I got them all from you. Right? And he said, I got them all

50:53

from you and then I got out of their way. Yeah? And because that's what he did. You know, these

51:00

people were really high performing engineers. They were really frustrated. Their organisation

51:03

didn't get quality, didn't get why you'd want to care about this stuff. And so they all went

51:08

off to somewhere cool like Google on Netflix or whatever. So I'm proposing the reverse cockcroft

51:12

maneuver, which is I want to make some banks. Some of the places I'm working so cool that we're

51:17

going to start hiring like Netflix and Google engineers because they're going to want to come

51:21

and have more fun. Right? Because they can do more meaningful stuff. Because again, this isn't

51:27

moving a bunch of money around. This is creating the infrastructure whereby you can pay your mortgage

51:33

or you can get your money moved around or you can send money to your family and

51:41

India or back to your family and wherever else. Because we've created the financial structures

51:47

that can do that. And well, I want to say too much because it's all ongoing at the moment,

51:52

but I'm hoping in about a year or so time when it has some really exciting stories for you.

51:56

So, but not all the knowledge. Because you have to be careful about IP and stuff. Yeah. So when

52:02

you are speaking externally about your organization, be aware that you're speaking about your

52:07

organization. So, and again, you contribute to the organization in those ways. So, so you're all

52:16

those things. Okay? You're a developer in a team building a product on a platform in a department

52:22

in an organization. You're beyond developer. I love this quote is saying, if you want to go fast

52:31

go alone. If you want to go far, go together. If you want to go far quickly, pack light.

52:38

That's what I think. But yeah, if you want to go far, go alone. If you want to go far, go together.

00:00

Einführung für Entwickler

01:20

Historischer Kontext der Entwicklung

05:12

Die Rolle der frühen Programmierer

08:10

Das Aufkommen von Computerwerkzeugen

15:58

Über den Entwickler hinaus denken

22:14

Die Bedeutung des Bewusstseins für Ökosysteme

24:05

Zusammenarbeit in Entwicklungsteams

31:59

Verstehen der Produktentwicklung

32:42

Der Zweck hinter der Entwicklung

34:42

Verständnis von Fachwissen

36:57

Ermächtigung zur Zusammenarbeit

39:44

Beiträge zum Produkt

49:29

Organisatorische Werte und Reputation

50:14

Die umgekehrte Cockcroft-Manöver

51:08

Ziel-Arbeitgeber schaffen

52:16

Die breitere Entwicklerrolle

02:54

Wie hat Ada Lovelace 1844 zur frühen Computertechnik beigetragen?

05:10

Wie hat der Zweite Weltkrieg die Entwicklung von Computern beeinflusst?

11:39

Welche entscheidenden Veränderungen hat das Agile Manifest für die Softwareentwicklung gebracht?

16:02

Was bedeutet es, in einem Team als Entwickler zu arbeiten?

17:44

Wie beeinflussen verschiedene Programmiersprachen die Herangehensweise an Probleme?

26:35

Warum ist es wichtig, sowohl den Einfluss als auch die Wirkung in einem Team zu verstehen?

33:04

Wie können Entwickler ihre Rolle über das reine Programmieren hinaus neu definieren?

35:20

Welche wichtigen Erkenntnisse bekommst du, wenn du mit den Stakeholdern in Softwareprojekten redest?

40:33

Wie hilft es, zurückzugeben, um sowohl das Produkt als auch die Stimmung im Team zu verbessern?

49:44

Wie können Organisationen die Werte von Entwicklern mit ihrer Mission in Einklang bringen?

50:14

Was ist der Reverse Cockcroft Maneuver und wie wirkt sich das auf die Einstellung aus?

51:08

Wie werden Unternehmen zu den angesagtesten Arbeitgebern für die besten Talente?


Microsoft ExcelZusammenarbeitDokumentationFachwissenSoftware-EntwicklungAgile Software-EntwicklungAlgorithmusComputerwissenschaftenLösung von ProblemenEntwicklung neuer ProduktePython (Programmiersprache)

Beschreibung

Der Inhalt taucht ein in die Geschichte der Softwareentwicklung, beginnend mit den frühen Tagen von Charles Babbages Rechenmaschine im 19. Jahrhundert. Es wird die Bedeutung dieser Erfindung als einen der ersten Computeralgorithmen der Welt hervorgehoben. Die Diskussion bewegt sich dann zu dem Einfluss von bedeutenden Denkern und Innovatoren auf die Entwicklung der Rolle von Entwicklern, darunter Alan Perlis und Melvin Conway. Der Sprecher macht eine Zeitreise und erkundet, wie sich die Arbeit von Entwicklern im Laufe der Jahre verändert hat, von einfachen Berechnungen zu komplexen Softwaresystemen. Der Inhalt streift auch die Wichtigkeit, den historischen Kontext im Zusammenhang mit der modernen Softwareentwicklung zu verstehen. Es wird angeregt, dass das Studium der Vergangenheit wertvolle Einblicke für zukünftige Verbesserungen in diesem Bereich bieten kann. Die Präsentation hat das Ziel, die Zuschauer über die Geschichte der Entwickler und deren Relevanz heute aufzuklären und zu informieren.