When I think about a lot of the efforts that we make to improve the software development process, I feel like we’re usually trying to make improvements within the system that we are currently living in. What if we could instead disrupt the world that we’re living in by changing something that dramatically changes the game?
Think of what Uber has done. I feel like everyone uses Uber. How many people do you know used taxis on a regular basis? Maybe you used a taxi when you absolutely had to, like when you’re getting from an airport to a hotel. But on a daily basis? No way. The other day a co-worker took an Uber to get to work after dropping his car off to get an oil change. When I asked him how he was going to get back to pick up his car, he said, “I’ll figure it out this afternoon.” That is a game changing idea. It makes you think about transportation in a way that you never thought of before.
Let’s think about the world of software development. I tried to think of some of the big changes I’ve seen in the last few years.
- DevOps and cloud computing – it used to take weeks to get a new server purchased and stood up, but now we can go to a site that automatically provisions a server, installs what I need, and then I can get rid of the server as soon as I’m done with it at a fraction of the cost.
- Git – I remember the first time I heard about branching per feature. In the world of centralized version control systems, branching and merging is hard enough that you would never think about branching per feature. Git makes the cost of branching and merging almost zero, which enables you to work in a completely different way.
- Dynamic languages – I can change a line of code and see the results immediately without having to compile
- Remote working – collaboration tools are improving to make it much easier to work with people that aren’t in the same location as you
Think about the application that you work on and business in which you operate. What are some things that are annoying and slow you down? Some of these things are obvious, but many are really hard to see because they’ve just become “normal” to you. You’ve accepted those things as facts. But what if there were a way to change the facts?
Let me give you some examples.
- What would happen if I didn’t have to wait so long to get answers from people in the business?
- What would happen if I had a faster development laptop?
- What would happen if we were using a different framework/platform/language?
- What would happen if our team could all sit together in the same space?
Those are good questions to ask, and those things might provide a lot of value, but that’s still operating within your current plane of thought. What if we ask more mind-blowing questions?
- What will happen when we improve smartphone battery life so that a phone can operate on a full charge for weeks/months?
- What will happen when computing and network speed increases so that web pages load instantaneously?
- What could you do if everyone had virtually unlimited data and download speeds were measured in gigabytes per second?
- What will happen when mainstream video chat is no longer a grainy, choppy FaceTime or Hangouts video and instead is a clear 4k data stream?
- What will you be able to build if all of these were true?
Will those things help you out today? No, because they mostly aren’t a reality yet. That’s not the point. By thinking about game-changing ideas, it forces you to think on another level. It forces you to think outside the box. It’s surprisingly hard to think outside the limitations of the world in which we live everyday (remember The Matrix?).
This is why I attend certain software development conferences and not others. For example, I’m writing this at the Path to Agility conference. I love going to open space conferences for the same reason.
I go to conferences like #path16 not just to hear mind-blowing ideas, but to hear things to make me think about mind-blowing ideas.
— Jon Kruger (@JonKruger) May 26, 2016
The technology world is changing at an extremely rapid pace, so we’re going to need to change the level of our thinking.