Wednesday, May 07, 2014

My view on problem space and innovation

My personal philosophy on development is that the problem space is the most important thing. And the problem space has to do with: what exactly is the purpose of this application, why must it exist?

The way I think that works usually is you code something for the initial problem space, which fulfills a need, and you watch users with the thing, which can help you to better formulate the outlines of the problem space, which can push you to add features or refine the application.

And that can lead to rapid development, with lots of iterations as you approach a better and better solution to a problem space that gets ever more defined.

Or you can just solve the problem space.

For instance, my open source application Class Viewer has very few iterations, almost no innovation, and hasn't really changed very much in over 10 years!

But as far as I am concerned it solves a particular problem space, which is how to get class information quickly, about public methods, fields, constructors and get to Javadocs.

Turns out I needed that problem space solved and had been frustrated years ago with trying to do those same things by other means.

The biggest innovation from the original product has been also letting you open a Java file in a text editor.

What's interesting to me is how the simple concept of a problem space can explain when you will see a lot of iterations and innovations versus when you should not. But I think there can be a problem if someone feels they MUST have a lot of iterations just because.

Now generally you will NOT solve the problem space with a particular application but only approximate a solution with ever greater accuracy. For instance, smartphones today are vastly different from the original cellphones.

The problem space of: what should this mobile computing thing do for users?--is evolving, growing, expanding and ever changing.

It's hard to imagine when it might be completely solved!

The Java language itself operates in the problem space of: how do you best tell a computing device what to do?

And another area is the social app problem space which can probably never be completely solved and we're seeing lots of applications out there trying to solve various pieces of it and flesh out the problem space, and I use quite a few of them: Blogger, Google+, Facebook, Twitter, Pinterest, Instagram, among others.

But that's not a surprise: being human is kind of complicated and connecting with other humans is VERY complicated. It's a wonder they're getting by with as little innovation as they're doing so far.

And that is my philosophy on how the problem space helps you understand when innovation is necessary, which also lets me explain why my own application gets away with so little.

Solving a major problem space is something very few developers will ever experience.

But if you DO solve a problem space you will look with amazement at an application which is just what it needs to be. Such a thing I suspect is like a unicorn for most of the development world, as in they have never seen it and presume it's just some mythical beastie which can not exist in the real world.

James Harris
Post a Comment