Ignorance vs. Negligence
Recently there have been a few posts about people who... misrepresent themselves when it comes to knowledge and authority. A common question that came up in the comments of those posts was to specify who the guilty party is, if not by name, then a description.
First, I want to be clear about the separation I am making. I am seeing a lot of bad code, and I posted some choice tidbits here in the past. Some of it is inexcusable in a software professional, some of it is valid, because the author is not a developer.
I don't have any issue with bad code coming from people who are not developers (but if you call yourself an architect, and you can't code, get thyself away and ponder your sin). I can either work with them to make sure that they will be developers, or limit the amount of work they need to do on the system.
What drives me into sputtering rages is seeing so called professional developers and architects who couldn't find a clue if I hit them with it. Some random stories, all by professional developers and architects, to make sure that I am clear about who I am talking with.
- Senior Java Architect calls a high level meeting to discuss my "unreasonable behavior", I am not willing to give him access to the application database. My objection to the needless coupling is "unreasonable, and there is not other way to do it". My suggestion that I'll expose a web service that will be called from his application is "obvious impossible" because "java can't consume web services from .NET" and anyway "java doesn't support web services"
- The Project Manager whose stated goal is "have very stupid code, we want to hire stupid people, they are cheap" for a business critical application.
- A team that suggested "hot new tech" that they "have several experts on" that can "make miracles with it" which turns out to be a single guy that read a blog post about it and "really we intend to use this vital project to learn this technology"
- Senior Developer who designed a three tier system for serving a page. A request arrives, the page puts a message in a queue and then does a synchronous receive from another queue. Another machine that process requests. The message is an SQL statement, with no parameters allowed. There is no concurrency control in the app, so two pages making two totally different requests can get each other's results. I couldn't follow the reasoning for the decision, but apparently it has something to do with performance.
- Developer who built the "thread per row" batch process, and actually had a bigger server bought to handle the "big application" that processed "lot of business critical data (15,000 rows)"
- The Senior Consultant who took the code with him on a USB key whenever he left home, as a "theft precaution"
- The consulting company who we had to go and fix things after, where all the tables were named "a1" to "a46" and the columns "b5" - "b91", an explicit design decision to keep them in place.
- The Expert that had a business buy a 40,000$ BizTalk solution to do copy of one directory to another. We ended up replacing that with a scheduled task that executed: "robocopy \\server\dir \\anotherserver\dir" every 5 minutes.
- Whoever it was that designed MS CRM
I could go on, but this is a good representation of the types, I think.
They all have a few things in common, they represent themselves as experts, senior, knowledgeable people. In all those cases, they have actively acted to harm the business they were working for, by action, inaction or misaction.
I have no issue with people not knowing any better, but I do expect people that ought to know better to... actually do know better.
Comments
I couldn't believe what I was reading. I'm the sole IT guy for a family run business, so I've really never run into management of any kind before.
I was recently considering a career move to work for a large company, but now you have me worried. Would you say a majority of senior / management people in the IT industry are this stupid?
.
João: Yes. Yes they are.
Yeah, but there is still a difference between "actively acted to harm a business" and "intentionally acted to harm a business."
All those things you mention are very familiar sounding, I could add a number of different descriptions. But in many cases, these people were simply incompetent idiots. Only a few were what I would call actually malicious.
But this is true of life, not just IT. Have you heard of the study that came out a few years ago that showed that incompetent people were not competent enough to know that they were incompetent? Apparently this is a trackable, confirmable pattern in human psychology.
The examples you give are completely different from those who are talking about 'community leaders' who are actively misleading the community for reasons of glory, etc. and yet refuse to actually describe whom they are talking about, except in vague, pretentious, charlatanish (that is a word, I looked it up) terms.
@jdn
I agree that there's a difference between having some random "senior" person you work with and a "community leader" being incompetent. I still feel that if any of the above "senior" people are passing themselves off as experts, they lack integrity, but I understand that's somewhat subjective.
I think that point is that if you are holding yourself up as a "community leader", you have an extra responsibility to know what you are talking about. Ignorance may be a legitimate excuse for a worker, but it is not acceptable in a self-proclaimed expert.
I would prefer that the senior people I work with are not wearing the juice but I also realize that can't be helped. ;)
Jaos,
At times, it seems like anyone I meet is like that, but this is probably because I tend to forget the decent guys.
No, it is not even the majority, but this is certainly a common enough occurrence.
Funny enough, I almost wrote a comment saying a lot of the same things, as in, the real evil exists at 'X', which you do a great job of pointing out.
The problem is that Bellware in particular has a tendency to point the gun at other people who simply disagree on minor points - rather than pointing the gun at people who truly deserve it - the kind of people you highlight in this post.
There is a tendency at the extremes of politics to have a "I am more lefter than thou - I am more right than thou" kind of rhetoric. Frankly, however, it is a self-defeating distraction that, the less we blog about it, the better off we are.
I feel dirty already just talking about it. Off to take a shower :)
Jdn,
I agree about actively vs. intentionally.
I do expect self proclaimed experts to know whatever they are in too deep. I would be interested in learning more about that study, btw.
You want clearer examples?
A MS evangelist that tried to convince my management that SharePoint 2007 was THE thing to use for a complex application that has strict UI requirements and nothing to do with documents or lists.
Wait a few months and you will see the "SP is everything" crowd move to say "EF for everything", just because now it is now what MS is pushing.
I am not going to name names, that is not what the purpose was. I think that the descriptions are clear enough.
Tell me about it.
I've just been working for a 50 person software house where the 'architect' is routinely described as 'The Genius'. The Genius' idea of a .NET web application is a huge class littered with Response.Write. Luckily Microsoft introduced partial classes so he's been able to 'factor' the code into many smaller files. They have one 'product', but a separate code base copied and pasted for each customer and slightly customised.
Experts eh! Lucky I'm not one :)
Brian indirectly gave the link, here's the study:
http://www.apa.org/journals/features/psp7761121.pdf
Have you considered that the MS evangelist really did think MOSS 2007 was THE thing (I can guess one person who it might be)?
Maybe there are those who will say "EF for everything" and it is because they believe that what MS is pushing really is that good.
I think it's really easy to question the integrity of others, especially when the people doing the questioning are cowards who have no integrity of their own (not you) and making anonymous slanders, but I think in almost every case, it is clearly more a case of incompetence than malicious behavior.
Which isn't to excuse it. But i think there is a categorical difference between calling someone stupid (and I can say this because I myself am stupid) and calling them, for lack of a better word, evil.
The management here also plays a key role of giving these kind of people enough permissions to go in the wrong direction without listening to other's openion and they could be cheated easily by someone mouthful who claims to have X # of years.
The MS Evangelist was also a product expert, so he was at least supposed to be familiar with the capabilities of the product. He was also giving this recommendation based on very little information about the project, and simply ignored all points to the contrary. No, I don't think that this is a case of thinking that it THE thing for the project.
Hell, one of the things that I do when I recommend NH is to qualify that with the possible objections. That is because I believe that I have the responsibility to make sure that they understand what they are coming to.
There have been several cases where I told people, Yes, NH has support for stored procedures, and yes, you can make it work, but no, you don't want to use NH in such a situation, it takes away a lot of the power, go look at iBatis instead.
That was the responsible thing to do, not sell them NH and then make a profit out of consulting on solving their problems.
If you believe that "EF for everything" because you have tried other things, and according to your judgment this is true, more power to you. But the people I am talking about are going to say "EF for everything" because it is the latest thing from MS.
So, he has a hammer and sees everything as a nail. Again, I say that's an issue of competence.
I agree with your tactic about the responsible thing to do, but that's because, at least in this instance, we are competent enough to know to put in all the qualifications because we know they exist.
But that puts you in the same spot as my post does, doesn't it?
If you call yourself an expert, you are under the obligation to know enough to recognize your own limitations.
I don't have a problem with ignorance, that is curable, I have problem with willful ignorance and masquerading as someone you are not.
My favorite are all the architects who don't write code. I also am biased against people who dropped out of college because they thought they were too smart, and guys who recommend using Biztalk manuals for anything other than to prop a short table leg up off the ground.
But that's just me.
Ok. I'll grant you that.
developers think too much of themselves, some of those architects will read your article and shake their head in agreement with you... and still can write good code
sorry, I meant "still CAN'T write good code"
If they agree with me and write good code... where is the problem?
Hm,
If they are aware of that, great, they can improve.
If they can't, they belong to the first category.
@Ayende
"Wait a few months and you will see the "SP is everything" crowd move to say "EF for everything", just because now it is now what MS is pushing."
O.o
but....wouldn't that be...like....paradise??
/Mats
Irresponsible advocation of a product that they haven't studied in depth and compared to what else is out there, no, it is not paradise.
http://despair.com/consulting.html
"Have you tried JavaScript?!" :D
" Irresponsible advocation of a product that they haven't studied"
We will never be rid of that. The only variance concerns what happens to be hyped. Days when chance has it such that something good is accidentally hyped are better days than others.
And compared to days when SharePoint is being hyped, other days look a lot like paradise.
/Mats
Its funny but when you start your own company you suddenly cant justify a lot of expenses and licenses.
Instead of a full windows server license I've just been using Mono Framework and Linux for some scheduled processes.
As Ayende mentions, I believe it's all down to knowing your boundaries. I believe everybody is good at something. If that something isn't software development, then find another job. I'm not sure what it's like elsewhere, but the London "contractors/consultant market" is full of people who, for some reason, manage to charge ridiculous sums for doing poor or average work. These give a bad name to the others who are passionate about their work and do a good job. Unfortunately, the people who make decisions often get fooled by talk from people calling themselves "experts".
To be added to your list is the data architect who championed the "new concept of the one-table-database-solution" as a backing store for a large knowledge management system. Ultra-flexible, it's genius, I tell you!
Two projects on the go - very similar - two teams. The two user domain design teams realise that they both need essentially the same dialog - they design together and the coding task is given to team 1. A little while later the team 2 leader tells minion to go get the code from team 1 and incorporate it. He goes to team 1 and asks for the code - is told that it is incomplete but insists "that is what I have been told to do, that is what I will do" - fails to tell anyone about the incomplete code. A little time later a system test is done, problem report is put in "I hit the OK button but the dialog did not go away". Drone is given the SPR to fix so he adds quit as the action on OK - nothing else. Some time later and a new system test. SPR raised "I hit OK but the new parameter (just one reported) did not take effect". Drone dispatched to fix. Fixes just that one parameter whilst ignoring all the other 10 parameters. Some time later...
When you add that these system tests involved recruiting teams of users for a week each at intervals of three months that still incomplete dialog probably cost tens of thousands - some on those teams were body shopped from Logica.
It just beggars belief doesn't it.
Comment preview