OJ’s rants What would OJ do?

28Jan/1015

The Wrong Decision by the Wrong Person

The wrong tool.There is one thing about my industry that I still find truly amazing (and not in a good way). This is despite the fact that it has happened to me so many times that you think I'd be used to it! I'm talking about non-technical people making technical decisions.

For some reason, it's a very common practice for those people who don't have expertise in a certain field to make decisions for people working in that field. The best example I can think of off the top of my head is the answer to the question: "Which technology should we use?"

Let me take a step back in time for a moment.

I applied for a job with a certain company (which shall remain nameless) that was looking for a number of C#/.NET developers of a certain level of experience. After confirming an interview date and time, I turned up to find myself facing a panel of 3 interviewers. One of those people held a technical position, though I found out later that the position he held was self-appointed and certainly not an indication of the person's level of technical knowledge or expertise. The other two were in non-technical positions.

During the interview we had the usual discussions and questions around technial knowledge, depth of understanding of certain areas of the .NET framework, views and approaches to dealing with people in teams, agile experience, etc. It all went very well. At the end of the interview I was given my chance to ask a few questions. The main one I wanted to ask was "Why did you decide to use .NET for this project?"

For the record, the previous version of the system was written using an older Microsoft technology stack. The decision had been made to go with .NET for this new version. Can you see the correlation?

The answer was quite stunning. The only reason the project was using .NET was because the previous version was a Microsoft-based solution.

The first thing I thought was "surely that can't be it?". As a matter of fact, that wasn't the only reason for it, but it was the main reason. The decision wasn't made by a technical person, it was made by someone in upper management.

Scary huh!?

In my personal opinion, there is one particular technology that I think would have done a much better job of solving this particular problem, and it's not a Microsoft solution. It's not a Sun solution, or any other mainstream option for that matter. In my view, Erlang would have been perfect.

I don't think that a company like that would have ever even considered Erlang as a viable option. Mainly for two reasons. The first is that the amount of skilled Erlang developers available on the East Coast of Australia is extremely small. The second is fear of the unknown/non-mainstream tech. That is, companies like to go with what other companies are going with.

The crazy thing about this scenario is that management go to market to hire people who are domain experts, and then proceed to tell them which technologies to use. Surely you would be better off hiring people to know how to solve problem X really well, and then listen to what they have to say about the technology stack that should be put in place? No, not in this industry. Probably not in my lifetime either!

So if you're a non-tech person leading a team of techies, please PLEASE listen to what they have to say. Ask them what they think is the right approach and the right toolset. Don't take control of the technical decisions. Let them do what you hired them to do: Solve the problem, and use the right tool for the job. If they don't know the answer, or the answer is always the same, then you've got the wrong developers.

Thanks for listening :)

  • OJ
    I don't see how the example I have given is a crap example. It's based around a real-world experience that I had recently. Have I had others? Absolutely, do I remember them clearly? Not really :) I chose this because it was fresh in the mind and it was the basis for bringing up the point of the wrong decision being made by the wrong person.

    I stand by my point about not posting if it didn't happen. But I'll elaborate more by saying that I probably wouldn't have written it yet. If I hadn't had the experience, chances are I wouldn't have written it until the next time it happened. Not raising the point because it's not a hot topic in my head right now doesn't make it less important either :) I agree, it's an important topic and one that should be discussed, hence why I used my recent experience to talk about it. The crux of the issue is that Managers are making those decisions full stop, regardless of the means. That responsibility should be delegated to those who understand the tech and are more able to pick the right tool. Though I admit, even in the tech world it's hard to find someone who will evaluate tech without some kind of bias.

    That comment about decisions based on a chat over a cup of coffee is scarily close to the mark :)

    Cheers bud!
    OJ
  • Don't be surprised mate - I didn't think you said that in the interview at all - I know you would mostly have just sat there listening.

    Also, your post was crystal clear, including your undercurrent of thought and my complaint wasn't about that - it was about the example you chose - a crap one :-P

    Also - saying if they'd delegated the technical decision etc etc this post wouldn't have been written is just plain wrong. Just because those guys *may* have got it right doesn't mean the problem doesn't exist. It *does* and in a very bad way - just didn't come across with your example - so it needs to be talked about and solutions need to be found, i.e. Managers need to stop blindly deciding on technology based on a cup of coffee they had with a SharePoint evangelist - that's the real crap that happens that should stop. Immediately! :)

    All the best mate,
    Rob
  • OJ
    @Rob & @Yoann: I think guys both focussed on the partially tongue-in-cheek part of the post rather than the main point.

    So the motivation for the post, and the main point of it, was that the decision to use any technology was made by those individuals that are the least technically qualified. No discussion with technical people was had prior to the decision being made. If they had delegated the task to someone in the know, such as a strong technical lead, and they in turn had done a proper evaluation of the options then this post wouldn't have been written! I would have been more than happy to accept the .NET option without question. The issue is the way the decision was made more than the decision itself.

    I've been using .NET for a very long time (as you both know) and I'm not exactly saying that .NET is a shit option. The sundry point that I was making in the post about believing Erlang would have been a better choice, which I consider tongue-in-cheek because I know that it'd be considered a little controversial, wasn't really the main driver for the post. I still do feel that Erlang would be better suited, but that doesn't mean that I think .NET is a fail and it doesn't mean I wouldn't consider the job as a good gig to be part of because .NET is the selected platform.

    I'm certainly not stupid enough to attempt to convince my interviewers to use a technology they (probably) haven't heard of during an interview. I'm a little surprised that you guys would think I'd consider doing that.

    In short, what the post says is:

    * Non-technical people shouldn't make decisions about technology
    * Technical people should make decisions about technology after properly evaluating the options
    * Technical people on the whole need to open to other options that our outside their comfort zone

    Does that make it clearer? :)
  • yoann
    Having first tried to response and pressed delete key with some other random one, chrome navigated back to previous page and lost my entry... d'oh!

    second time round, I thought I'd read the comments first. Turns out, like Robert, I too tend to have some questions regarding this last post. I agree with Robert on the micro/macro decision making, but I also know that it is extremely difficult to educate your higher peers with something they have never heard of, and if they haven't heard of it how are they going to manage this project? To their eyes there would be too many unknowns to give the go ahead.

    I, of course, generalise here, not every managers, technical directors I worked for are like this, but in general you will have to spend time to prove that you know everything there is to know about this technology you are pushing for. And even with that, you might even have to prove that you have "commercial" experience on this...

    This would take a long time, and certainly would take longer than a 10 minute interview to convince a company to chose a technology they never heard of...

    Y.
  • Hey OJ,

    I think you've hit the nail on the side a bit with this one - you know, the kind where you have to pull it out, straighten it and try again? The issue you mention in the title is prevalent, and make no mistake, it's a big problem, but your example...hmm...how can I put this....just doesn't do it for me. And I'll tell you why:

    Firstly, I don't think there's anything wrong with having 3 non-technical types doing the interview as long as one of them would be directly responsible for managing you. In my experience, it's always been less to do with the number of buzz words the developer uses or methods he's manged to memorise without having to refer to documentation or intellisense - and more about his personality fit for my team.

    Secondly (as others have pointed out), it's perfectly fine for the business/enterprise owner to choose the technology. If they care about their business (and that's a BIG IF - I'm not interested in the ones that don't care enough) then they've already done some research and got developer opinions from here to Timbuktu - many of which will conflict as you well know. In the end, they have to make the decision based on other factors, like replacing unexpected loss of skilled devs, the market etc etc. I also don't think it's got anything to do with what competitors are using - not at enterprise level anyway.

    It's a business decision which in the end needs to be made by an informed business person. I know some specific technologies are better suited to certain tasks than others, but what do we expect when us developers keep going on about the fact we're so good we can build the next big CRM killer with nothing more than a mothball and a half eaten can of sardines, oh and this bright green yo-yo. Business owners struggle to separate fact from fiction, and so in the end they pull you into to an interview to assess "you" as a personality, to see if you're gonna help them or hinder them. Yes they've chosen the base technology already, and now they want to know if you can help them succeed with it.

    Where I think this argument you make has tons of merit, is if they told you it was a .Net based solution and then proceeded to tell you that you also had to forget about MVC and that that they had carefully picked Entity Framework v1.0 as the ORM of choice, oh and they'd promised the customer that it would be delivered as a Sharepoint web part. That's the point where you get to walk out of the interview or the job because then they really are eating the proverial porrdige.

    I think that mangement types making software choices at the microcosm level should be banned - and I think that is the real gripe you should be having here. Software choice at a macrocosm level has always been dictated to some degree by external market factors and will continue to be for a long time. Banks have steaked their livelihood on technologies like Java...ok maybe that was a bad example, but the point is that enterprise software has and always will be a slow turning wheel. It's like the Exxon Valdez coming in to port - as captain and navigator, you'd better know damn well that you'll fit through the Suez or you're gonna be facing the long trip round. The only way for enterprises to "know" their choice is right is by looking at total market experience - and as that stands today, you're basically choosing between the heavy hitters with big corporate backing like .Net and Java. The smaller (albeit better suited) technologies will have to wait their turn, and if they stand that test of time, you can be sure they'll find their way in to enterprise slowly but surely - as long as people like you keep pushing for it!

    Damn - shoulda blogged this - getting to long now. Oh well.

    Great post mate, give us a great example of when business made the technology choice without taking our warnings into account...I know you have many...pull that nail out and try again - if nothing else at least I've given you another reason to rant! ;-)

    All the best,
    Rob G
  • OJ
    You're right Tony, there are way more motivations out there than the ones we've discussed. And while they're definitely examples of real-world reasons they still fit into the misguided bucket. I would argue that the ones you mentioned are actually worse because it implies that those people KNOW they shouldn't be the ones making the decisions yet, for their own personal gain, refuse to yield control.

    We need more people like Pete Williams in this world :)
  • I think you have missed a couple of the reasons that decisions are made without listening to the people at the coal face..... Pride, it takes a humility for someone to step back and say I don't know the answers therefore I am happy to have people to help me make the decision.
    Perception, related to pride however about front really in saying......"I made that decision and it was successful "( regardless of the all the extra toil and effort it took to make it work.
    If you look at the really successful guys like Pete Williams from digital deloitte, he is proud to say , I employ a lot of smart cookies why not use them and listen to what they have to say , makes my job more enjoyable and easier. That's why he is one of the most successfull CIO'S in the world. Anyway just my thoughts
  • OJ
    > Sometimes it sounds like the technical choices of a corporation are much more related to gifts received and trips taken than actual technical merits.

    That is SO close to this situation it's scary ;)
  • OJ
    Well said Phil. You're right. I'd say 50% (at least) of the software industry as I know it is made up of Monkeys. Perhaps another 40% made up of "standard developers". The last 10% are the people who are really good at what they do, and who give a shit about doing it properly.

    Like you said, they're few and far between.
  • OJ
    I'm not convinced that the hiring issue is the core issue. I'd say it's more fear of the unknown and not wanting to take the risk by using something that your competitors are not using. There are lots of examples of many software solutions being created for a certain industry where there base language and technology is the same across most, if not all, of the vendors. It's especially prevelant when you get to the BIG systems.

    It's just stupid.

    As a side-note, I'm tired of being pigeon-holed as a ".NET dev". I'm not a .NET dev at all. I'm a problem solver who uses technology to provide solutions. If that means .NET for a certain problem then fine. If it means Erlang for another, then fine. But let ME make that decision, because that's what you're paying me for.
  • OJ
    I think it depends on the goals of the Enterprise to be honest. If you're core business relies on high-availability and performance it's stupid to consider using a technology which doesn't have either of those things as a main focus just so you have a safety-net of "more cogs" :) Sure, Enterprise will always want some kind of reassurance that they're not getting involved with a solution that only a very small set of people can maintain. But they need to realise that there are other things in play, and should consider the Total Cost of Ownership of a given solution.

    I would argue that the only reason PHP is still ulsed as widely as it is is due to people running companies that they founded using PHP in the first place. It's a comfort zone thing. I don't know of any Enterprise-level places that are using PHP, they're all small dev shops or startups (or Wordpress :P ).

    I wouldn't say that the big debate is between the best tech and the safest one commercially, because in my view they're the same thing :)

    Cheers for the comment dude!
  • Oh, I don't disagree; the "that's what we are, right?" part was pure sarcasm. I hate the view of employees being interchangeable cogs when I'm an employee myself. However, I can certainly see why an administrator could dream of it.

    As you say though, the belief is wrong and often the source of software development failures. There might be a correlation between that and choosing technology without consulting the tech people...

    Sometimes it sounds like the technical choices of a corporation are much more related to gifts received and trips taken than actual technical merits.
  • > I think it's logical for an enterprise to want interchangeable cogs (that's what we are, right?)

    Nope. And that is why "enterprises" fail at software development. Regardless of how much some may wish for a software assembly line it is a creative profession. The problem is that good developers are few and far between and so big companies try to turn software development into something that a trained monkey could do. Unsurprisingly their trained monkeys generally just throw crap at them.
  • This to me seems to be more of a hiring decision than a technical one, as you (and MononcQc) mention, though it's kinda funny that .NET (or some subset of it) has pretty much become the default for most application development these days without any truly compelling technical reasons. It's like how C++ has become the default for games/systems programming - it has reached critical mass or gained enough momentum (or whatever buzzwords you prefer) and is now very stubborn to shift, despite the inherent problems.
  • That's always a good question. While non-tech people aren't responsible for using the technology, they're still responsible for hiring and paying the people who'll work on the products.

    I think it's logical for an enterprise to want interchangeable cogs (that's what we are, right?) and not having to re-train all employees currently working in-house, not wanting to pay more for programmers (who are harder to find), etc. It's a sane reaction and I can't say I wouldn't act the same myself if I were in an already well-established place. This pretty much the only 'acceptable' reason for PHP to still be used as widely as it is.

    As far as I know, the big debate then becomes choosing between the best technology for a better product or the safest one commercially speaking. Tough call.

    That being said, I'd love to be able to work in Erlang :)
blog comments powered by Disqus