April 02, 2007

No Old Farts

So I'm looking through Monster.com for some new contracts, and I run across one ad from Hudson IT & Telecommunications that would use a tiny fraction of my skills, and which might actually interest me. However, at the beginning of the ad, they state unequivocally, "[q]ualified candidates MUST have a standard software development degree (CIS, MIS, etc.) from a 4 year institution!!!!" And just to make sure you got it, in the bullet points describing the position requirements, one item has the phrase "[...] and education in software development having one of the standard software development degrees (CIS, MIS, etc.) from a 4 year institution."

In case you missed it the first two times, they follow up with a final bullet point, "MUST have a standard software development degree (CIS, MIS, etc.) from a 4 year institution!!!!"

They really must be serious ... they used four whole exclamation points!!!! Twice!!!!

So I'm naturally a little curious ... are they really intending to exclude as candidates people whose college career pre-dates the vast majority of such degrees even being established, let alone being pretentiously named? When I was in school, they called it "computer science", and it was usually tacked on to the math department. Is that the equivalent of a community college degree these days?

March 29, 2007

Into Oblivion

Well, the socialists and corrupt politicians, and their IRS thugs, have done it to me again. The vast amounts of contradictory and ineptly recommended actions on the part of ostensible experts, business and tax books, and CPAs didn't help.

Perhaps it's time to move to a country that does not punish the people who actually want to produce value.

March 13, 2007

Buckstop

If you are the top person in your department ... senior DBA, tech lead, QA manager, architect ... you do not have the luxury of throwing up your hands and saying, "I don't know".

December 11, 2006

Success is Not an Option

Beware any manager, at any level, who thinks that the most difficult part of an effort is the decision to actually do something. Such a manager will never recognize success or accomplishment on the part of the implementation teams, but will always be eager to lay blame on those teams if they don't somehow pull the effort off. He did the hard part, after all.

Since most large companies have a multitude of efforts in a year, the implementation teams get plenty of negative feedback for the things that don't go well (because the buck always stops at the bottom), and a disproportionately small amount of positive feedback for the things that do go well (since the success was a foregone conclusion after the difficult part of actually deciding was accomplished). As a result, your implementation teams get rapidly burned out. Your only hope in a place like this is that your burned out team will stagger their resignations, and not depart en masse.

November 13, 2006

Risk and Causality

The more eagerly you embrace increasing degrees of risk, the more rigorous your recognition of causality must be in order to alter your plans accordingly. If you fail to do so, you are no longer embracing risk. You are embracing failure.

November 04, 2006

Missed Opportunity

Companies need to remember that every decision is an opportunity to benefit or harm the company. A hundred negligible acts can easily equal one significant act, particularly when you're talking about the subtleties that influence morale. Negligible does not equal inconsequential. If you delegate those decisions to someone who considers them inconsequential, you need to realize that you are doing the company a disservice.

For instance, if you're eliminating an entire office, don't offer to give their computers to all comers on a first-come, first-served basis when your IT department is desperate for testing environments. Or, as it's the time of the year for food drives, if your company is having real problems with inter-departmental cohesion and cooperation, don't make the food drive a gender-based competition (particularly when various departments are dominated by one gender or the other.)

Of course, this means that every decision maker in the company must know what's going on in the company. And since you never know who might be making those decisions, everyone in the company must know what's going on in the company. The monthly company newsletter is ancient technology. Invest in the tools, and reap the rewards.

October 31, 2006

CommercialTube

Much has been made, recently, about Comedy Central's decision to require YouTube to pull copies of the Daily Show, Cobert Report, and South Park. The move has been almost uniformly condemned as being foolish, and a good way for Comedy Central to alienate its fans, resulting in fewer live viewers.

But in a simplistic sense, it's the right move. Any service that uses ad impressions as their primary source of revenue must attempt to curtail any situation that reduces the number of eyes seeing those ads.

Or replace it.

Comedy Central and other services need to make YouTube part of their revenue stream ... either with the same business model or a new one. Not just as hooks to get live viewers, or free research with which to determine which episodes should be in "best of" DVD releases (the only kind of DVD release likely to be viable with a current events show), but as ad impression-generators as well. To make this desirable and successful, YouTube will need to facilitate the process ... soliciting contributions from companies like Comedy Central that have advertising incorporated in the video, preventing unapproved copies of the video, and providing verifiable metrics on viewers.

Unfortunately, it may be too late now. If this had been done instead of pulling all the Comedy Central content, fans might have embraced the convenience, even if they had to suffer through the same ads (although I'd hope Comedy Central would recognize the need for shorter ads in that context) ... but now the same act would be seen less as an attempt on Comedy Central's part to provide value to viewers and customers, and more a blatantly mercenary act done with total disregard for the viewers. Comedy Central, without extreme creativity, can only be the villain, now. YouTube can be the hero.

October 29, 2006

Today's Blinders

Tom Smith has decided to trot out both Socialist fallacies and an ignorance of the lifecycle of technological innovation, and since people are actually paying attention thanks to an Instapundit link, I felt I must respond.

There's rarely much hope in talking about creating the value in money, or the imaginary zero-sum game, or the fact that huge dreams provide huge motivation to those who can accomplish great things and provide so much value to the world (which then *gasp* pays for it), or any of the usual tripe-prevention, and I won't comment at length on the contemptible act of suggesting that Charles Simonyi and his like-minded dreamers fantasize about sexual promiscuity to rival some of Heinlein's characters. Those aren't within the scope of this blog anyway.

But I will comment on Smith's apparent ignorance of the life-cycle of technological innovation.

Most revolutionary innovation goes through a very predictable sequence. First is the basic research and commercial idea ... proof of feasability. Many people think it is appropriate for the government to finance this effort, although I do not. The first commercial idea is almost always bare-boned and ridiculously expensive. Its commercial success relies on rich people or corporations (or governments) buying the item.

Next is a period of refinement ... standardization of production methods, improved efficiency, cheaper materials. Entire industries can be created during this process, and the end result is typically a cheaper, but still bare, product available to the masses. Please note, however, that if the original customer of the item is a government, it is frequently unnecessary to go through this process, and the item remains in the hands of the government or major corporations.

The next step is to come up with desirable frills. Again, they start off expensive and are marketed to those who can afford it.

And the last phase is, again, making the new, full-featured product cheap enough for the masses. This is the point at which consequent innvoation just explodes.

ENIAC on one end, Napster's peer-to-peer software architecture on the other. Gramaphone on one end, pink leather-sheathed Ipods on the other. Otto's and Daimler's gas engines on one end, rural power generation and food transport adequate enough to support large cities on the other. Cameras. Cars. Computers. Boats. Airplanes. Telecom. Books. Electricity. Plumbing supplies. Fertilizer and farming equipment. Anything made of steel. Anything made of plastic.

And the future of space flight.

And all because a few "selfish" rich people found it worthwhile to buy something during the expensive steps. So really ... cheer loudly for every expensive purchase you consider frivolous, or give silent thanks to the value they provided to get rich and their invaluable contribution to the things you and your descendants will enjoy.

Or find a cave and some lightning-struck fire, and condemn to your heart's content.


Update: Hello folks from Instapundit. Welcome to my formerly quiet hole in the wall. Just to clarify Glenn's characterization of my position ... it's not that I thought that he was approving Smith's analysis. It's that I thought he was either approving Smith's analysis OR providing both soapbox and audience to his adversaries. I could not understand either act. Regrettable confusion ensued.

October 18, 2006

Observation du Jour

The management of a company is rarely composed of the people who can do the tasks of the business.

Tasks can be so ridiculously complex as to make QED look like a kid's game, or they can be trivially simple.

Two Feynman clones thrashing through the equivalent of validating a Unified Field Theory will look nearly identical to a couple of Amazonian tribesmen dealing with the complexities of, for example, "hello world", when observed from the perspective of upper management. Remember this when it looks like management considers your efforts to be "no big deal".

October 16, 2006

SQL Interview Questions

Tim Chapman has an article on TechRepublic describing questions you might ask a SQL Server database developer applicant. I think a more accurate title for the article would be "How to Make Sure You Hire a Mediocre SQL Server Database Developer." The questions Mr. Chapman suggests can be answered by anyone who has remained awake for a few of their relational database theory classes or have skimmed one book. And if you want to ensure that your prospects have, at least, heard of relational databases, by all means use these questions.

On the other hand ... well, let me give you a few examples of my interview questions:

  • What is the difference between a table variable and a temp table, their intrinsic and situational drawbacks, and some of their uses? What happens if you do a "select into" a temp table without defining the table ahead of time?
  • What constraints are there on calling stored procedures from user defined functions?
  • If you're doing a left outer join against a large table with 0:1 cardinality (hey, what is cardinality?), how might you rewrite the operation to be more efficient?
  • With regard to indices, what's one of the benefits of using integer primary keys as opposed to guids?
  • What are some of the techniques for managing record change audit trails and their drawbacks/benefits?
  • Suppose you're considering changing the parameter list on a stored procedure. How might you determine if any other stored procedures call the one you're wanting to change?
  • What should you worry about if you're using more than one SQL connection in the same operation? Does the operating system matter?
  • What's a two-phase commit? When is it used? What does it mean to have a transaction "in doubt"?
  • You have a procedure that you've been told is running too long. What steps would you go through to track down and resolve the issue?

And these are just the questions for SQL 2k. The ones for 2k5 get even more fun.

Causal Awareness

One of the companies I worked with in the past once had fits because a significant portion of the internal user base failed to change their passwords from the system default. They implemented a nicely complex process by which you register, validate, and are then forced to change your password. Which is all very well and good ... you've reduced the risk caused by that one security hole.

But to me, this was a sign that the company needed to take some serious effort raising the awareness of its internal users about security risks. Seriously, if your users aren't aware that a default password is a bad idea, they certainly aren't going to be cognizant of the risks of, for instance, "social engineering".

Obvious Item of the Day

An article at Geek News Central comments on the possible Bell re-merger. The article notes the ironic fact that breaking up AT&T and the Bells actually resulted in a stronger AT&T. I'm not sure why this is surprising, unless you fall for the "anyone who has a majority of the market is a monopoly" definition.

In a free market, monopolies only exist when they are established and supported legally ... in other words, they need government help to be viable. They need this help, typically, because they are not competitive. If you force them to compete, they grow stronger (as we all learned in elementary school lessons in evolution.)

If you supported breaking up the Bells in '82 ... you didn't have to break them up. All you had to do was remove the protection. You forced them to compete. Why complain now about the inevitable consequences?

You want to be worried about something? The author specifically mentions his time selling MCI. MCI used to be a service to allow trucks to communicate. Some guy had the bright, but extremely risky idea of converting that to a long-distance service. In order to finance such a risky venture, one extremely creative financier came up with a new financial tool. His reward? Rudy Guiliani manipulated him into prison. Guiliani's reward was to be voted mayor of New York City. What do you think that did for competition?

Give me all the "monopolies" you want. Protect me from overzealous politicians with broadly-reaching laws and a culture that thinks that Capitalism is intrinsically evil.

As for AT&T ... their re-merger will either result in better products or a weaker company, provided they are not granted government protection in the market. Either way, I win, so what's the big deal?

October 15, 2006

Hotspot ... in Your Wallet

I discovered a charge on one of my credit cards that I rarely use (and used last just for the purposes of moving). It was from T-Mobile Hotspot, the wireless service that Starbucks has chosen to use to provide Wi-Fi in their establishments. I purchased the account in order to have Internet access during the 1-week period in which I was actually finalizing my move.

They have a daily $9.99 charge, and a monthly $29.99 charge. I debated whether I would need the service more than 3 days and, concluding it was likely, purchased the service for a month.

So imagine my surprise when I see a charge for the service on my bill, go to the HotSpot site, and discover that the plan I've signed up for requires a 12-month commitment! News to me, let me tell you. Firstly, I've used the HotSpot service before, and didn't commit to any 12 months of use. And secondly, I'm a bit of a stickler for looking for little hidden ... shall we say, "unexpected charges" like that, so the likelyhood that I missed it IF the Starbucks interface wasn't specifically intent on concealing that information is highly unlikely (assuming it presented it at all, at the time).

Furthermore, as the "customer service" person told me ... once I specifically asked ... at the end of the 12 months you roll over to a month-to-month service which also continues being billed until you cancel it. Which, it would appear, you can only do by phone. So I could either cancel the service ... which I haven't used in 7 months and, I can tell you, have no intention of ever using again ... now, paying for the remainder of the year, or I have to make sure I cancel it right at the end of the year.

Look, let me honestly ask since I didn't actually go to business school ... is there a class these guys specifically take to teach them how to make their quarterly numbers at the expense of losing customers? Perhaps entitled, "why it's not really fraud"? Inquiring minds want to know.

October 13, 2006

Longevity and Obsolescence

Computers, particularly those assigned to software developers, have a very limited lifetime.

If your domain administrator gives computers generic names, the implication is that the hardware has more potential for longevity in the company than the employee using the thing.

Little things like personlizing the name of your employees' machines can make a significant difference in the psychological state of your employees.

October 12, 2006

Implied Odds

One of the things I've learned from playing poker is that players who display sophistication, subtlety, and nuance are frequently viewed as inept by players who lack these qualities.

For instance, if I'm chasing the nut flush, and my only adversary in the hand is someone who rarely protects their hand prior to the river, and never believes when their opponent makes a hand and will always call a big bet after the river, it may be worth my while to call a $500 bet with the expectation that I'll be able to acquire 5 times that amount if I do hit. In poker parlance, the odds you calculate with the expectation that you will make that amount in the end are the "implied odds", and it appears to be a concept well beyond your typical, casual player. If you can put up with being called a "donkey", or worse, it's frequently well worth the risk and effort.

Comparable situations can pop up in business. For instance, suppose you construct a demo to facilitate sales that describes the process you utilize to provide a set of services. The typical, unsophisticated reaction is to make every effort to keep your competitors from getting their hands on that demo.

But let's consider an alternative ... what are your competitors going to do if they get it?

Well, they're going to analyze your business process and poke holes in it when they're competing on a sale. Which you should already have done yourselves, so you can easily innoculate your prospects and make your competitors look foolish in their efforts. Furthermore, your prospects get to wonder why your competitors aren't open about their processes, and what exactly they're hiding, and your competitors now have to fight back against the perception of being untrustworthy. You also encourage your competitors to chase you, so while you're enhancing your own value, they're trying to match you (as I've mentioned before, exceptional companies pursue values; struggling companies pursue competitors.)

So which would you rather be ... obvious, or go for subtlety and the implied odds?

October 08, 2006

Effective Teams

Busy, busy ... on top of the things that were previously causing me to be too busy to write, I'm now looking into the Netflix contest, as well as considering some things that could be done on my current contract.

I'm trying to come up with some team-building techniques. Not the goofy feel-good things that some managers, HR, and other examples of ESFx embrassingly foist upon us, but legitimate things. I've got a situation in which we've got 5 small teams in IT, handling development, maintenance, infrastructure, DB work, and QA. They aren't physically isolated, but they may as well be for all the communication that goes on. Also, IT is the red-headed stepchild of the company. There are other issues as well ... age disparity, high turnover (both voluntary and involuntary), an absence of process, etc.

I've got quite a number of ideas I'd like to try to introduce, such as employee-driven presentations across departments, little applications that the developers can run to watch things as the happen in ops, daily online natural language lessons by various employees, etc. I've been kind-of assuming the role of a team lead, of a sort ... more of a first sergeant to the platoon. Someone who can help them work through difficult problems, coordinate emergency reaction, keep them focused or, when necessary, distract them, etc., all without having to evoke the natural animosity the troops have for the officers. But the squads aren't working as a platoon, and the platoons aren't working as a, err, company. That needs to be fixed. I have no illusions that I know best how to do this ... I'm sure my list is far from complete ... so, any other suggestions of methods?

September 30, 2006

New Things to Read

I've added a few links to the list of things to read. I'll just mention a few of the articles I found worth noting...

Making Developers Cry Since 1995, which gave me the link to The Braidy Tester, mentions a number of things that testers and, therefore, application developers should be testing. There were a number of things I had not considered and did not know ... for instance, the fact that Windows has filesystem reserved words allowing access to, for instance, com ports. And the picture is particularly disturbing. The prior entry's reference to James Shore's Change Diary, a nineteen week effort to introduce aspects of Agile development in to a waterfall environment, is also an illuminating read. My own efforts toward this end have been more subtle and even more indirect, so it's reassuring to see some success documented.

CIO Magazine also has quite a number of good articles, and should be read if for no other reason than that it's reasonable to assume your CIO is reading it. Some of the items I found useful were How to Hook the Talent You Need, which describes both a shift in skill preferences for IT staff (a little overly optimistic, I think), as well as some of the things companies can be doing to acquire and retain good staff, and Tracks in the Snow describes other interpretations of failure and success with regard to software projects (although I'm not sure why we needed an article for this ... if you're in a waterfall shop, look at each step and figure out what failure in any one step looks like at the end.)

In other news, as a round-the-clock coffee drinker who has recently been introduced to the possibility that most commercial coffee is stale, and who enjoys the lack of effort necessary, during my somnambulant mornings, to use espresso pods, I am considering an automatic espresso machine. Any recommendations?

September 14, 2006

The Enticement of Vacation

My managers at the company I'm currently contracting with are quite interested in getting me to come on full time. To this end, they keep dangling the opportunity to have paid vacation in front of me.

Vacations for software developers are interesting things. The better and more essential they are, and therefore the more justified they are in being rewarded with some vacation, the less likely it is that they will have the opportunity to do so.

The difficulty is that they're probably on a project. If they take two (or more!) weeks off in the middle of the project, they've just impacted the project plan. They could plan for after the project release, but you rarely release on time, and a late project trying to wrap up is even more hectic and personnel-critical than before, so planning for that isn't safe, either. They could plan for a reasonable period after the anticipated release, to compensate for late release, but then you're in the critical, "oh my god we've got a bug so obscure that it didn't come out in QA or UAT and no-one else can figure it out can you help, please" phase. And the reason they're having to beg is that the company has already committed them to both support for the released project and preliminary design on at least one other project.

You might say, "just take the vacation, and be damned with the company." But software developers have the most ridiculous work ethic you are ever likely to encounter. What other industry do you know in which the production team regularly works 200-250% of their paid hours in order to compensate for management ineptitude?

It's not just commitment to the work, however, but also an aversion to forcing their colleagues to work harder in order to compensate for their lack of working. Unscrupulous management (and there are many, for a number of reasons) will use this to their advantage, blackmailing programmers by their own ethics. One of the managers at my last company (after several iterations of "put in extra effort, just for the next two weeks") actually pulled the "well, if you can't work on Saturday, your colleagues will just have to work harder to make up the slack" tactic.

And that's just the developers' personal drive. Let's not even go into the whole perception of not being a "team player" thing for actually taking a vacation in the middle of a project (or not working long hours and weekends, which is why they need the vacations in the first place.)

What it comes down to is that, if paid vacation time is your biggest enticement and the means by which you distinguish yourself from other companies, you might want to have some process in place (as a joint effort between HR and project management, perhaps ... or, better yet, project management and a travel agent) that actually makes the enticement worthwhile to your team. Otherwise, your programmers are going to do the math, discover that their hourly wage is more in line with the income for delivering pizzas, and that their most significant reward is useless.

September 06, 2006

Like a Bowl Full of Jelly

Whereas previous articles warned of an obesity epidemic in the US, recent articles assert that the issue is a world-wide concern. So I started wondering if the increase in obesity (requiring larger clothes) and the tendency to dramatically fluctuate in weight during efforts to reduce weight (causing greater turnover in clothes) have influenced the textile market. And, if so, have any textile consortia figured this out to the extent that they might be promoting companies that either facilitate weight change through whatever mechanism?

I can't find anything online to suggest an answer to these questions.

September 02, 2006

Oblivious Incompetence

There's a small coffee shop in Denver called Paris on the Platte. It's one of the old-style, youngster hangouts, heavy on the pretension and patronized by whatever subculture is currently exhibiting the most angst, or the adults such creatures evolve into. You know the place ... "art" for sale on the walls by artists who claim the right to the title because their paintings are both aesthetically displeasing and only understandable by people who have the "right" intuition, blasting music designated as "cool" by virtue of being loud and having spurned the quaint notion of melody, and, of course, the heavy taint of cigars and clove cigarettes (obviously, I'm not the intended culture they're trying to entice.)

But they have huge pots of chai, chicory coffee, free wireless, and at one point had a view of downtown (although it now has a view of the condos across the street.) So not entirely without redeeming qualities.

On the gripping hand, they only seem to hire from the same population that is their target market. This is unfortunate, because one facet of the culture is the fact that oblivious incompetence is also considered "cool". Since returning to Denver, I have been here twice. Once, I left after 30 minutes because not one of the wait staff was kind enough to see if I actually wanted to give them any money. Today, the morning shift ... the entire shift ... didn't bother showing up. So they unapologetically (I mean that literally) opened up 3 hours late (to give a baseline, the parking meters in front of the place are only good for a max of 2 hours.) Given that 100% of my visits here since returning have been unsatisfactory, I'm going to have to give serious thought to wasting my time by coming here again.

A moral and a question ... be aware of the deficiencies of your target market, and weigh the benefit of hiring from that same pool in order to enhance the attractive culture vs. the number of customer you'll lose as a consequence of those deficiencies. (And, eventually, you're going to want to start estimating how many of those annoyed customers have blogs.)

The question ... where else in Denver can I get wireless and chicory coffee?

Update:
after sitting here for an hour, I can make the following statements.

  1. The chicory coffee is not as good as it used to be
  2. The wireless network is flaky ... don't do anything that requires a constant connection
  3. There is a fly problem
  4. They've just played the same song for the sixth time
  5. There is significant irony in the fact of a "right of way" policing truck parked in the middle of the road

August 31, 2006

Shirt Off Your Back

Upper management of IT teams love giving out shirts with the company logo to commemorate some milestone or event. They are usually in whatever color the manufacturer sells the least of.

I've never understood why they did this. If the goal is the usual stated purpose of thanking the development team for putting in so much extra effort in order to achieve the goal, why are they giving out the couture equivalent of a commemorative shot glass of Hoboken, NJ?

If the goal is to build the sense of being a team, isn't the time to do that before the big push to accomplish the milestone? Truly, if you're waiting until the completion of a project requiring extra effort, it's pretty likely that a sense of being part of a team has already been established ... based on shared contempt of management. Probably something to avoid.

August 25, 2006

Aspiring to Mediocrity

Exceptional companies pursue values.

Struggling companies pursue competitors.

It's reasonable to pursue competitors when the market is saturated, and any increase in market share can reasonably be considered part of a zero-sum game.

August 22, 2006

Intensity and Accountability

Most software development shops view the development team as entirely separate from the QA team. Hence you have sayings such as "throw [your code] over the wall" and "hand it off to QA". These teams are frequently managed by two entirely different people or departments. There are many consequences to this, a few of which I'll mention ...

  • An adversarial relationship, of varying degrees, is created between dev and QA.
  • The dev team views the delivery of their code to QA as the completion of their responsibility, and subsequently go into reaction mode with all their actions driven by unplanned and unexpected directives from QA (which means the dev team's pre-release "intensity" is often too low for management's taste).
  • The process defined for handing off code to QA is usually either inadequate, or excessively bloated, if any process is described at all.
  • The responsibility for actually getting code deployed bubbles up to the lowest level under which both dev and QA (as well as configuration management, deployment, support, etc.) are managed. As is true of all general staff structure organizations, bubbling the responsibility of making front-line decisions to a higher authority increases risk and decreases efficiency.

When this situation occurred in one of my recent contracts, I recommended that the developers retain ownership of their code until the final phase prior to release. The DBAs responsible for reviewing data model and stored procedure changes, as well as the QA department itself, become tools the developer uses in order to get his code delivered. This has quite a number of consequences, many of which are subtle or psychological in nature. A few of them are:

  • A single, front-line individual is responsible for the entire effort.
  • Availability of the DBAs or QA department must be planned on ahead of time, giving greater predictability and reduced risk to the process.
  • The developers will initially be "cracking the whip" over the assigned tester in an annoying and distracting manner. Therefore, the QA department will be forced to design process and procedure that is practically defensive in nature, rather than whimsically idealistic.
  • Since QA is just a tool for the developer to use, no longer a separate department, the developer is more likely to monitor, actively participate in, and facilitate the testing process. No more surprise demands.
  • Since someone who is focused on task is less able to evaluate the overall set of tasks being performed, the close association of the developer with the assigned tester will provide a "super-ego" to the process, who is more likely to evaluate the overall process and identify risk (as opposed to QA telling the project manager the night before the release that they still have 50% of the project to test).
  • The change in situation also has psychological implications on the team with regard to responsibility, focus, pressure, etc. that I consider desirable.

The company is in the process of making the change along the lines I suggested, so I'll let you know how it works out. So far, everyone up and down the management chain (including the testers themselves) finds the idea appealing.

August 16, 2006

Collaborative Protocol

Once again I skim down my list of subjects to write about, and find that Mr. Phillips at Thinking Faster has already written about one of the same subjects.

What he describes is the aggregate of proscriptions, declared procedure, custom, and common sense that become a set of "rules" or protocols by which interactions between people (whether collaborations toward mutual goals or efforts to mitigate contention of shared resources, e.g., an intersection) can take place both efficiently and safely. I call this the "framework of expectation".

In the programming world, this framework might be comprised of (in part), the corporate mission statement, the project statement of work, the requirements document, the coding style guide, and a firm understanding of the personnel hierarchy, their roles and responsibilities, and the appropriate means of interacting with them. Defining a clear and unambiguous framework of expectation is essential for completing a project in the most efficient and stress-free manner while controlling unnecessary risk.

But be aware of one problem ... people will sometimes think they know better than the framework, or think it would be nicer or more polite or more diplomatic to violate the protocol. For example, take the four-way stop-sign intersection. Every driver's handbook in America states that the first person to the intersection proceeds first, followed by any others in their arrival order. In the case of simultaneous arrival, the car to the right proceeds first. Most drivers know this and follow this, and in this way efficiency is maximized and risk of a fender-bender minimized.

But you sometimes have people who think they'll be "nice" and let someone proceed ahead of them, despite the fact that, by the stated protocol, they are to go first. Now things are broken. Who goes next? Who is to be considered "first"? Questioning looks go all around, tentative, simultanous starts and stops, hand gestures ... everyone's time is wasted, and the possibility of a small accident is increased.

All violations of the framework of expectation decrease efficiency and increase risk. Deal with them accordingly, no matter what the underlying reason for the failure.

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.


The Ivory Skyscraper

Jeffrey Phillips at Thinking Faster discusses the fact that product developers frequently forget that they are working from an aggregate, generalized, abstract "customer" when developing their products. The problem is that companies will sometimes (or, in my experience, frequently) fabricate this abstract customer out of thin air, making it about as useful for determining if your product will be successful as any other standard of evaluation that could be described as falling in the range of "fantasy" to "wishful thinking".

As an employee, go to your marketing people. Ask them what are the attributes of your customers. Ask them why the customers have the problem you're trying to solve for them, and how important it is for them to have it solved. Don't just ask them about the high-level generalizations, ask about specific items you're adding to the product. Have them show you the hard data. If they can't, better evaluate if your company is producing a solution in search of a problem or unnecessarily spending money to produce something that exceeds the basic requirements. Determine if this information has been conveyed to the management of the product development teams. If not, you're probably working for a company that can not scope down a project to the most effective essentials to solve the problem, opening the door for a more efficient and effective competitor.

One of the commenters mentioned that Unilever in India has a policy that you can't participate in a discussion about customers if you haven't spent some minimum time interacting with customers (and Mr. Phillips made a statement supporting the idea that everyone in the company interact with customers.) I'm not sure what he (the commenter) meant by "discussion about customers" unless he's referring to account managers or marketing people. Everyone else should be talking about problems. And having everyone dealing with problems interact with the customers is a bad idea, because it widens their focus from the targeted problem. If you're working on project X, don't even consider designing solution X' because it happens to address other issues the customers also have. Your architecture should be flexible enough that you can do easy additions, but considering those additions should not be on the product developers' radar at all. They didn't do the cost/effort->value analysis of the project, and are not in a position to accurately evaluate whether it is worth it to the company to do X'. Doing it anyway opens the door for competitors. Cultivating an environment in which scope creep is facilitated is dangerous.

Summary:

  • Do build abstract customers, but based on hard data.
  • Validate all assumptions about that abstract customer that aren't directly stated. Identify the person in the company responsible for managing the "customer" definition.
  • Don't go overboard with customer interaction ... marketing, business analysts, architects, and project managers to the extent that they need to address specific issues of the specific problem being addressed.
  • A product that provides slightly more for a slightly higher price may price itself out of the market if all people want is slightly less at slightly cheaper.
  • Ask the questions. Protect yourself.

Underwhelmed


I just tried signing up for the local Visual Studio User's Group. Their site has a location in which you enter your email address and click a "sign up" button. Which promptly returns an error.

Needless to say I am eager ... nay, inspired ... to become an an enthusiastic participant in this group.

It would take me, at most, 3 hours to write a highly configurable, robust (the criteria requiring most of those 3 hours) service to validate all the pages and operations in a web site. If your choice is to risk letting your company or group look foolish, why would you not spend the 3 hours? Why would you not spend a week? Why would you not spend a month?

Too expensive?

Companies that place little value on their public reputations should be avoided because they have no reason to produce exceptional products. Good companies know this, and smart consumers know this. You should have just two interactions with companies that obviously don't value their reputations ... short their stock, and open a competing service.

How expensive is it looking now?

August 10, 2006

Big Tobacco

I once heard a CEO say, after the most recent in a series of layoffs, that “we’ve got a healthy company, now.”

A little clue for all the other CEOs out there: never, ever say something like that.

True, half the people will blithely nod and say, “Yep, we surely do,” grateful that they were able to keep their jobs, if for only a little while longer. Their families are still supported, they don’t have to deal with the relationship turmoil of less money coming into a marriage, and they don’t have to see what the job market is like. They’ll be pleased that their stock options for which they put in all that past effort are still good and vesting if the real goal of the layoffs was to make an IPO more feasible.

Unfortunately, a portion of the people will actually evaluate the adjective. Do you actually have a healthy company? A more accurate metaphor might possibly be that you have a lung cancer patient, fresh out of surgery, looking forward to a term of chemotherapy, hoping desperately to live long enough to see his daughter married. And they'll figure this out.

There will be two themes in this group of people … those pensively waiting to see if the cancer has metastasized, and those wondering when upper management is going to quit their 3-pack-a-day habit. These are not the mental states you want to cultivate in your "healthy" company.

Don't choose your metaphors frivolously.

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.

July 21, 2006

The Render Principle

In 1969, a guy named Dr. Laurence Peter wrote a book in which he described a consequence of promoting on merit within a hierarchical organization. The consequence was that people get promoted because they are competent at their jobs, and eventually reach a position in which they are no longer competent. In a fit of creativity, he called this the Peter Principle.

There are a few obvious and not so obvious consequences to this. One is that, in a company which has had managerial turnover, any person who has been in the same position for an extended period of time is probably not competent to do the job. There are obvious caveats to this, and the evaluation must be made on a case by case basis … for instance, a person in charge of every absolutely critical project a company has produced over a period of years probably handles that effort very well.

A not so obvious consequence is that creative upper management has identified this problem, and has invented the idea of a “sideways promotion” in which they give the no-longer-competent person a set of duties that is more in line with his previously displayed level of competence, but at a hierarchical level equivalent to his most recent promotion. This, of course, results in upper management bloat, because someone has to do the job that is being vacated by the “sideways promotion”, so another manager is promoted to that position.

Upper management bloat as a result of “sideways promotion” also frequently changes the focus of a company from developing products to developing process (since those managers can not be put back in charge of the product development they previously controlled, but are only competent within that context and must do something to give the perception of productivity.) Companies that become predominantly process generators rather than product producers are in trouble, and this is what happened to many small consulting companies toward the end of the Internet bubble. Although this cause paled in comparison to one I will mention momentarily.

In 1990, Scott Adams (creator of Dilbert) made the satirical observation that companies promote their least competent employees to management to limit the amount of damage they can do to the company (similar to my frequent desire to have different political parties control each of the Legislative and Executive branches of the US government.)  Unfortunately, this observation had its root in fact. And, as Scott Adams intended his Dilbert Principle to be satirical, I choose to slap my own name on my interpretation of it … therefore, the Render Principle:

The problem is that, in an environment in which the fundamental production requires a high level of education or training and a creative and disciplined mind, the number of competent, not to mention talented, employees is fairly constrained. In a tight market, they become absolutely rare. So, while the traditional promotional methods require that these talented individuals be promoted into positions of management, in, for instance, the IT field, a company that did so would find itself unable to produce quality products (this effect can be mitigated by putting in procedural checks, like formalized unit, integration, regression, and user testing.)

But these companies need management that is familiar with the development requirements and techniques … therefore, they must promote from the same pool of employees. If it would be suicidal to promote their competent employees, they have no choice but to promote their less capable counterparts, evading the fact that inability to perform the minutiae of product development probably indicates a lack of understanding of the entire process. This is usually not suicidal because the competent developers frequently have such a strong work ethic that they will save seemingly doomed projects from the ineptitude of project managers, but this results in very long hours, poor home life, poor health, and general job dissatisfaction (the only reason they don’t leave for a better position is how pervasive the situation is in the industry.)

There are features of bad managers that complicate the issue and put more work on the remaining developers (for instance, interpreting their inability to manage as a lack of control of the development process, forcing them to impose unnecessary layers of process and documentation on an already burdened development team), but I will address those at another time.

Knowing this is the situation, all competent IT professionals, when interviewing for new jobs, should ask questions that will identify if they will be working under one of these types of managers. Think about what kinds of questions those would have to be.