Well, so far http://www.defyallchallenges.com/ has not been all that interesting…timer runs out, nothing happens.
Ok, the title of this post is a joke. I know that new product idea generation is never easy.
Actually, I do not think that is quite true. Coming up with ideas is sometimes not all that hard – sometimes it seems like I come up with ideas faster than I can write them down, or even think about them. The real trick is coming up with good ideas, or being able to recognize the good ones form the piles of ideas in which they are buried. This, in my opinion, is the big challenge in developing a defined innovation process – how do you take this idea generation, selection, and development process more predictable and less serendipitous.
In the past, most of my efforts in this area have been within the context of an employer. This is important, because in general, this provides constraints on where you go with your ideas. For example, if you are working within a vertically targeted software company, your idea-generation efforts typically work within that vertical, and even more tightly, close to your niche area within that vertical (this is not always a good thing, it just seems to be true). If by chance you get the opportunity to take your efforts into a new vertical, you are still constrained. Typically, you will be trying to leverage what you are successful at in one vertical, and trying to replicate that success in another vertical. I am not claiming that any of this is easy, but it is not what I want to talk about in this post.
What I am thinking about right now is the challenge of starting from scratch. Here you are, on your own (alone or with a group), with no particular historical context, you have a wide-open, blue sky ahead of you. Well, where do you start? How do you decide where to begin? How do you narrow down the playing field, and how do you pick ideas to tackle (wouldn’t be nice to be able to try all of your ideas)?
To me it all starts with “what do you want to be”? What is your vision for the company you want to create? Do you want to follow the Micro ISV model, and start a company which will only be you (or at most a few of you)? Do you want to start a company which you envision will develop into a small software company, but bigger than an ISV? Or, do you want to go all the way and build the next 800 lb gorilla? Or do you have a completely different business model in mind (remember, innovation can be found in a business model as much as in a technology). This decision is vital to picking your ideas. Some ideas just will not work in some models – or at the very least will have great challenges. Unless you have a pretty good idea of where you are going, it is tough to identify an idea which will get you there. As one of my physics professors taught us “never start a problem until you have some idea what the answer looks like – otherwise you will not know when you get there”.
A second big piece of the puzzle is “what do you know how to do/what do you like to do”. Obviously, if you want to develop a useful (and hence successful) product, you need to either possess or develop a deep expertise in the relevant field. This is especially important if you are developing a vertically oriented product. Breaking into a new vertical is a huge challenge even for an established, successful company. As a start up, trying to develop a product while learning about the vertical is just making your task harder. So, if you can, it pays to attack a space you already know. That being said, you may have an idea which is so compelling that you want to attack a space you do not know well. In that case you will just need to acquire the expertise you are missing – learn it, buy it, whatever you have to do. The other side of this question is what do you like to do. No matter how good your idea is, taking it from idea to successful company is going to take an enormous amount of work. Your chances of success will be greatly improved if you are doing something for which you have a passion. Can you be successful doing something you hate? Yeah, sure. But, given the choice, why would you?
So, once you have figured out these simple questions, what next? Well, I will take that up in another post.
This morning I am going to talk about various things which have been getting on my nerves this week (leaving aside the obvious things that always get on my nerves, like bad government, war, etc.).
- Software that constantly interrupts the flow of what I am trying to do by asking me stupid questions. I know many people have talk about this before, but it seems that no one actually writing software ever listens. Software should only ask you questions when it really needs to. It should never ask for confirmation to do things which are (or should be) reversible. I go to uninstall a piece of software (this happens with my Bluetooth mouse driver, Visual J# Redistributable, and almost everything in the Windows ecosystem) , and I am very intelligently informed that “if you uninstall this, you may not be able to use it anymore”. Isn’t that what “uninstall” means? What a completely useless bit of information. And, if I really need to use it again, I can always reinstall it! Many UI developers will argue that they are simply protecting the user from making mistakes. In reality, they are just doing the easiest thing so that the software does not have to take responsibility for keeping things clean. Implementing undo functionality everywhere is messy and time consuming. But, it is the right way to do it for the user. So, my note to developers is, stop wasting my time with stupid questions!
- Software that does not uninstall itself properly. I am getting really tired of software that installs a bunch of stuff on my computer (not just spyware, but stuff that is actually necessary to the functioning of the software), but does not clean up after itself when it uninstalls. One of the worst offenders in this category, I think, is Visual Studio. Uninstalling Visual Studio seems to take forever.
- Installing Open Source Software. Is it my imagination, or does a lot of open source software go out of its way to make itself hard to install on a Windows platform? To be fair, there are some projects out there which are very good about this (Apache, Tomcat, JBoss all spring to mind), but there are many which seem to be trying to be difficult. Is it a question of trying to make people think it is Windows fault that this stuff is hard to get working, so that people will be encouraged to go elsewhere? Or is it a just a lack of caring? If open source wants to dominate proprietary software, the fact is, it has to be as clean and easy to set up and make work.
(Then again, I have run a lot of closed-source software with the same problems – not sure what their excuse is either!)
- Web sites that override the back button. What is it with these sites? Do they assume that their content is so compelling that there is no way you would ever want to leave? Or are they trying to stop you from leaving (like you are not going to find another way out)? This web site behaviour is just plain rude, and inconsiderate of the user. For the most part, if a site does this, I will never go back.
I have been doing some work lately teaching myself some of the basics of Ruby, Python and a couple of other languages. As I was working with these languages, I was suddenly hit with a question – why? Over the course of my career, I have programmed in a lot of languages (somewhere around 20 that I have actually used to do useful work, I think). I am sure many of you can say the same thing. And do you know what? They all suck in one way or another! I have seen language’s popularity come and go. I have seen arguments in person, in newsgroups, and all over the web which bordered on religious fanaticism. Even as I write this, a good discussion continues in response to The Next Big Language.
Again, I ask myself “why?”
Looking back over projects in which I have participated, led, observed, or otherwise been involved, I cannot think of one where the success of failure (or degree of success – failure is not usually absolute) of the project was due to the limitations of the programming language. Nor has the programming language been the determining factor in the cost of the project, or the quality or the maintainability of the code.
There are so many factors which are accepted to have much greater impact on the course of a project than the choice of language/technology – requirements, architecture, realistic planning and tracking, and proper resourcing to name a few – that I find the whole debate around programming languages to be somewhat meaningless in the real world (actually, I find it more annoying than meaningless).
This is not to say that I do not believe we should always be innovating and inventing new ways of doing things (including programming languages). It does mean, however, that it is highly unlikely that any of these language advancements (or The Next Big Language, whatever it is) will make a significant difference in software development in either a corporate IT or commercial product development world – at least not any time soon.
Well, I have been meaning to start this for some time, but like everyone, other things just get in the way.
A bit about myself. I have been working in the world of technology for 20-odd years. Currently, I am VP of Technology at Whitehill Technologies, Inc., where we specialize in Document Composition and Document Automation technologies, in the Legal and Financial services spaces. Prior to that I worked on internet conferencing using early VoIP, and on large military communications projects. Before even that, I worked in satellite control, and remote sensing. Going way back to university, my focus was on theoretical physics and astrophysics.
Currently my interests revolve around most aspect of software development, from technologies to management, and in the area of defining sustainable, repeatable processes for innovation within technology organizations. I also have a particular interest in Tablet PC technologies – I have been using one for several years, and I love it.
On the personal side, I still have a strong interest in all aspects of science, especially physical sciences, as well as philosophy and comparative religion. In addtion, I am into music, playing guitar (badly, I am sorry to say), and reading almost anything I can lay my hands on.