Good Consultants vs. Bad Consultants
jacquesmattheij.com
jacquesmattheij.com
Why are there so many "scamsultants". Because idiots keep hiring them.
Nice piece, Jacques. In my younger days, I would have wholeheartedly agreed with you. (And I still agree with your major point: Don't do this!)
By now in my jaded older days, when I see so much clashing between the ideal and what's really happening, I'm not so sure.
I've spent a career cleaning up the messes of scamsultants. And you know what happens to them? They move on and make bigger messes. And more money for themselves. Sometimes, a lot more.
In just the past 5 years:
- My accountant fired his IT guy for fraud. When he told a half dozen of his associates, every single one of them asked for the IT guy's number because they couldn't find anyone. They didn't care about the fraud.
- A scamsultant for one of my customers ripped them off for over $2 million. They decided not to sue him because of the bad publicity (and embarassment). He now has a new company name, a new website, and one of his testimonials (fake, of course) is from the company he just ripped off.
- Another scamsultant convinced one of my enterprise customers to hire 80 more people into their IT department because "lack of resources" was their biggest constraint. 2 years later, they fired most of those people (who came from the scamsultant's own agency and couldn't do the job). The scamsultant is now doing the same thing to 2 other enterprises in other parts of the country.
- A scamsultant tried to split the commission with my co-founder on her side hardware business. She told the customer who immediately fired the scamsultant. I just saw him driving a new Mercedes SUV into another local customer's parking lot.
- A scamsultant set up the software to (believe it or not!) funnel every 5th customer credit into his own bank account. It took the auditors 2 years to unravel this. He was promptly fired, but never prosecuted (embarassment, I presume). Now he's selling new e-commerce software to new suckers.
- Another customer hired 20 .net programmers through a scamsultancy. After 2 years, they had produced nothing. They were all fired. I stayed in touched with quite a few of them. They are all still working.
As long as people value money over ethics, this shit will always happen.
Don't do this, but don't be surprised when others do and get away with it.
How did you get into your "cleaning" type of job?
Usually, it's a matter of short-term thinking. It is a human tendency to discount long-term benefits against short-term costs. Where it's not, it's because people want to be "nice" and not be the bad guy. They will go along with people who don't mind being the bad guy.
And then there's my personal belief that in any given job role, a large percentage (possibly the majority) of people are not competent. By competent I mean that any situation which may arise as part of their job and involves a professional decision can be handled by them in a competent way. Most people aren't actually able to do their job without someone guiding them from above and supervising them in that job. This applies also to the people hiring and supervising them, which in the average case are not able to hire and supervise competently without supervision. This chain continues all the way to the top of a company, and as a result most companies are not actually able to do their job competently without constant adjustment from their customers or shareholders in the form of complaints, lawsuits, etc... That's probably why many consultants are not competent, and why they still get hired, because the people who hire them are not competent in hiring consultants. Never ascribe to malice what can adequately be explained by incompetence.
This is why I have brought a carbon copy of The Mythical Man-month after reading pirated pdf.)
It's like the tray at the 7-11. You take pennies from the tray, right? We just do it from a much bigger tray, millions of times.
There's a third branch, usually called something like strategic consulting. This is where you hire a bunch of young people from good universities with impressive resumes to tell your clients (executives at large companies) what they already knew and want to hear so that they can in turn use it to justify whatever they wanted to do before they even met you.
The world is not fair so this is the most lucrative branch. And you take no hit to your reputation. Quite the opposite, you benefit from associating with your high status clients.
Or maybe it is fair. It's pretty hard to get into that.
I'm not sure it is a matter of fairness or not, but there seems to be a real "pain" that management consulting solves. In the most prestigious firms, it's quite a better business than most. Low-competition, high-margins. We used to call it a "revenue business": revenues are so much larger than expenses that what the firm tries to optimize is the former, not the latter.
Also, does anyone knows a startup that is run like a firm? I find it a really interesting model. I would love to know if anyone knows of one that does.
A key insight is the role of business school theorists, particularly Michael Porter.
Porter essentially looked over the fence at economics, saw what the economists introduce as the bad behaviours and outcomes of monopolists, then taught that as behaviour to be emulated.
I had a boss who hired some outside consultants to "find out what our IT department should do in the future". They had no experience in our industry. They asked me some questions and wrote down my answers. When they turned in their report, the boss was happy. For this, they charged $20K.
Usually it will not take 10', 100's or even 1000's of hours to know which way things will swing in the long run.
An example is that we're not allowed to use crash-analytics tools but we are however allowed to insert Google Analytics.
It's very irritating to see so much money lost.
Funny thing is if we where in house accountancy,legal or hr consultants we could enforce our requirments.
I lost count how many tricks I saw being done in the name of such practices.
Any of them will do.
Because of this, consulting exists somewhat differently to startups as well. In the startup world, your aim is to delight the customer. If you apply that same principle, you'll be tempted to say things that make people happy. I'd argue proper consultant or advisor in any field (whether IT consulting or management consulting) must be able to make a judgement concerning their expertise or their analysis regardless of what 'wants' to be heard by their prospective client (in lieu of how much they might be paying them).
But we certainly don't make money for our customers. We save them money, we eliminate some hassles and downtime, but that's not really the same thing.
So I'm open to hearing that we're doing it wrong, but I don't know what doing it right would be, especially since we aren't really getting rich, and we've got a bunch of customers that have been with us for years. I'd like to change the way the business works at the beginning of next year, so now'd be a great time to start figuring out how to do it right.
I don't see how what you're doing isn't the same as making customers money. You save them money, all else equal they make more profit, that's what matters. Plus the fact your customers choose to stay with you suggests they feel they're getting positive value and not being taken for a ride.
If saving money isn't materially the same as making money, and maximising revenue is seen as the only way to create value, that sounds ridiculously 1 dimensional and like terrible business to me.
And some processes need to be streamlined not even to save money in the short run, but simply in order for the company to understand them and regain control.
Put like this maybe it doesn't sound very exciting or useful, but it is (useful).
I'm in the same position as you (running a small development/consulting shop) and it made a world of difference when we started changing the perspective of our pitch to clients from "yes, we can build a website, it will cost $X" to "yes, we can solve that problem for you, which will save/make you $Y".
Telling that Java is a wonderful thing (safe, mature and standard, so no one would blame you) would make you a "good" consultant. Telling that it is mere "piles upon piles of crap" wrapped in tons of BS (written by "good" experts) would never give you any good. I have tried.
There are SAP consultants also. These are just salesmen on commission. All lies and manipulations are good as long as it help to sell.
But you are right, my example is a little bit irrelevant. SAP would be better one.
Seriously, nowadays tools are so good, that you could really write in any popular language you like (in fact - in a few at once, depending of which one fits better for a sub-task).
The internet services, for some reasons, are not (mostly not) implemented in Java. This site, for example, is powered by author's very own dialect of Lisp. Slashdot has been written in Perl, Reddit is mostly Python.
The real problem is still software complexity and lack of programming/engineering (not coding) skills. Problem is with modeling and [de]composition, not with coding. Coders are cheap.
The business of [outsourced] Java sweatshops of unskilled coders "getting shit done" by quickly picking up methods out of IDE's context help without any understanding of underlying principles is like a whole sector of economy. Products they made in the most cases are exactly what they themselves call it - "shit done in exchange of salary".
But this subject is irrelevant here.
They also do some Common Lisp on the airline search division.
btw, Common Lisp is a "strong typed" language, and many large enough code-bases were here. Lisp machine ecosystem is a good example.
A lot of banking software has been written in 4GL and stored procedures (SQL). When Oracle stuffed its products with Java it was not necessarily an improvement, rather things became more difficult and messy than before.
I'm not sure how widely Go is being chosen (over say Java) for new projects inside Google. Maybe some Googler could clue us in?
> btw, Common Lisp is a "strong typed" language,
Can you point me to a code example? The ones I did find didn't have any type information in them.
> A lot of banking software has been written in 4GL and stored procedures (SQL). When Oracle stuffed its products with Java it was not necessarily an improvement, rather things became more difficult and messy than before.
Banking was just an example, and I'm sure they are plenty horror stories there involving Java (esp. when used in some awkward way). What I wanted to say is that IMO the effort to build and maintain large code base in for example Python would typically be much greater than in Java. For small code bases, I'm not sure who wins - the development phase will obviously be faster in Python (which is the only thing that matters for startups - hence python/ruby/... popularity here), but maintenance will still be a pain - after the initial devs leave, hires will need to learn that Python codebase, and lack of type information will make it harder.
* (type-of 1)
BIT
* (type-of 123)
(INTEGER 0 4611686018427387903)
* (type-of "hi")
(SIMPLE-ARRAY CHARACTER (2))
* (type-of 'hi)
SYMBOL
*
And there is also typecase macro which is basically cond on type-of - the way to do dispatch on a type.This technique of extending a language with new special forms using macros is the essence of Lisps.
What Lisp is lacking though is type declarations for variables, method parameters and returned values. These make codebases immensely more readable.
A usual type declaration looks like this:
(defun month-name (month)
(declare (type (integer 1 12) month))
(the string
(ecase month
(1 "Jan") (2 "Feb") (3 "Mar") (4 "Apr") (5 "May") (6 "Jun")
(7 "Jul") (8 "Aug") (9 "Sep") (10 "Oct") (11 "Nov") (12 "Dez"))))
You can also declare the type of the function, outside of the function: (declaim (ftype (function ((integer 1 12)) ; the parameter list
string) ; the return value
month-name)) ; the function name
CLOS (the Common Lisp Object System) was added a few years later. CL-USER 1 > (defmethod add ((a integer) (s string))
(+ a (parse-integer s)))
#<STANDARD-METHOD ADD NIL (INTEGER STRING) 402005B1C3>
CL-USER 2 > (add 12 "23")
35
What do you think the words 'integer' and 'string" are about?Quite widely, for new projects.
In that regard it has been fantastically successful.
In my opinion, Java's "success" is a like a "religion". It is relatively easy to make money on "believers".
Nevertheless, facts are that in telecoms we have "success" of Erlang, in Android we have "success" of NDK, on server side there is everything mixed, and if someone would collect statistics of failed projects and project went hugely over time and budgets Java would be on the first place. And here, in my opinion, it would be a more of causation, not mere correlation.
Let's stop here.
> In that regard it has been fantastically successful.
It allows median programmers to work for years on large systems, yes, and usually to maintain them as well. That indeed has been my experience.
However, in my experience, it is not those median programmers that actually built those systems, and wouldn't have been able to. Much better skilled individuals did.
In my experience, large systems built by mostly median programmers tend to fail (or never even reach production status), regardless of the implementation language. Which is to be expected, since system complexity is often inherent. However, it seems like the idea that "all programmers are just replaceable cogs" and thus that's not the case is way more prevalent around Java (and to some extent .net) than around other ecosystems.
Java has been fantastically successful in the sense of keeping armies of programmers employed maintaining large systems, and at keeping those systems running. Personally, I suspect that most of those cases could have been fantastically more successful if they didn't use the "replaceable cog" model that for many projects is Java's core feature - but of course I cannot offer any proof.
Alot of web-development consultancies however, as far as I can tell (primarily the culprits I think), are run by business-minded people who are great at marketing and advertising and networking, but don't understand how to get the right kind of talent in the door. They get the lucrative deals, but have no idea that they don't have the talent on board to make it happen. I've "cleaned up" on a few of these in the past.
Also, there's people like me who start their consultancies without as much business-sense as tech-knowledge, and so you learn quickly what your limits are and to not over promise and under-deliver. An iterative approach helps ensure your mistakes are minimal and generally not impactful in a negative way on the overall project.
Finally there are (yes they are rare, but they do exist) overbearing clients who manage their people and their consultants like it's a sweatshop. Generally speaking I find that it's hard to extract a perfect set of requirements out of a client when in the early stages. I find that an iterative approach is best suited for clients, thus the full picture is not completely understood when the project begins. Most of the time the client appreciates this lean / scrum-like approach, and so it helps me extract requirements throughout the life of the project. The overbearing client, however, sees this as a window of opportunity to take advantage by increasing scope, or changing directions completely, and in some magical way think they'll be able to squeeze you for your time and expertise to get a bargain basement deal. I have an at-will clause in my contracts for exactly this type of client.
I was working recently with a hiring manager at a digital agency in London, sifting through some CVs to help them find another contract developer. One of the CVs was of a guy I'd worked with a couple of years before; I said, "Ah, I know this guy. His work was decent enough, within reason, but his attitude was quite problematic and he was pretty aggravating - I don't think they terminated him early, but it was a close call." I pointed out that his CV in the two years since I'd worked with him bore evidence of that attitude - lots of very short contracts which plainly hadn't been extended. The hiring manager put his CV in the reject pile, unread, on the strength of my non-recommendation.
There are over a hundred digital agencies in London, though - and that guy isn't going to have worked at enough of them, throughout his entire career, that his bad reputation would really precede him at every one. In fact, he could do a three month stint at half of them and that would still be a good chunk of a career. Or he could move to a different branch of the industry (finance, let's say) where he wouldn't have any reputation at all.
So, I wonder, is IT really a small world? Does an individual's reputation really matter that much? It's certainly helpful having a good reputation for all the obvious reasons - but does it really hurt you that much to have a bad one?
For example, if you are making revenue of $1mill/year, and a "IT specialist" consultant convinces you (legitimately) that they could increase that by X% or give you X% in savings, then how much is that person worth to you? Certainly some non-trivial fraction of X%. But often there are people who don't do this math and are confined to thinking of consultants as labourers and then they try to drive it on price.
They are not stupid people, but if you step back and take a look at the company, you can see who is holding it back.
Sometimes they would win contracts by basically bribing the hiring team with cash incentives. Once he told me that one of the these guys asked for the money for cash when they were out entertaining at a strip club. He wanted the money there and then for girls and coke.
It's worth bearing in mind that some of these kickbacks might be going to employees in your own company.
Every once in a while though he sets me on a ridiculous project that is the financial equivalent of digging a hole and filling it back up again. I see pet projects like this all the time at the bank. At least there, it isn't impacting people's personal bottom line. This guy's motives for them, I don't understand at all.
Why do you still accept work from him?
Next.