first_page

What’s most busy about the IT consulting business…

The highest demand skill in the IT consulting business is never asked for explicitly by clients and has nothing to with technology. The highest demand skill in the IT consulting business is the ability to undo the mess your client got himself into—and I deliberately use him because this is really a guy thing. We have all heard tales about guys that refuse to ask directions when driving completely lost. Now imagine trying to be a “team player” with a guy that is in your opinion lost—and you know that your opinion has little effect on the situation even though you have been hired as a “consultant.” This has been the running theme for most of my career—only in recent years has my work with clients made a turn for the better.

An excellent mental health exercise for an IT consultant is to examine the word professional—instead of just blurting it out. Inside this word is profess—what this means to me is that a professional has the ability to “claim openly” or publically. The ideal engine driving one to make such “open” claims is fueled by accurate, researched information. In the IT business, accurate information comes from the tool makers like Microsoft, Oracle (Sun), or the auspices of an Open Source project—maybe a University. When your client fails to recognize the existence of this third-party research while at the same time using said third party’s tools then in my opinion you are up shit creek—a creek probably polluted by the company that hired you…

Here are some things that can happen while you are up shit creek:

  • The definition of “professional” changes into the ability to put lipstick on a pig in an elegant, quiet, polite manner. Pay that mortgage and shut the f’ up.
  • Your client is effectively in conflict with their tool makers. This means you are fighting on about three fronts: battling the actual business “challenge”; battling the tool maker; and battling legacy issues associated with the new “challenge.”
  • Your client may wonder why you are unable to perform “professionally” under these circumstances instead of actually looking at the real problem. It’s a childish, fascist impulse that is almost impossible to resist. FOWA 08 - Password Anti PatternIn the same manner Warren Buffet would refuse to invest in company he does not “understand,” you have the human right to invest your energy in other companies, organizations and other parties that appear to actually have a professional technology plan. In the same manner that business planners are expected to summarize their strategy with a single coherent sentence, your clients should have provided you with enough information to profess their technology plan with a single coherent sentence. Sometimes we may confess instead of profess (listen to “this developers life 1.1.1: scars”)…

From my experience, the leading reason why clients get themselves into a mess (they have tacitly asked you to get them out of) is because they have ignored/defied their tool maker. Your client and you are swimming a soup that the tool maker never told you to cook. It has taken me way, way too long along the timeline of my career to actually get proactive and begin to look for patterns (actually anti-patterns perhaps) of such ignorance and defiance. I confess that I tend to concentrate on researching my tool maker (Microsoft) instead of researching “bad” (but cash rich) clients. I am unable to even recall a book about this subject—especially in the Microsoft world. I have no pipeline in place to collect such information. My attitude has been one of aggressive divestment a la Warren Buffet—which should strongly suggest that I have no mortgage to pay. Oh, when will I grow up?

Here are some Microsoft-centric 30,000-foot anti-patterns I can barely recall:

  • Using Microsoft Access (*.MDB) as a LAN-based DBMS for dozens of users, when it was designed for one user on one desktop (c. 1996).
  • Using Microsoft Access as a database for a web site (early 2000s).
  • Running ASP sites with global DLLs that get locked by the Web server process (early 2000s).
  • Using Microsoft Office effectively as a frontend (without SharePoint) while using Java-based server technology as a backend (UCLA MCCS, early 2000s to present).
  • Using Microsoft FrontPage for anything (all eternity).
  • Using Windows Forms 1.0 for anything (all eternity).
  • Using ASP.NET Web Forms and Server Controls with a view to being standards-compliant and cross-browser compatible (early 2000s to 2010, yes 2010).
  • Using JavaScript according to the Microsoft-tooled vision of Jscript (early 2000s to 2009, with jQuery).
  • Using more than a handful of ASMX Web Services per ASP.NET project (for all time: use WCF).
  • Attempting to customize SharePoint (for the lifetime of the product to the present …perhaps).One of the mature things I have accomplished recently is consciously accepting that my tool vendor, Microsoft, was not exactly fostering a culture of tool-maker compliance for many years. Microsoft has profited to the tune of billions with the rollicking banjo music of wild-west mentality… The earliest technology evangelists from Microsoft that I can recall are: Alison Balter (1994), Paul D. Sherriff (1991), and Don Box (turn of the century)—none of these folks left me with professional theories that I can recall (apart from Relational Theory and this little thing called “OOP”). Now we have the Scott Guthrie generation at Microsoft, trying to introduce a cornucopia of publically-accessible theories to customers with acronyms like MVC and MVVM in the face of massive legacy—Wild-West, COM-based legacy written in HTML (using all caps for tag names) and this weird thing called “HTC”…

Microsoft has two massive product spaces: Dynamics CRM and SharePoint. As of this writing, deep into the 21st century, none of these products reflect the new Scott-Guthrie-style professionalism that should make serious investors happy. Microsoft itself has a Wild-West legacy load that it is digging itself out of… because old cash cows can’t be abandoned for greener pastures…

Related Links

rasx()