Joshua discusses how setting yourself up to plan too far ahead of time stifles innovation and what you can do instead to give yourself permission to innovate, experiment and be creative.
Welcome to another episode of getting apps done, a -mostly- non-technical podcast about delivering applications.
Today I wanted to talk about iteration because I believe that the concept of incremental iteration is one of the most powerful concepts in software development.
My name is Joshua Graham. I'm a technical consultant and what that means is I help businesses build and deliver software, and in this podcast I talk about and probably bore people to death about getting apps done.
Now iteration, when it comes down to it, is basically just repeating a process over and over again. Every new iPhone, every new version of Windows, every updated model of car is an example of iteration.
They don't just start from scratch. Every time they release a new version, they take what they had before. They take feedback from their customers and they integrate that and they iterate.
Now, I was talking to another developer the other day and he being a proper developer, was saying that he prefers when he starts a project just to dig in and start building some code, build some stuff, and I completely get that.
My inner-engineer absolutely understands that. Sometimes it's very tempting just to open up the code window and start to go at it, but I've learned over time to love low fidelity and there's a reason for that.
Now when you start a new project, knowing exactly what you want from the beginning can be really difficult. I imagine being asked to build a completely new social network or a.... It could be anything. It could be a crypto currency exchange or whatever it may be, being told that you're going to build it from scratch and from day one you have to plan absolutely everything.
Now, don't get me wrong, it is absolutely doable. In fact, people have been doing it for years. The waterfall method is entirely about that. In fact, even incremental development is all about having the plan upfront and chunking your waterfall method, basically, so that it's smaller pieces, but it's all about planning out everything upfront.
The problem with that is it entirely stifles innovation because the risk is just too high. If you are asked on day one to understand and know everything that's going to happen in your project, throughout the entirety of it, you aren't going to take any risks.
How could you possibly justify that? When you need to know everything? You're going to take the nearest model you can find and you're going to clone it because, frankly, that's the lowest risk method for going forward with your project. You are going to take the last major social network or whatever it is and you're going to clone it as much as possible and put in very small bits to customize it. Because, frankly, that's the only way you're going to be able to plan. Plan everything out ahead of time and know that things aren't going to go horrifically wrong.
And there's nothing wrong with that. I've seen it happen with a lot of products. I've seen a lot of really great products built that way and that's fine, but it doesn't leave any room for you to experiment or try anything new.
And that's where I think incremental iteration really comes into its own and changes how you think about building your applications. Because when you start with a small idea and you let it grow organically, particularly with feedback from your end users or your customers and incorporate feedback and lessons learned into your development process, suddenly you can validate or invalidate your innovative ideas very quickly.
And that is critical because that's what allows you to innovate without as much risk because you're doing it very quickly. And that's where the low fidelity comes in. And this is why I love it so much because when it comes down to it, if you go with the lowest fidelity, I don't care if it's Napkins or, um, Invision has a sketching tool that's very simple. It just makes boxes and wireframe circles and things like that. It's very quick to use and it's very quick to produce something that is enough to verify your concept and see if your crazy ideas aren't crazy after all and they're going to work really well for your end user.
And that's a key to innovation. You need to have that ability to just try things out and see if they were to be inventive, be creative and allow those things to come out and see how they work out and if you had planned all this upfront and you need to know that it's gonna work. You just. You can't allow yourself that.
So by making it smaller pieces and incrementally iterating, you are allowing yourself to be more creative, to be more mindful of your audience, to be more in touch with them and to understand them better and to start to be able to produce better results for them. More value for them because you're able to do something that the guys who are planning everything out ahead of time can't.
And that's why agile methodologies are so hot right now because they're really flexible and the core of what makes them really powerful and really flexible is that iteration combined with the ability to increment upon what you're building and building up your idea in an organic way can save you a ton of time and money as well as allowing you to experiment and play and learn and build something that nobody's ever done before.
Now, unfortunately, this is a quick one today. That's all I have time for.
I will put a transcript up on gettingappsdone.com.
Please be sure to check out my website at joshuagraham.info to learn more about me and why you should pay any attention to me and my crazy ramblings at all.
And if you have a really great example how you've used the ability to incrementally iterate to be innovative, please let me know. I'd love to hear from you. I'd love to tell your story.
Be sure to subscribe and drop me a line on our website, and until next time, thanks for listening.