Random Thought

I was watching a rerun of Boston Legal the other night, and this quote caught my attention – not all of you will understand why, but some might… 

“It’s sad, how you go from intimacy to nothing, cold turkey. I mean, how many people along the way have true meaning in your life, and to suddenly have no contact, and….it’s sad.” – Denny Crane (Boston Legal)

Interesting post – Conspiracy Theorists and free software

Here is an interesting post on the prevalence (or at least existence) of conspiracy-theory-types within the free software movement (actually, they exist within any community). However, this article points out something which I have said before, which is that these people, and other zealots in the open source world, do far more damage to the credibility of open source as a whole than any opponents of open source ever could.

Eventually, the pitch “we are better because we are not Microsoft” is just not enough, and in fact, begins to hurt the movement.

Transitions

So, today I am moving on from Whitehill Technologies (now Skywire Software). I do so with many mixed feelings. When I look back on what I have achieved here, many things stand out. Helping to grow the company to the point where it became a meaningful acquisition target I think is a tremendous accomplishment. We have also developed a great deal of very cool software, and more importantly, software for which real people were willing to pay real money. To have accomplished this from Moncton, New Brunswick, Canada, is a great demonstration of what we can achieve in this region, and is something which I hope to repeat in the future.

The most important aspect of the journey, though, is the people. Having spent the better part of 9 years here, I can honestly say that there are very, very few people I have known here with whom I would not eagerly work again. I would also like to think that I have contributed to the growth of many developers (and other staff). When I joined Whitehill, the development team was very young. Most had only a couple of years of experience. It is extremely gratifying to me to see what has grown out of that team – people who have become technical leaders, managers, and all-around leaders. I cannot express the respect I have for what this group has become. I like to think that I contributed in some way to that growth.

Looking back, there are many people who stand out. I miss the early days with Bob, and Bonzo, and the excitement of working with a small, tight team. Then, of course, there was the winter in a construction trailer in the parking lot with 8 other guys, porting Transport to Java.

There are too many people to list all of them here. First and foremost, I want to thank Steve Palmer. Steve has always been the epitome of professionalism, respectfulness, and generally “doing the right thing”, and I consider Steve to have been an important mentor to me. Among the early developers, Shawn Hogan, who had leadership written all over him 8 years ago, has fulfilled that potential and more. Jerome Sabourin, Greg Clouston, Andrew Sharpe, Anita Richard, Rob Stote and too many others to mention. I am very proud of, and have the utmost respect for, all of you.

It has certainly been an interesting ride.

All of you, take care. I look forward to seeing and working with you all some day in the future.  

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.

Treating employees well

“The true measure of a man is how he treats someone who can do him absolutely no good”Samuel Johnson

Many companies claim to treat their staff well – claiming in fact that people are their greatest resource. In fact, I am pretty sure that I have never heard a company claim the opposite – when was the last time you heard a company loudly proclaim “we treat our staff like crap, and we’re proud of it”? Maybe these companies do exist, albeit briefly. I guess the companies which actually think this way do not make a point of mentioning it.Thinking for now, however, just of the companies who do claim that they treat their staff well, I have come to believe that there are two main groups:

  1. Companies which believe that you treat your staff (and everyone else, for that matter) well simply because it is the right way to be. There is no analysis of the ROI of being respectful. There is a fundamental belief in the right way of doing things, and a corresponding confidence that doing the right things ultimately leads to long term success.
  2. Companies for whom “treating people well” is a strategic decision, accompanied by detailed analyses of the ROI which will be achieved by treating different people with varying degrees of “rightness”. For these companies, there is no right or wrong here, it is merely a way to coerce the people upon whom the company relies into doing what is best for the company.

The difference between these two flavours of “we treat our employees well” is frequently made most clear when someone is let go – when for one reason or another, it is determined that a given individual is no longer of value to the organization. Companies in the former group treat outgoing employees with the same respect and kindness as they have all along. Companies in the latter group, on the other hand, show their true colours at this point, and will generally treat outgoing employees only well enough to avoid being sued, no more.So, which kind of company do you want to be?

Five easy ways to fail?

Ok, so I just read Five easy ways to fail, which itself is just a quote from his article on Inc. Magazine. While I usually find Joel’s stuff intelligent, even when I do not agree with it, and I actually agree with much of the article, the piece quoted on his blog is one of the most mind-numbingly stupid statements I have ever heard outside of a political speech.

“Even though a bad team of developers tends to be the No. 1 cause of software project failures…”

I have never seen any statistics which support this statement. In 20+ years, I have never been part of a project (either as a member or as an observer) which would support this statement. I have been involved in projects where stellar teams overcame bad management, bad scheduling and many other common obstacles, but never have I seen a well-managed, well-thought-out project fail because the programmers just were not smart enough. I would challenge Joel to provide any evidence to support this.

Then again, I have never seen anyone stupid enough to have hired an entire team of stupid people, and then been stupid enough to keep them. If this is the case, you have a much more serious problem than dumb programmers.

Also, while it would be nice to have the luxury of hiring only exactly the developers who fit your profile, that is a luxury most of us do not have (see my previous post on hiring). The reality is that you are almost always going to have a distribution of talents on your team – you are going to have stars, you are going to have duds, and you are going to have everything in between. I am always guided by an article I read in Harvard Business Review many years ago, where the late Bill Walsh talked about building great teams. The basic idea was that in any team of ten people, you are typically going have 2 people who are so good, they are going to over-achieve no matter what you do. You will also likely have 2 people who will under-achieve no matter what. The six in the middle may under-achieve or over-achieve, depending upon how they are led. And the deciding factor as to whether you have a stellar team, or a failing team, depends upon how those six in the middle are guided/managed/coached/led.

To say that most projects fail because the team is not competent is not statistically supported, is overly general in the extreme, and smacks of the kind of statement bad managers make to cover the fact that they are bad managers.

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!

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.