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.

Advertisements

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.