Tim Ottinger Profile Banner
Tim Ottinger Profile
Tim Ottinger

@tottinge

30,959
Followers
769
Following
3,280
Media
101,148
Statuses

@IndustrialLogic & @ModernAgile . Mentor, author, consultant, trainer, tech, blogger. Married and not rich. Software biz since 1979.

Edinburgh, Scotland
Joined November 2008
Don't wanna be here? Send us removal request.
Pinned Tweet
@tottinge
Tim Ottinger
3 years
@johncutlefish The more consistent one's experiences, the more one believes they understand "the real world." The more insular one's experiences, the more consistent. "Real world" is merely a descriptive term people use for the stories they tell themselves about their own experiences.
16
52
189
@tottinge
Tim Ottinger
4 years
I’m not sure the origin of this, but it’s good....
Tweet media one
33
1K
4K
@tottinge
Tim Ottinger
5 years
Tweet media one
21
535
2K
@tottinge
Tim Ottinger
5 years
Just for the record: * Agile doesn't require you to do sprints. * agile doesn't require you to have a Product Owner * agile doesn't require a scrum master * agile doesn't require a backlog * agile doesn't require estimates Scrum might, but scrum is to agile as beagle is to dog.
25
392
985
@tottinge
Tim Ottinger
5 years
For the next week or two, let’s do an experiment. Whenever someone says “story point” or “velocity,” quietly in your own head translate it to “made up numbers.” “I’ve noticed your made up numbers have dipped.” “We need to raise our made up numbers.” Mmmmhmmm.
29
356
968
@tottinge
Tim Ottinger
5 years
Stop being the best developer on your team. Just effing stop it. Today. If you’re “the best one”. Get out of your own way. You are stinking up the whole industry. Instead, start being the reason everyone on your team is so great, acts so wisely, understands so much.
18
294
868
@tottinge
Tim Ottinger
6 years
A: How long is a story point in real time? B: How many did you do in your last sprint? A: 23 B: Then, for you, it's a 23rd of a sprint A: But the time before that it was 19 B: Then for you at the time it was 1/19th of a sprint. A: But how long is it really? B: We answered that.
29
509
816
@tottinge
Tim Ottinger
2 years
Dear people who don't let people refactor or test their code...
Tweet media one
6
227
729
@tottinge
Tim Ottinger
5 years
A manager I know declared victory when he got the team to reduce the estimates from 3 months to 5 weeks. He was not as elated when it ran over, taking just over 3 months. Moral: Getting a team to "commit" to a smaller estimate doesn't change the amount of work that must be done
21
220
678
@tottinge
Tim Ottinger
6 years
The agile manifesto starts "We are uncovering better ways of developing software by doing it and helping others do it." From the first sentence, it is a community on a constant search. It's not a framework, method, or set of formalities. It's an ONGOING SEARCH via PRACTICE.
13
245
565
@tottinge
Tim Ottinger
3 years
There are a few pervasive fallacies that make software hard: 1. We need accurate, precise estimates 2. Low output is motivation-based 3. We need to get more work started 4. Throughput comes from isolated individual coders 5. We need to program faster
20
230
545
@tottinge
Tim Ottinger
5 years
Tests (especially microtests) have a journey: First they are prophets, Then they are guides, Then they are guards.
12
209
539
@tottinge
Tim Ottinger
7 years
Once upon a time people argued that TDD is impossible. You can't write a test first, obviously, because you can't test something that doesn't exist. It's obviously ludicrous. But you change how you think about "a test" and it works just fine.
18
298
533
@tottinge
Tim Ottinger
4 years
Not Wrong.
Tweet media one
10
122
486
@tottinge
Tim Ottinger
6 years
“I wouldn’t change the code just to make it easier to test” is a strange statement. “Just”? Testability is a first-order concern. It’s as important as making it run. There’s no “just” there.
22
212
470
@tottinge
Tim Ottinger
4 years
I don't like the whole Pull Request (PR) process. I think it's great for open-source projects, but not for corporations. <deep breath> There. I said it in public. It felt like a dirty secret until now.
83
80
465
@tottinge
Tim Ottinger
2 years
Again reminded how much easier using SQL is than using an ORM. I don't understand why ORMs are so popular.
84
57
465
@tottinge
Tim Ottinger
5 years
I didn’t think this was going to be controversial the first time I said it, and I was wrong. So, let’s try it again here: There is no need to have a morning “report your ticket numbers so we can update Jira” meeting. There are better uses of your morning time than this.
33
137
460
@tottinge
Tim Ottinger
2 years
I worked with a team for a few weeks. People built using TDD or very tight test-after. It was all trunk-based with continuous deployment. They formed up squads/swarms/groups as needed to get work done. They turned around improvements in a day usually. 1/
12
113
458
@tottinge
Tim Ottinger
3 years
The hardest discipline for a software organization is generally this (tremendously hard) thing: * Finish the thing you're doing before starting a new thing.
17
96
445
@tottinge
Tim Ottinger
4 years
In Jira, a story can have only one developer. In Jekyll, a blog post can have only one author. Is there some weird societal blindspot that people have no idea of teamwork, partnership, and cocreation?
45
94
434
@tottinge
Tim Ottinger
4 years
Pro tip: don’t mix reformatting, refactoring, and adding new code. Make them separate commits. You’ll be glad you did.
26
96
420
@tottinge
Tim Ottinger
7 years
"A code base isn't a thing we build, it's a place we live. We don't seek to finish it and move on, but to make it liveable" @sarahmei
6
309
409
@tottinge
Tim Ottinger
4 years
A: My teams don’t get all their work done every week. B: Then it’s too much work. A: I don’t think it’s too much work. B: If they don’t finish it, then it’s too much. A: I think they can do more. B: What difference does that make?
11
182
404
@tottinge
Tim Ottinger
2 years
I once worked with an org where a PM lamented about two things: 1) The team "misses their estimates" and "comes in late" 2) They are too conservative, and the PM would like to see more aggressive estimates. The absurdity of having both complaints simultaneously was lost on them.
25
61
388
@tottinge
Tim Ottinger
2 years
A friend posted this in a slack group, and I just GOTTA share it:
Tweet media one
10
91
378
@tottinge
Tim Ottinger
9 years
Code is not a collection of keystrokes. It is a collection of decisions, which are the distillate of experience and learning.
5
329
352
@tottinge
Tim Ottinger
2 years
That brand of “agile” that is rooted in story points, timeboxes, epics, and individual assignments? It is like someone went through Agile’s trash can. It is agile derived, as a junkyard is to a factory. It isn’t the thing, it is the leftover artifacts only.
15
59
328
@tottinge
Tim Ottinger
4 years
"Pair programming is two people doin the job of one; it is inefficient." Look, the only reason you think the work they're doing is a one person job is because you like to assign it to one person. You've had individuals doing 2-to-7-person-jobs for years.
13
100
326
@tottinge
Tim Ottinger
6 years
A: So how can we get the developers to work harder? B: Take away their tools. Add more bureaucracy. Use slow computers and dead programming languages. A: And that will bring up the velocity? B: No. You asked how to make their work harder.
2
131
318
@tottinge
Tim Ottinger
5 years
Perhaps the way many programmers like to think is too fragile to survive in a modern corporate context, where interruptions and interactions are common. Let alone in Agile work where interactions are primary features. How would you fix software thinking to be more robust?
Tweet media one
46
105
322
@tottinge
Tim Ottinger
1 year
It may be hard to believe, but most people simply don't know how to break work down for delivery. They only break it down for development, so it can be assigned to different people. This is the root of much dysfunction.
16
75
321
@tottinge
Tim Ottinger
2 years
Always write your code as if you like your coworkers and your company and want them to be productive and successful.
11
55
316
@tottinge
Tim Ottinger
2 years
Your software delivery system isn’t just programming. Often a 2-hour change takes weeks to make it to production. If you could make the programmer go 2x as fast with no mistakes (so unlikely!) it would save one hour, not one week. Where is the slowness, really?
11
52
311
@tottinge
Tim Ottinger
3 years
People confuse assignment of tasks with planning. The point of planning is to ensure we are progressing intelligently and transparently toward our goal, yes? As opposed to making sure everyone has plenty of work to do?
7
78
308
@tottinge
Tim Ottinger
5 years
It’s confusing to me to meet people who have entered the software world as agile coaches. It seems weird that someone is coaching but has never served on an agile team in any capacity and has never observed people doing the work before. Can you help me understand?
41
51
293
@tottinge
Tim Ottinger
6 years
As a person who's been in the Agile thing for a very long time, and who has taught/coached/transitioned many, and who is fairly well acknowledged as an expert, I want to confess: Half the time when someone says "agile" I've no effing idea what they think it means.
31
65
284
@tottinge
Tim Ottinger
4 years
People who don't understand incremental work think it means to serve raw chicken, then undercooked chicken, then the finished chicken. That's not how it works. You deliver a small amount of fully-cooked chicken right away, then adjust the recipe, deliver more fully-cooked.
10
123
285
@tottinge
Tim Ottinger
4 years
Agile reminder for Wednesday: Working Software is the Primary Measure of Progress (for software projects). Not estimates, not schedules, not % done in a ticket. None, Some, or All of it works. It's harsh, but it's right.
Tweet media one
22
97
277
@tottinge
Tim Ottinger
5 years
Speaker at a conference talked about how men in their mid-50s are not interested in new stuff; they’re just counting days until retirement. Dear speaker: I’m keen AF, and changing the world still.
36
31
271
@tottinge
Tim Ottinger
7 years
Why we don't start everything all at once:
Tweet media one
3
207
278
@tottinge
Tim Ottinger
3 years
When you say "we are doing agile, not waterfall" this is what your GenZ programmer see:
Tweet media one
12
51
273
@tottinge
Tim Ottinger
6 years
A prime reason people don't collaborate, refactor, or test is because they don't know how. A prime reason that they resist learning is because it requires them to admit not knowing. To be seen as non-expert is not affordable when your environment has more threat than safety.
9
149
268
@tottinge
Tim Ottinger
5 years
There is this idea... I don't know who started it... that if you write code "the right way to begin with" that you'll never "have to" change it. It's one of the most ridiculous ideas on software development, and the root of many dysfunctions.
24
98
268
@tottinge
Tim Ottinger
9 months
Most people in software say "complex" but really mean "unfamiliar." Being hard to understand doesn't mean it's "complex" -- it may be only complicated, or it may be unexpectedly simple. I try to say "unfamiliar" when I mean that.
30
59
268
@tottinge
Tim Ottinger
2 years
“How long does a 2-point story usually take?” “We peg story points to half-days so 2 points is one day.” “Yes, how long does a 2-point story usually take?” “One day.” “Historically, or ideally?” “One day.” “Most of the features you released are over 40 days old.” “But, um….”
20
62
270
@tottinge
Tim Ottinger
2 years
TDD Process Smells from 2009, still mostly right.
Tweet media one
16
80
264
@tottinge
Tim Ottinger
5 years
“How can we go agile?” “First, value individuals and interactions over processes and tools.” “GREAT! Let’s install the process and a set of tools to enforce that process.” “Wait... what about the individuals ...?” “You’re right. Any people who resist, fire them.” #notMyAgile
13
89
265
@tottinge
Tim Ottinger
5 years
People who think the value of TDD is the creation of unit tests are typically people who have never done TDD as a standard, daily work hygiene.
5
79
261
@tottinge
Tim Ottinger
6 years
Devops is "dev + ops" -- skill sets working together. It's not "the millennial name for server maintainers."
5
143
261
@tottinge
Tim Ottinger
6 years
5-Whys meeting: the idea is not "why did you do this wrong" but "what made this seem like the right thing to do at the time to a reasonable and intelligent person in the situation?" -- Hard on systems. Soft on people.
7
88
264
@tottinge
Tim Ottinger
3 years
‘If our estimates were better, we would have been done sooner” - Nobody Ever
9
94
266
@tottinge
Tim Ottinger
2 years
Deadlines looming! If you're 80% done with 100% of the features, you are screwed. You can't ship; maybe can't compile! If, however, you are 100% done with 80% of the features, you have a qualified success on your hands. You can ship it!
7
70
263
@tottinge
Tim Ottinger
2 years
Every single agile failure I've seen has been of the same kind: don't establish atomic, autonomous, self-organizing teams; do solo assignments in a two-week treadmill, and push for more ticket-closing constantly. It's miserable and fails.
18
59
257
@tottinge
Tim Ottinger
2 years
I queued up a tweet on this, but the image is too darned fine to not post it here now:
Tweet media one
6
82
250
@tottinge
Tim Ottinger
5 years
You know what I don’t like about my job? When people expect/demand advocacy — that I should *convince* people to do things my way. I’m not here to convince you against your will. If you’re curious, I’ll show you. I’ll say why I do it. You decide.
10
60
257
@tottinge
Tim Ottinger
1 year
Reminder: if you look at code you wrote 5 years ago and think it's really very good, then you've wasted 5 years.
38
42
254
@tottinge
Tim Ottinger
4 years
I'm often amazed that people would rather spend 20 minutes in a debugger than 3 minutes writing a test, and will refer to the preference as "more efficient."
35
99
247
@tottinge
Tim Ottinger
5 years
Is it odd that EVERY principle and value of the Agile Manifesto and EVERY practice in XP is still controversial and shocking to the majority of companies and programmers? Maybe the agile that has spread is a gentrified version that doesn’t have radical agile ideas in it.
26
90
250
@tottinge
Tim Ottinger
6 years
I was happy when @scottseivwright posted this in LI, so now you can see it here.
Tweet media one
6
87
247
@tottinge
Tim Ottinger
2 years
Oh for Pete's sake, people. We didn't stop doing Big Design Up Front (BDUF) because it is waterfall. We stopped doing it because it doesn't work well most of the time.
13
42
247
@tottinge
Tim Ottinger
5 years
“I'm adding a new feature, and I see that the existing code is not structured in such a way that makes adding the feature easy. So first I refactor the code”
2
99
244
@tottinge
Tim Ottinger
2 years
"I wrote this code in one day!" "But you debugged it for 3, and it's come back from QA a couple of times, and it didn't pass code review." "Sure, but I got it done in one day!" "But it.." "I got it done fast!" Sometimes 'done' is a word rather casually used.
17
46
244
@tottinge
Tim Ottinger
1 year
We're safe.
Tweet media one
6
35
243
@tottinge
Tim Ottinger
4 years
A: So how can we get the developers to work harder? B: Take away their tools. Add more bureaucracy. Use slow computers and dead programming languages.
8
59
238
@tottinge
Tim Ottinger
3 years
This is the least effective and rational personal software process I know: 1) Write all the code 2) Make it run 3) Hand-test it some, until you're confident 4) Write some automated tests 5) Have other people find bugs Some people don't know any better. HELP THEM.
14
67
236
@tottinge
Tim Ottinger
3 years
@penelopew_ @GBGames @ldrinkh20 Are you really going to float that ungrounded theory here? I wouldn't bank on getting many followers that way. ;-) ps: well played.
4
0
221
@tottinge
Tim Ottinger
2 years
“We keep pushing the developers but it never helps!” If, in your value stream map, actual coding is only 5% of the time, then you can only expect 1% or (rather unlikely) 2% improvement by speeding up the programmers. See where the time really goes. It’s likely queues.
8
59
231
@tottinge
Tim Ottinger
3 years
We have two big problems with our developers 1. They keep making their estimates too long: they aren't ambitious enough and we have to talk them into shorter number. 2. They never come in within the estimated time.
11
51
228
@tottinge
Tim Ottinger
6 years
"I need to know that everyone is busy" "Why?" "Because they're paid to be busy." "Okay. EVERYBODY! FOLD AND DECORATE 10000 PAPER AIRPLANES!" "No! Wait? Why would you do that?" "It will keep everybody busy all day." "But..."
8
98
224
@tottinge
Tim Ottinger
5 years
@blonde_mich I didn't realize dog food was so much improved that it is nearly human food.
12
2
219
@tottinge
Tim Ottinger
3 years
"We have trouble estimating" ;-)
Tweet media one
0
58
227
@tottinge
Tim Ottinger
2 years
YIKES:
Tweet media one
12
49
221
@tottinge
Tim Ottinger
3 years
“"Technical Debt" is NOT the result of poor programming – it is the cost of not refactoring as you learn more about a solution.”
6
71
218
@tottinge
Tim Ottinger
2 years
Do you know UML? How many people programming today know any UML at all? Did we outgrow it, or just forget it?
154
17
222
@tottinge
Tim Ottinger
1 year
Play the game again, which is more readable and why?
Tweet media one
259
25
219
@tottinge
Tim Ottinger
6 years
the most important things you can do with cards: 1) Delete them (throw them away) 2) Split them 3) Work on them together Do you know how many ALM tools don't allow these three things? The tools are supposed to work FOR us, we don't work for the tools. Let's delete bad tools.
13
132
220
@tottinge
Tim Ottinger
3 years
What is Unteaming? That's where each person on a team is given a different thing to for them all to work on at the same time, so that they can't possibly collaborate.
10
70
219
@tottinge
Tim Ottinger
4 years
Q: How long should a method/function be? A: one idea at one level of abstraction long. My favorite answer to this question of all time.
8
66
213
@tottinge
Tim Ottinger
4 years
There's debt, and then there's just crappy code. Not the same thing.
Tweet media one
13
80
211
@tottinge
Tim Ottinger
4 years
Today I was once again told that estimates and sprints are the core components of Agile. It is so very wrong to be so oft-repeated. Sometimes your local pundit doesn't know jack about agility.
26
52
211
@tottinge
Tim Ottinger
5 years
Are you ready to quit estimating in story points as fibonacci numbers or powers of two and start estimating in dice? This problem looks like about 3d6 of half-days.
38
55
207
@tottinge
Tim Ottinger
3 years
Common misunderstanding: the agile methods grew out of the agile manifesto. The opposite is true. The manifesto was written by people practicing the methods for years prior. XP and scrum were known and used before 1996, for 2 examples.
10
51
209
@tottinge
Tim Ottinger
5 years
“the world’s simplest agile maturity model” -- Interesting.
21
83
208
@tottinge
Tim Ottinger
4 years
To a lot of people this is true....
Tweet media one
6
70
200
@tottinge
Tim Ottinger
3 years
Most disturbing mistaken belief about agile? That it is predicated on having accurate estimates and assigning the maximum achievable load on each person in the team. It's not even close. It's kind of the opposite. But people think this is the ideal somehow? I weep inside.
12
42
202
@tottinge
Tim Ottinger
5 years
If your developers are kept busy with individual assignments, don't be surprised that the developers' personal workload takes priority over the needs of the team. Nor should you be surprised that the team is not responsive to the needs of the broader organization.
3
70
198
@tottinge
Tim Ottinger
3 years
Oooo.... Though I think that this applies to radical candor too. Often people mistake psychological safety not so much as "impunity" but as "extreme restriction of expression" -- which it also is not. Most people don't realize Psych Safety and Radical Candor are the same idea.
Tweet media one
11
49
198
@tottinge
Tim Ottinger
7 years
"People need to feel that they have a certain degree of autonomy." No. No No No. People need to HAVE a certain degree of autonomy.
9
100
196
@tottinge
Tim Ottinger
2 years
“Common sense” is a myth. Every time someone says “common sense” they mean “the set of things I already know, and have known for some time.” It is 100% tied to your personal story. It’s not “common.” Don’t blame someone for not being inside your headspace and experience.
13
45
198
@tottinge
Tim Ottinger
2 years
To throw one more fallacy on the bonfire: CI is not the practice of running a building test server. It is the behavior of developers sharing all their code changes frequently, at LEAST once a day.
12
54
196
@tottinge
Tim Ottinger
3 years
The most difficult of all simple ideas to internalize is probably this: To be done sooner, do less.
6
52
201
@tottinge
Tim Ottinger
1 year
A: Why do you use a ticket tracker? B: We have thousands of backlog entries. A: wait... what? Why? How does that help? B: If we don't store them, we may forget.
16
32
198
@tottinge
Tim Ottinger
6 years
Periodic reminder: The human being is not the bottleneck. This thinking creates blame and problems. The human being is AT the bottleneck. This understanding opens up options for empathy, remedy, and improvement.
8
97
193
@tottinge
Tim Ottinger
5 years
In organization, trust is expressed in autonomy. Where autonomy is low, you can bet it is because trust is low. Where autonomy is high, you can bet it is because trust is high.
5
71
188
@tottinge
Tim Ottinger
4 years
The most brilliant programmers alive working competitively in an ego-rich environment can’t get as much done as ordinary programmers working cooperatively as a self disciplined and self-organizing team. You need a process where team empowerment and collaboration thrive.
6
53
183
@tottinge
Tim Ottinger
4 years
If I say “TDD” and what you hear is either “unit testing” or “test coverage” then you aren’t hearing me and I need to find a new way to communicate with you. When I say “TDD” I don’t mean ‘unit testing’ and/or ‘test coverage.’ How can I say it differently?
67
56
182
@tottinge
Tim Ottinger
1 year
You know why merge conflicts are so common, right? It's too much functionality in one file/function.
30
31
187
@tottinge
Tim Ottinger
5 years
I don' t understand how people think they can do CI and CD without doing TDD/BDD/etc. It seems that continuously integrating code that might have significant unrecognized defects is sketchy. To deploy that, doubly so.
12
78
185
@tottinge
Tim Ottinger
6 years
So, your kanban has a horizontal lane per person? How are people supposed to pair, mob, work consistently, avoid silos, kill queuing, lower WIP, and improve lead time if they are all doing "their own work"? What is the point?
16
58
181