Paradigm shift after ACCU2017
This Wednesday my employer generously sent me to the ACCU conference, Bristol. Though I was there only for a single day, it was amazing. Really, guys, you did a great job. But comparing to “C++ template metaprogramming” talk or testing framework discussions, which were only the in-depth exploration of something familiar to me, the opening talk was a paradigm shift for me.
It showed me that while being a senior developer (that hopefully means that I am not that bad at C++) I have some serious problems with design. Here I’d like to give a subscript for a part of that talk (starting from 5:38).
It’s around sprint 10. And you are feelilng great. Everything has done to plan. The stakeholders are happy. Customers are happy. The team mates… They all happy! Live is good. And you are sitting there on your holiday, on the growing grass across the South Downs, in the Sun, in the Sun, in England! It a good day, the birds on the trees sing wonderful.
The next day you get into work and you feel the buzz in the room. Everyone is feeling good. It’s happening. This is the project. This is the one where we should stay for the rest of our lives. So you go to your standup meeting and to that is sensible at that point, which is sit down. And once you got passed an inevitable status update in the words, you know, what did you do yesterday, what am I doing today, you get to the meat that is usually what’s blocking me, how could you help me. But you can still feel the buzz. Yes, there are challenges, they are good. We can handle them, we are together, we are team! And you feel: this time, this time we got it right. And then…
The senior stakeholder in the room utters the one phrase you have been dreading: “Just one change”.
And at that moment you go through a several emotions. The first emotion is anger. “How dare you changed your mind! I can break a sprint! I can do that! It’s in the book! How dare you…”. But it is not the first emotion that is interesting, it’s a second one. Because the second one is guilt. You are supposed to be an agile software developer, and agility actually is distilled down to only mean one thing: embracing change. And you can’t.
You got that emotion, don’t you? That is that I got time and time and time again. And so it was highlighting to me that the main problem we have as a modern software developers is that we tend to assume that we are building the right thing. Worst of that, we tend to assume that other people know that it is supposed to be.
So I would like you to adopt the mantra: “We don’t know what we are doing. They don’t know that they want. And that is a situation”.
I used to work at the “fast jet”. You think you know what they want really: it is got a way for a jet to move fast really. Pretty much done. But no, it is all about a change and it’s crazy how often we design software assuming we know what we are doing. Assuming that it is inevitable march to the right thing. But in fact it tends to be a meander through the wrong things on the way to possible something that might vaguely be right. But we don’t design that way. We design like we are knowing that we are doing. That is the first little message I want to leave you with. Something to think about this week. How would we design differently if we accept the fact that we don’t know what we are doing and they don’t know what they want, and that is normal.
Just as an addition to the quote above. Did you mention the word “anger”? I think you do. It is that’s happening with me as well. I found this TED-video, it contains quite a good explanation of this syndrome and some advices how to overcome it.