Brainstorming is a bad idea? (again)

It is amazing how a single post by the right person can stir up so much commentary. The latest I have read is One head is better than two or more. As Patricia pointed out in a comment to my previous post on this, The Medici Effect author also goes on to say:

“So, should we all stop brainstorming? I don’t think so. Done right, brainstorming is a highly effective way to actively generate intersectional ideas.”

Brainstorming, like any other human-centric activity, needs a process. Throwing a bunch of people into a room and saying “create brilliant ideas” is not an effective process. To me, this is analagous to putting a bunch of programmers in a room with no process and saying “create a wonderful product” (though admittedly, I have seen a fair number of companies try to do software development this way!). Similarly, badly run, pointless meetings with no clear purpose, and no process, do indeed make us collectively dumber.

Anyone who has ever been on an over-acheiving team (work, sports, or otherwise) knows from experience that the right team, working together with an effective process, can achieve things that none of the individuals could come close to working seperately.

Undertaking any group activity, whether brainstorming, software development, or running a business with no process or a bad process will indeed frequently lead to the result that working alone is more productive and more satisfying than working in a group. Does that mean you stop the activity? No, it means you fix the process.

Search Visualization – at least I am not the only one

There is a post About visualization tools over at Tech IT Easy. It is nice to see that I am not the only one who would like to see a better way to work with search results. Why is it that over the last 10-15 years, almost everything on the Web has become more and more visual, but search has stayed largely the same?

BREAKTHRU – New Brunswick’s Business Plan Competition

The New Brunswick Innovation Foundation (NBIF) is running a search for “the next generation of New Brunswick entrepreneurs”. So, all of you would be entrepreneurs should definitely check it out: BREAKTHRU – New Brunswick’s Business Plan Competition

(I know, this was announced 2 months ago – I can be a little slow posting things!)

Computing Infrastructure as a Utility

Just read Nirvanix To Challenge Amazon S3. I have been playing with Amazon’s web services for a number of months now, and I am impressed with some of what is there, and Nirvanix looks to be in a positions to challenge the same space. I find it interesting to look at some of the “success stories” on Amazon’s web site, reflecting to the potential for web startups to avoid large initial investments in infrastructure. Even in a well funded startup, it would make sense to focus resources on core IP, as opposed to buying infrastructure.

In my opinion, this is a more fundamental shift than many trends receiving a great deal more hype. Previous ASP hosted models, and more current SaaS models are less fundamental than this. To have a computing infrastructure that performs like a utility opens up many new possibilities.

Now I just have to figure out what they are 🙂

Hiring Programmers – the Good, the Bad, and the Ugly

I had a read through this A Guide to Hiring Programmers: The High Cost of Low Quality today, and found it very interesting. At a high level, I agree with the article, concerning the relative value of hiring the best, versus hiring whatever you can find. On the other hand, I have my own distinct opinions on this, and cannot resist sharing them 🙂

First off, despite the great content of the referenced post, the fact that it is buried in “Perl is the ultimate language” rhetoric is unfortunate. Whenever I hear anyone claim that any single language is the ultimate language, and that all enlightened programmers would use it if only they had the choice and the wisdom I get really worried (and frequently giggle). I am reminded of a statement I read once: “An idea is a dangerous thing when it is the only one you’ve got”. There is no such thing as a language which is perfect, let alone perfect for all applications and solutions. Over the last 25 years, I have programmed professionally using somewhere around 30 different programming languages. A fairly large number of those came with promises that they were the ultimate programming language. It was crap every time, and it still is. Give me a programmer with real world experience in many different languages (and many different domains if possible) every time. They have a higher probability of using the right tool for the right job, and can more easily learn new languages as needed.

Here are a few other comments I have on the hiring of programmers:

  1. Always hire the Best. This is, unfortunately, somewhat ambiguous. What does “best” mean? Does it mean the same things in all contexts? just because someone was the star of their last team does not guarantee that they will work out on your team, on your project. Also, time plays a big part. Can you afford to spend a year finding the perfect person (see point 4, below)? 
  2. Don’t hire programmers. Hire developers. While there are places on the team for hard core coding machines – people who live and breathe bits, people who can hold conversations in hex – I do not need a whole team of them. I need more rounded people (especially in a startup, where resources are tight and roles need to be flexible). I need people who can interact with users (i.e. paying customers), with marketing, with senior management, and who can understand the bigger picture beyond their debugger.
  3. More Education <> Better programmers. Many of the worst programmers I have met had Computer Science degrees from great schools. Many had graduate degrees. Some of the best programmers I know have little to no university education in software development. When I am looking for good programmers, or better yet, exceptional programmers, I am looking first and foremost for thinking ability. I want people who have demonstrated problem-solving ability. I am looking for people who know how to learn, and know how to explore things which are new to them without getting scared. I would rather have a competent programmer who knows how to solve real problems than a genius programmer who is all theory.
  4. You Can’t Always Get What You Want. Finding the people you need is never easy, and always risky. You always need them right now. You always need them to “hit the ground running”. Well, that’s not always the way it works out. You can spend a year trying to find just the right person, and after that year, you may still be searching. Sometimes it is better to find a smart person with the right raw materials (a smart new grad, or a smart person with a few years under their belt, but not the exact skills you want) and grow them into what you need. I have had a lot of success with this in the last 10 years.
  5. Years <> Experience (necessarily). I have seen resumes come across my desk from people who had been working for 10 years, but did not have 10 years of experience. They had 1 year of experience, 10 times over. I have seen people who had been working for 3 years who DID have 10 years of experience (not really, but you get my point).
  6. IT Analysts are not Product Developers. This is one I am shaky on, but I will throw it out there anyway. In my experience, most people who have spent their careers working in IT shops in big corporations have no hope of making as software developers in a product-oriented development team, especially not in a startup. There just seems to be some mental conditioning which makes it hard to do that transition.
  7. Never underestimate the impact of a BAD developer. We have all hired them. People who for one reason or another do not work out in our team. Maybe they are idiots. Maybe they were burnt out on their last job. Maybe they are really good, but just do not fit in with the team or the project. Whatever the reason, never underestimate the impact they are having on your project. Their productivity will suck. Their presence will bring down the productivity of those around them. They can kill the morale of your team (which can be pretty fragile to begin with). Get rid of them. Take action sooner than later. If you think you can save them, take action in that direction, but set hard deadlines for improvement. If it comes down to it – get rid of them. Ultimately, you, your team, and probably the misfit employee, will all be happier for it.

I probably have more brilliant wisdom on this subject, but hey, it is midnight and I am supposed to be on vacation!

Oh – one last thing. The comment “It is the difference between Apple and Microsoft” is a mindless generalization, and is not worthy of the rest of the post. Microsoft has many groups of very talented developers turning out great code and great products. So does Apple. I would only say that Apple seems to have a distinct advantage in design – and I suspect that comes more from an all-pervasive culture than from hiring practices.

Usability Rant – Searching the Web for Documents, and saving them locally

I spent much of the morning (as I frequently do on weekends) doing research on a topic which has caught my interest through the week. I use a number of sources – sometimes just a web search, often a more targeted search like ACM’s or IEEE’s digital libraries. Usually, I do not read the documents I find right away. I like to search, find a significant number of interesting papers, and then I transfer the documents to my Tablet where I can read them, mark them up, and take notes.

This morning I was searching one of the digital libraries (I will not say which one, because I do not think my issue is with a specific library, as much as with the whole web), and saving the documents out to a sub-folder in my Documents folder under Windows Vista. So, the sequence of actions was like this:

  1. Perform a keyword search on the topic of interest
  2. Start looking at the list of hits presented 10 at a time (like almost all web search – I have already talked about how much I hate this model)
  3. I click on the available PDF to view it, which opens another browser window (Rant #1: I cannot right-click and save this document because the link does not point at the actual PDF, but to some sort of delivery system).
  4. In the new window, I am asked to authenticate myself for this content, even though I have already authenticated when signing in to the document library site (this is Rant #2).
  5. Having re-authenticated, I finally get to see the document (in the latest Abobe Reader UI – which I am not too fond of either – maybe it will grow on me).
  6. I click the button to save a copy of this PDF, and a File Save dialog pops up. (Rant #3: Every time I go to save, it defaults to my Documents folder, as opposed to remembering where I saved the last dozen or so documents. Rant #4: Where ever the focus is in the File Save dialog, it is NOT in the list of documents and folders – so I start spinning my mouse wheel to scroll down and find the folder it should have defaulted to in the first place, only to notice nothing is moving, so I have to click in the list box, and then start scrolling. Rant #5: Wouldn’t be nice to have a button somewhere, similar to the Save and Save As buttons, but which allowed you to “Save this to the last place I saved stuff and where I have been saving stuff for an hour”, in one click?) 
  7. About once every 5 or 6 saves, for some reason it DOES remember what folder I was saving to, which is a good thing, but because it is not consistent, it further interrupts the rhythm of my work. (this is Rant #6)
  8. Periodically as I am going through the search results (in that annoying “10 at a time” list), I will click to view a document and once again be prompted to authenticate, presumably because my session has expired or something. (Rant #7: This should not happen. I have not been away from my keyboard, and I have not paused my work in anyway. The session time-out should detect that I have been active all this time, and should reset. I should not have to repeatedly re-authenticate.)

Admittedly, these are all minor issues. Individually, they would seem not even worth talking about. Together, however, they destroy the overall experience of what I am doing. The destroy my train of thought. They force me to break out of thinking about WHAT I am doing, and think about HOW I am doing it. They waste my time, a fraction of a second at a time. And they annoy the crap out of me!

The sad thing is that this is not an isolated experience. This is the norm, rather than the exception. The computers and software upon which we have come to depend, and which are supposed to make our lives easier, on a frequent and consistent basis, rudely interrupt us with stupid questions and inconsistent behaviour.

There is constant talk in the technology world about “the next big thing”. I, personally, would be thrilled if the “next big thing” were a concerted effort by the technology community to make the current big thing WORK PROPERLY!

Another interesting article on an Electric Vehicle

Zero Motorcycles cranks out whisper quiet electric bike – Engadget

 This is another interesting concept. Unfortunately, I have a problem with the whole concept of electric cars – at least with ones with batteries which need to be charged from the electric power grid. In terms of a solution to our energy problems, or to global warming, these really make no sense whatsoever. All they are doing is moving the problem from one place (vehicles) to another place (the power grid), where the environmental impact is potentially as bad or worse. If even a small percentage of our vehicles were switched to electric, the impact on the power grid would be enormous.

While I admire the idea behind this effort, I believe the environmental advantages are largely illusory.

Another Big Day for Whitehill

It was announced yesterday the we (Whitehill Technologies, Inc.) are being acquired by Skywire Software. This represents another big day in the evolution of Whitehill as a software company. It is also another great example of a successful, viable, important software company being born and grown right here in Moncton, New Brunswick, Canada. If you want to read more about the deal, you should look at the news releases – there are lots out there. I think congratulations are in order for Paul McSpurren and all the others who put this deal together. Well done.

It is an interesting time for me to look back over the last 8+ years I have been at Whitehill. At the time I joined, we were barely out of the “startup” stage, having only about 30 employees, and probably a similar number of customers, 1 product, and a lot of heart. A large number of people have stayed with us for the whole ride (this continuity I think has been a major factor in our success). It is amazing to me to see how far we have come.

I would like to thank everyone with whom I have worked at Whitehill all these years. Well done, everyone. It has been a wild and interesting ride to be sure, but I am proud to have been part of it, and to have worked with all of you (not that I am going anywhere – just feeling sentimental!). Everyone involved, past and present, should feel proud as well. 

I am also looking forward to the future here – and to all of the challenges and opportunities before us.

Brainstorming is a bad idea?

Looking at the quote on Marc Andreessen’s blog post Why brainstorming is a bad idea, I am forced to concede to the evidence presented, even though I am a big fan of group brainstorming. I wonder, though, if similar studies/experiments have been performed using what I refer to as “structured brainstorming”, meaning (to me) group brainstorming using tools/techniques/games designed to drive idea generation? I wonder if the results would differ?

Bill Walsh Dies After Battle With Leukemia

Bill Walsh Dies After Battle With Leukemia – KCRA 3 Sports News Story – KCRA Sacramento

Sorry to see this – I always looked up to that man. I also learned a great deal of what I know about leading teams from things he wrote and said and did.