Brainstorming is a bad idea (yet again)?

I love these articles – I blogged about this in response to articles a couple of times (here  and here) and the issue is always the same. They refer to brainstorming as “throwing a bunch of people in a room and letting them come up with ideas”.

Of course this is ineffective. How could it be otherwise? Would you expect to throw a bunch of programmers in a room with no process and expect good results? How about throwing a bunch of kids on a field with no structure and expecting them to be a football team?

Without a process and without structure, any group collaboration will fail.

I maintain, however, that brainstorming can be effective, when done in a structured and facilitated manner. At some point I will have to throw together some references on this, because I have seen them, but I think to say that “brainstorming is a waste of time” just because unstructured brainstorming with no process is ineffective is completely unfounded.

Advertisement

Some challenges with MS Surface Development

So I have been playing with the MS Surface for a couple of weeks, and have a pretty good handle on the basics of the development model. As I said previsouly, the nice thing (for me, anyway) is that it is pretty standard .NET stuff. You can do pretty much anything you need to using Windows Presentation Foundation (WPF). That being said, it is not without its challenges, and I would like to share some of what I have seen so far. 

1) The SDK only installs on 32-bit Windows Vista. This is a challenge for me, since my T4G laptop is running XP, and all of my other computers are running 64-bit Windows 7. The big value of the SDK is that it contains a “Surface Simulator” which allows you to experiment with Surface development without actually having a Surface. I tried setting up a 32-bit Vista VM to use for the SDK, but the simulator does not work in the VM. Now the good news, after a couple of weeks of messing around, I managed to hack the .msi file for the SDK, which then allowed me to install on 64-bit Win7. All seems to work great now.  

2) WPF experience is hard to come by. I can program in WPF, and understand how it works, but when it comes to the fancy styling and more creative aspects of what you can do with XAML, I am definitely no expert. Apparently, neither is anyone else I know!

3) Changing the way you think about the user interface. This is the biggy. The UI model for the Surface is different than anything else with which I have worked. yes, it is a multi-touch platform, which is cool, but hardly unique. If all you want to do is develope multi-touch apps, you can do it much more cheaply on a multi-touch PC (both WPF and Silverlight now support multi-touch development on Windows 7). The unique aspects of the Surface are that it is social, immersive, 360-degree, and supports interaction with physical objects. In order to make full use of the Surface platform, you have to think about all of these things. You also have to break old habits regarding how the user interacts with the platform. We are used to menus, text boxes, check boxes, drop downs and all the usual UI components we have lived with for so long in desktop applications. Or the content and navigation models we are used to on the web. The Surface requires us to forget all of that, and think of interaction in a new way. In this sense, it is more like iPhone development. However, even iPhone development gives you a fairly strict environment which defines how your app ahould look. The Surface on the other hand, is wide open. You can create almost any interaction model you can imagine, supporting multiple user working either independantly or collaboratively, working from any or all sides of the screen, with or without physical objects. This requires a whole new way of thinking, at least for me.

4) Ideas. This is another big challenge. I have lots of ideas for applications for the Surface. Some of them I am pretty sure are good. Some of those are even useful. Some of my other ideas are probably downright stupid. I would like to hear your ideas. I have always believed that, the more people you have coming up with ideas, and the more ideas you come up with, the better your chances of finding great ideas. So shoot me email with any or all ideas you might have – and don’t worry, they cannot be any more silly than some of mine!

Finally, I have added a little video showing just how far you can go with the Surface UI. Hopefully in the next couple of days, I will have a video of some of what I am working on to show.

DaVinci (Microsoft Surface Physics Illustrator) from Razorfish – Emerging Experiences on Vimeo.

That’s why you play the game!

I just finished watching the Giants beat the Patriots in the Superbowl. I had not actually intended to watch the game, because I really had little interest in who won. Then I figured, no matter who won, a certain amount of sports history would be made.

Going into this game, no one (myself included) gave the Giants much chance of winning. Up until a few weeks ago, no one would have guessed that they would even be playing. That brings me to the point of this post – the fact that stats really are irrelevant. On any given day, any team can win. That is why they play the game.

This carries over into the “real” world. Whenever you are starting something new – whether it is a business, or a new innovation, or anything else you can think of – there will always be lots of people telling you not to play in certain games because there is no chance of winning. The fact is, there is almost always some chance. It may be slim – but what it comes down is whether you execute better than the other players on game day (only in the real world, everyday is game day).

So do not always run away from the game because there are players out there with better records and better stats. All you have to do is go out and play better.

Easy, right?

Business life lesson – Don’t let anyone steal your dream : Atlantic Canada’s Small Business Blog – IQI Strategic Management Inc.

 

Business life lesson – Don’t let anyone steal your dream : Atlantic Canada’s Small Business Blog – IQI Strategic Management Inc.

This is an interesting post, and fits in well with other things which have been on my mind lately, and with things about which I have posted.

It occurs to me that over the years, I really have let the world steal my dreams. I think we all do this – we get so wrapped up in the day-to-day “operations” of life that we lose track of the grand visions. We also tend to be told that we need to think realistically, and be reasonable, and play it safe. We spend much of our lives being taught what is possible, and even worse, what is impossible. I think that is why so much advancement in science, arts, and other fields comes from the young, because they have not yet learned that what they are trying to do is “impossible”. 

One of the nice things about a grand vision is that you spend much less time worrying about whether it is possible of not, and more time just working towards it.

Ok, so now what?

I will let you know, right up front, that this is going to be a largely self-indulgent post. I am basically just thinking out loud, and doing it in public. Kind of like standing on a street corner talking to myself, I guess.

You see, I am on the verge of a life changing moment. Or maybe I am in the middle of it – it is a long moment. It started when I received notice on October 11 that my services were no longer required. Maybe it started even earlier, when the acquisition of Whitehill by Skywire was announced, and I was pretty sure that my time here was coming to an end. No matter, since I do know when the moment ends – December 15.

This transition period has been very complex, emotionally. I have, after all, spent close to 9 years at Whitehill – a considerable portion of my working life. I have invested a great deal of emotion and energy into it. And of course there is the people side of things – I have worked closely with a group of people for many years now.

On the other hand, I have been feeling for some time now that it was time for me to move on from Whitehill, and do something new. For the past year or so I have been semi-actively working on other ideas, plans, schemes, etc. I have been held back, however, by inertia, fear, complacency – all the usual things. So, in a way, being laid of could be viewed as a good thing – forcing me past these issues which I may never have overcome on my own.

So, I am now presented with an opportunity to do something new. I can do something a little bit new, like finding a similar role in a different company. Or, I can go all the way and completely reinvent myself again (I have done this twice before in my working life). I am taking this situation as an opportunity to re-evaluate what I do, how I do it, and most importantly why I do it.

As is typical for me, this evaluation has involved a great deal of reading. Even before the transition at Whitehill became concrete, I had been reading a number of books on starting my own MicroISV, including Eric Sink on the Business of Software and Micro-ISV: From Vision to Reality, both of which were extremely useful. Recently I have been reading Timothy Ferriss’ The 4-Hour Workweek: Escape 9-5, Live Anywhere, and Join the New Rich, which is a very interesting read and has some cool ideas, though not all of them I see as being good ideas.

In addition, there are the various blogs I follow, such as Escape from Cubicle Nation (which has had a couple of interesting, relevant posts recently – Excellent reading for those paralyzed by fear of leaving their job and Tips on cutting the ties and saying goodbye from Psychology Today) which in turn led me to 10 Remedies For “I’m Starting My Own Business And I’m Paralyzed With Fear!”, which of course has a 10 links to some other interesting posts.

I must admit that even now, when I know I am leaving, i still feel paralyzed with fear a lot. I swing from be optimistic about the future, to wildly ecstatic about the possibilities, to absolutely terrified that life will collapse in six months. Part of this, I know, is because I am moving outside of my comfort zone. This will be the first time in 20+ years that I will not be employed by someone, for even one day. That is a bit creepy!

So, getting to the title of this post, what now? I really do not know at this point. I have opportunities out there already, and I have no shortage of my own ideas. I have been asked by various people what I want to do. About the only thing I can say for sure right now, is that I want to do something “new and interesting” – I just have not decided what yet.

I have decided that as of December 15, I am going to take a few weeks to “decompress”, and to unclog my brain from all the Whitehill clutter that has built up. The last thing I want to do is to jump into something instantly. I know with certainty that once I am away from here for a few weeks, my thinking will change dramatically.

All in all, it promises to be a very interesting new year!

Service Oriented Architecture is your Ticket to Hell?

With reference to Service Oriented Architecture is your Ticket to Hell, it always amuses me how people insist on calling any idea which does not agree with their own, “bullshit” – always thinking in terms of absolutes, and believing “my ideas are great, yours are BS”. Remember, an idea is a dangerous thing when it is the only one you’ve got. The statement that Service Oriented Architecture (SOA) increases agility can be interpreted in two ways: as increasing the agility of your architecture, or as increasing your ability to adhere to the dogma of “agile development” (which has been bastardized as much as all dogma ultimately is).

(of course, I tend to think of SOA in the dogmatic view of Erl as somewhat bastardized as well, and I do not recognize his authority on the subject as absolute. I was modeling systems as collections of autonomous interacting objects/services years before the term was hijacked)

I will start by looking at the closing statement of the post, since I actually agree with it:

What I am saying is that, if SOA is scaled up without precaution, it can create systems so precarious that anyone asked to maintain them will feel like s/he’s won a ticket to programmer hell.

While I agree with this statement, I do not agree with specifically targeting SOA. This statement applies equally well to any architectural model, including any emergent architecture coming out of an agile development project.

Lets now look at the two specific concerns expressed with SOA.

It is not entirely clear to me that SOA requires excessive amounts of “up front” architecture. The only locked in architectural decision is the one to model your system as a system of interacting services. Even the choice of what kind of a service bus to use should not imply lock-in, since if you implement things properly, it is not particularly onerous to move services from one context to another. And the decision to model your system as a collection of loosely coupled services does increase the agility of your project, in some respects. Need an additional execution component? It is fairly easy to implement it without disrupting the rest of the system. Need to take one out, or change its implementation? Same thing.

Looking at the second concern, I would agree that is possible to create “strange loops” and other architectural oddities through unconstrained application of service oriented architectures. The same was said for a long time about inheritance dependencies in object oriented systems.  It remains important for the architect of the system itself to understand the implications of any services being used. This is an inherent complexity of large, complex, distributed systems.

(as an aside, this is a fundamental problem I have with agile methodologies – the idea that up front architecture is sacrilege – and I have seen little to no evidence the agile methodologies scale to large, complex projects).

As for the comparison between object oriented approaches and SOA, I do not see the two approaches as being mutually exclusive. What are services but large scale objects which respond to messages and provide a service/behaviour? Much of the same modeling concepts which apply to OOAD also apply at the larger scale (of course some do not – such as granularity of operations).

Ultimately, I find SOA to be a useful approach to modeling large, complex distributed systems (and yes, I have built a few). Is it perfect? Probably not. Are the “gothcha’s” in there if you apply it blindly, and without due thought? Absolutely – the same as any other approach I have seen. Is it the correct approach for every system and every project? Absolutely not. It is one approach. It pays to know more than one, and to use the correct one in the correct situation.

Anyone else out there sick of “Us versus Them”? Afterthought…

This morning I had an afterthought regarding my post last night Anyone else out there sick of “Us versus Them”?

I recognize that there are cases where the debate is necessary, or at least may be perceived as necessary. So, in that case I would add one more item to my “guidelines”:

6. If you absolutely must try to convert people to your point of view (in violation of item 5), try describing what is positive about the solution you support, rather than ranting and raving about why the alternative is evil and will bring about the downfall of civilization as we know it. (“Microsoft is evil” is not a valid argument).

(Note this is one of the biggest problems of our time, not just in software, but everywhere. Look at our leadership – no one presents viable, intelligent alternatives to anything, they just bash the opposition.)

Anyone else out there sick of "Us versus Them"?

Well? No, I am not talking about politics, war, or religion (though I guess I could be). I am talking about the software/technology business. There are days the whole business just annoys the crap out of me. Let me step back a bit…

I was just on Google Reader, reviewing my various RSS feeds – specifically my Digg feed. I know I should stay away from that feed, but I just cannot seem to – it is like watching Fox News, or listening to clips from Howard Stern, even though I know something in there is going annoy me, bug me, disgust me or otherwise create negative feelings, I just cannot resist looking.

What typically ticks me off on Digg is a post (usually more than one) on the following ongoing us-versus-them arguments:

  1. Linux versus Windows
  2. Mac OSX versus Windows
  3. Open Source versus Microsoft
  4. Open Source versus any commercial software
  5. ODF versus Open XML
  6. Java vs C++ vs .NET versus any other language
  7. Dynamic languages versus any other languages
  8. Web Applications versus Desktop Applications
  9. And many many more

At any given time on Digg, on blogs, and in the “regular” press, you can find lots and lots of people blathering on about these subjects. Sometimes, you can even find me blathering on about them. Most of these posts are characterized by the following:

  1. They are poorly written, grammatically incorrect, etc.
  2. They are very emotional, and often hate-filled (and occasionally filled with colourful metaphors)
  3. They are low on factual information
  4. They imply (or more often, openly state) that anyone who disagrees with the post is so completely stupid that they do not deserve to live

Here are a few examples: So you think that Microsoft’s Open Office XML is ‘Teh Shiznitz’?, Virtualize Windows on Linux? Microsoft Says No Way!, Surprise: Microsoft not so ‘open’ after all?, Is the era of Microsoft Ending?, and a lot of the VistaSucks blog.

There are days that I feel if I hear/read/see one more of these stories, I am going to trash my computer, tie my belongings in a kerchief on the end of a stick and become a hobo. In a more productive vein, I would like to suggest the following guidelines:

  1. Use whatever OS you like. If you like Linux, use Linux. If you like Windows, use that. Same for OSX. Heck use CPM if you want.
  2. If you are a programmer, use whatever language you want, or which makes sense for a given project. If your employer will not let you use the language you like, stop whining and get a new job.
  3. If you like MS Office, use it. Same for OpenOffice or StarOffice.
  4. If Web Applications make sense for you, use them. If you like desktop apps, use them.
  5. Whatever you use for whatever you do, please shut up about it, and stop trying to convert everyone in the world to your point of view!

But I want to be Disruptive!

I have spent a great deal of time over the last couple of years thinking about the process of innovation, different types of innovation, and how to innovate in a small but established organization versus a startup organization. I was reading Innovator’s Dilemmas: Do You Really Need To Be Disruptive? over on consultaglobal this weekend, and got to comparing some of Jose’s thoughts with work I have done in the last year.

As Jose says in that post, he is more interested in the process of defining a product roadmap in terms of gradual innovation, and in managing product portfolios. We have been very successful with this type of innovation, having a strong product management process for our existing product suite. In my role, I have been more interested in how we do larger scale innovation – how do we come up with the innovations now which are going to drive our growth 2+ years from now?

I have defined an innovation cycle as shown below.

image

Recognizing that disruptive innovation is, well, disruptive, as this cycle is traveled counter-clockwise starting from the upper right, we go from a high-chaos, low-process environment to progressively higher process and lower chaos.

In this model, the upper right quadrant represents what we are really good at, evolutionary innovation driven by product management.  The upper right quadrant represents the starting point – the idea generation engine. This is traditionally a hit and miss process of collecting ideas from various parts of the organization (or just a few people), and trying to pick which ones to invest time and money in. It is my belief that this activity can be wrapped in a process without destroying the creativity needed to really come up with ideas. Among the activities I consider important in this quadrant are:

  • Establish some context for innovation (see this earlier post)
  • Get ideas from everybody, not just R&D or Product Management
  • Get out and talk to customers
  • Involve your staff who are in front of customers, especially professional services people if you have them
  • Engage in structured/facilitated brainstorming with groups from various cross-sections of your company
  • Know how you are going evaluate ideas and decide which ones to investigate more deeply

The last point is important – it is no use having lots of ideas if you have no way to evaluate them. No organization can go deep on all the ideas generated, and a small organization can only really attack a couple. See this earlier post for my thoughts on using the Needs, Approach, Benefits, Competition (NABC) approach. At the end of this stage, and ideas should have a reasonable Needs definition, with a rough indication of the other three categories.

The next quadrant is what I have called Play. This is where ideas which survive the evaluation in the Ideas stage and start to play with them, flesh them out, create prototypes, and generally move the NABC definition forward. Early in this phase, the Approach needs to be clarified, while the Needs are evaluated more deeply.  Later in this stage, if a viable Approach is identified, and the Needs continue to make sense, then the Benefits and Competition need to be addressed (note that in reality, it is never anywhere near this linear, but this is for the benefit of description). By the end of this stage, we should be able to present a fairly strong value proposition for those ideas which have survived the process.

The next stage is to Build the products (ok, probably only one) for which the value proposition seems best. I will not get into the build process, except to say that the NABC analysis should be kept at the forefront throughout the process, and not be afraid to make hard decisions if things stop making sense.

The final stage is the Evolution stage, where the product moves into the incremental, evolutionary development cycle of a completed product. Note that for a new product, there may be some iteration between Build and Evolve.

Finally, the cycle is closed by having ideas from ongoing product evolution feed back into the Ideas stage.

So, is it ever this neat and clean and linear? Well, no. But that does not mean it is not valuable to have a model which you at least pretend you are following!

%d bloggers like this: