August 15, 2006

Language Selection

Creating Passionate Users has a discussion on tool selection that I mostly agree with, and promote in all the companies I consult with. My only contention with the piece would be a semantic issue ... the use of the phrase "best tool".

"Best" is the superlative of "good", and if you hit the dictionary to look at the term, "good", you will see that it mostly deals with the nature of a thing. So describing a tool as "the best" implies an evaluation of its inherent quality. And this is why you get the religious wars about programming tools, because a thing is not intrinsically good or bad, just good or bad in a specific context for a specific purpose (a computer might be designed so poorly as to be totally useless for coding, but might make a wonderful and truly artistic doorstop.) The only way to argue about a thing being intrinsically good or bad is to fabricate an abstract ideal, and compare the item being debated to that manufactured ideal.

I would prefer the term, "appropriate" ... suitable for a particular person, condition, occasion, or place.

Selection of a tool (or language, or platform, or whatever) involves a multitude of issues. Not merely the obvious ones that were mentioned, or the subtle ones that a manager must consider such as (as mentioned in the comments) retaining talented programmers by giving them greater variety, but also the far more indirect issues such as tool longevity, likelyhood of the producing company being acquired, demand for the appropriate knowledge in the marketplace, etc.

For instance, when I was working in Baltimore, the marketplace was transitioning from VB.Net to C#. Why? I could never get a straight answer. The consequence was that there were suddenly a lot of VB programmers who either had to learn C# (starting at the bottom of the experience curve again) or find the rare VB gig. If I were a manager in Baltimore, I'd probably lean heavily toward using VB rather than C# if I could get a senior VB developer for the same price as a novice C# developer.


July 25, 2006

Corporate Cronyism

If you are trying to achieve a goal, it is entirely reasonable to hire people you trust to facilitate the accomplishment of that goal. Trustworthy people being fairly rare, people in positions of authority tend to keep the same people around them as they move from effort to effort.

People who dislike the particular goals of a person will describe this situation as “cronyism”, but the term, “crony”, implies no such evaluation of goals or methods. It just means an associate you’ve had for a long time (from “khronos”, Greek for time.) People that use the term, “cronyism”, want to imply an immoral or evil intent by virtue (so to speak) of the fact that you’ve got trusted associates around you, implying that the associates support you, not because of their evaluation and support of the goals, but because of, at best, lap-dog obeisance and obedience. They use the term in such a way that you have a visceral reaction to the term itself, avoiding the need to actually evaluate and refute the goals and intent specifically. Any statement by anyone who uses the term must immediately be given lower credibility, and greater effort and thoroughness must be used when evaluating their other claims.

However, identifying cronyism, particularly in business management, has its uses. For instance, if a CEO has a history of success while being surrounded and supported by the same staff, company after company, then that suggests that success in the current venture might be more plausible.

If, on the other hand, a CEO has a history of failures (bankruptcies, resignations for non-success, desperation mergers, etc.), and he has continued to surround himself with the same supporting staff, you must conclude one of the following:

  1. he does not associate repeated failure with himself and his decisions or competence
  2. he  does not associate repeated failure with his support staff and their decisions or competence
  3. his goal is not the success of his company, but is, instead, something that he is achieving despite each failure … therefore, he _does_ view himself as successful

Close scrutiny must be given to the situation to determine which of these is the case and, if the case is either of the first two, what the actual cause of repeated failure was (a predilection for lost causes, for instance.) Needless to say, as an employee or potential employee, accurate identification of this situation is essential.

As an employee, here’s a subset of things to be answered:

  • How many failed situations?
  • Role of each supporting individual?
  • Any individuals departing after each failure? If so, any publicity surrounding the departure, and any subsequent success on the part of that individual?
  • Is there a common theme surrounding each situation (industry, business model, stated corporate philosophy, customer type, etc.)?
  • Would this position be worth it if you only kept it for 1 year before being laid off? 6 months? 3?

Think of other things to ask, what each says about the situation, and what terms you must demand when being hired in order to compensate for the situation.