How to deal with the developers refusing to use certain technologies or tools?

Note: Good help is hard to find, so answer 'Let them go' doesn't work in this case. Besides, they are very good in what they do, just don't want to do what they don't want to do.

Examples: "Get away from me with this Crystal Reports stuff or you will never see me again."

"I am not using SSIS for anything."

"You can integrate sytem with MAS 500 yourself, I won't touch it with a 10-foot pole."

General Comment: "Ask developers to provide a better solution" is not always an option as the technology / tool maybe given to us by the customer.

  • Customer has people familiar with CR to tweak reports after they are delivered
  • Customer already has Microsoft SQL server and don't want to invest in any other ETL
  • Customer uses MAS 500 and doesn't want to switch to the other accounting package
+3  A: 

ask them what they would use instead, and then see if what they suggest is reasonable.

Technologies or products are given by customer, we cannot change some of them even if they are bad.
if you don't know how to use them, why did you accept the work from the customer?
Steven A. Lowe
+1  A: 

You can employ something like pair programming and work with them directly to teach them and to show them why technology X is necessary in your business.

If you can, you could also ask for a recommendation for alternative technologies. I think that many times when people don't like something, they at least know something they like more. It would also help to ask for reasons as of why the refuse to work with something. Maybe you can resolve their cut and dried opinions.

Last but not least, you can always look for a replacement.

+4  A: 

Your best bet is to actually sell them on the technology, and not to just tell them they have to. If you truely believe the certain technology is the best route, you should be able to have a conversation with them about why it is the best.

If they still refuse, ask them how they suggest to achieve the same goal. If they have nothing, there really is no other choice but to tell them to do it (if you are the boss) or to hit the road.

While I understand developers (I am one) have our opinions of the best way to accomplish a task, once we shoot down the bosses idea, and can't suggest a better route, what good are we.

+7  A: 

Put it back on them... You want a feature that you think technology X will provide. They don't want to use technology X. So ask them how they would provide the feature without using it. Now it is a challenge. You have a solution. Now they must come up with one. If they can not provide the feature, well now you may have to consider the 'let them go' option. But if they can, your happy because the feature exists and they are happy because they 'proved their technical prowess'.

Nice idea, but according to question using technology X is a fact dictated by customer... So there is no room to discussion.
So this manager either has to find different customers or different developers. If neither is an option, then finding a different job might be in order.
+4  A: 

First off, find out what their objection is and listen to their reasoning. Ask what they would use as an alternative approach and see if it's feasible. Be open to using alternate technologies when possible, but negotiate flexibility from your developers as well.

If there's a hard and fast requirement or you believe the technology at hand to be the correct one to use even after discussion, but the developer remains intransigent, your choice is push or slide. Either you put your foot down or you work around them. But, you should try to avoid getting to that point.

+11  A: 

If the technologies are being proscribed by customers, then I'd suggest you try the Google way: pay those that are willing to work with unpopular tools more than those that won't. Try the "there's a week's pay as a bonus for the first person to offer to use MAS 500" ought to change the developers' attitudes to such technologies.

David Arno
There's some scholarly evidence that this doesn't always work well (see:
+1  A: 

First, loosen everyone up a bit, start with a little heads-up:

So, Sally, our new person up in Finance, isn't comfortable with our current payroll module, so she implemented a really cleaver DOS batch file she copied and pasted from experts-exchange. "Don't worry" she said, "I personally checked every GOTO."

(Management gave it two thumbs up for its cost saving effect (ie. you guys don't get paid as much now).

+2  A: 

It is not workable situation.
I will not have a person in my team that refuse to do something i tell.
I'm always open to here another opinion and in a lot of cases i change my mind if ppl in my team convince me that i wrong and they suggestion is better, but if not i will decide what to do and my team will respect it.I don't see how it's can work in a different way. You need to earn you right to say a last word, by listening to your team when it's possible.

+34  A: 

Developers who act like children (refusing to use a tool mandated by a customer!) are not good developers no matter what their coding skills. If an employee acts like a child he should be treated like a child. This is business not a democracy where everybody gets a vote. If I told him to use a tool and he didn't, I'd return the work to him until he did it correctly. If he did it twice, I'd write him up as a performance problem (that is what this is). If he did it three times, I'd fire him.

Wow. You sure like to boss people around. A good company always sticks for their employees — even if that means losing a customer. If you think your employees are idiots, there's noone else to blame except you. BTW, the topic starter's company sounds to be an utterly boring one.
A company that sticks up for their employees and loses customers as a result doesn't last for long. The business's job is to give the customers the products they want, not to do what your employees think will be fun. It is unprofessional to refuse to use a technology you don't personally like.
Yeah right. Bullying people to use tools that they hate will sooner or later cause these people to look for jobs somewhere else. Imaging asking a .net developer to switch to cobol :-)A high turn over is pretty expensive, and that company will go the way of the dodo.
People who won't use tools the company needs them to use are no loss when they leave. Nor are developers who act like children when given a direct order. This isn't playtime; it's work.
HLGEM, i agree with what youve said her, its just not very diplomatic. a company pays for a programmers behavior. also agreed that a company is not a democracy.
100% with HLGEM. I, as an employee and as independent consultant have had sometimes to work with tech/tools I do not like. It is just professional to use the tools that the client needs/uses. Even if those are not perfect/ideal/best for him or myself.
As a provider (and in regards of tools to use) I (we? as a company, includying employees?) must use what the client needs/uses. We may help him to change his mind if we can proove there are better solutions but refuse to serve his bc of this is just unprofessional.
"A company that sticks up for their employees and loses customers as a result doesn't last for long." -- Does this mean that no matter what, you'd rather make money and keep your business than stick up for your employees? [I wonder why I'm surprised; this seems to be the dominant attitude around...]
+1 for HLGEM. A good manager will shield his/her reports from corporate nonsense, but ultimately the employee is being paid to meet the company's needs, not the other way around. If a developer wants to limit the tools he/she uses, that's a personal choice that may lead to unemployment.
As a developer looking to get into the software industry i can not believe people refuse to use what the boss/manager tells them to! Nobody is indispensable.
Gary Willoughby
ShreevatsaR, would you rather the company lose it's customers and go out of business and everybody lose their jobs? You can try to present the better idea that your employees have to the customer, but ultimately once the decision has been made, you have to support it and so do your employees.
This is the stupidest answer I think I've ever read at StackOverflow...!
Thomas Hansen
Terrible answer! Developers shouldn't be childish but neither should a manager. Use developers in the skills they were hired for. As a C# developer I like gaining experience in .NET technologies. My last employer, promising VB.NET, made me use COBOL..I left as soon as I could find another .NET job.
"This is business not a democracy where everybody gets a vote." Biggest failure of mindset I have seen in managers. Treat your employees like they don't matter by dictating everything to them and you will quickly find only the incompetent or apathetic remain.
I agree with your point of view, but I don't think I would want to work for you. If a customer was using a tool that was clearly wrong for the job, I would say so, but I would still use the tool if it was mandated. If I were the manager I would encourage the developers to voice concerns like this. The company has a responsibility to make the customer aware of decisions that are going to hurt them.
Robert Harvey
Where did I say I wouldn't bring it up to the customer that there was a better way? But once a choice has been made (and the customer gets to make the choice, they are paying the bill), then the developer has to use that way whether he wants to or not. I didn't say the developers couldn't voice concerns either before the decision has been made. But once the decision has been made, it is unprofessional and cause for firing if a developer refuses to use what the project requires. If that makes me hard to work for, OK by me. At least I won't promise a SQLServer solution and deliver an Oracle one.
To be fair, are you certain that the developers are refusing out of cantankerous dislike for the relevant tech? Perhaps they don't want to use it because they expect the cost of support and maintenance to outweigh any potential profit from the project? Interfacing with particular packages can definitely jack up support costs a lot more than someone who isn't intimately familiar with the technical problems might expect.
Greg D
Based on what the original poster wrote, yes, I think you can make that assumption. However, even if they have valid reasons, once the decison has been made, they need to use what has been decided will be used.
A company may not be a democracy in the sense of equal vote for all (no matter what their contribution is), but it is based on democratic principles. Any other basis of a company will rot it, because any other model is unsustainable and unscalable.
Amit Kumar
In a dynamic world "a decision that has been made" needs to be revisited. A group decision is not an imposition, it is a disposition. If someone does not like the current decision, he should be encouraged to change the popular opinion about the decision. If he fails, probably he'd like to leave to a better fit anyway.
Amit Kumar
Terrible approach, even if the answer is correct. HLGEM - maybe invest in some interpersonal skills and look beyond your micro world
+29  A: 

Perhaps I've missed something or there is some detail missing.

On the face of it effectively you have gathered some customers who want you to do something that your business cannot do. Has something gone wrong in your sales department, or have the developers who could do the work disappeared? I'm assuming that the developers aren't saying 'no' out of sheer bloody mindedness but rather their expertise lies elsewhere.

The only answer I could practically see is: a) Use contractors, or sub-contract the work b) Understand the capabilities of your development team when pitching for sales.

Apologies if i'm off the mark, but it sounds a bit fishy to me.

+2  A: 

One way is to make sure that they are also customer facing. It's far harder to tell a customer they won't do something than their manager.

Mladen Mihajlovic
Quite right. The manager is not in a position to dictate technologies. The customer is.
+14  A: 

I d say you hired a developer and you are trying to get them to do professional services work, Why? Any decent developer would refuse to use such tools (particularly Crystal) because that is simply not their job ( at least thats my definition of software developer)

I 100% agree. Unless he knew when he was hired that he would be expected to do these things. If my employer said that he needed some Chrystal Reports developed on a reg basis I would say "Well, you should prob hire a CR developer then"
Sara Chipps
+2  A: 

Rmind them who pays their salaries - the customer.

HLGEM is right though - children need to be treated as such. Take away their toys (ie perks - flexible working, all the internet except management-approved sites, etc)

Great idea. Developers respond really well to this kind of treatment. No, really!
What a great boss you must be. What's that? You're NOT the boss?
Robert Harvey
heh. and I guess you two are those with the toys and the attitudes. Work is for working, not for your personal enjoyment. If crappy things need to be done, they have to be done. You go to work and get paid to do the things the business needs, not what you want to do (or we'd all be 'working' on desert islands with laptops balanced on the thighs of a dusky maiden :) )
Sign me up!....Seriously, though, it is one thing to require things from people. It is quite another to do it with the degree of petulance I am seeing here...Why are we hiring children in the first place anyway?
Robert Harvey
mmm dusky maidens.... its either indicative of the state of software development today (people 'playing' with the tools, not professional engineers), or the geek mindset. I used to work next to a chap, if you wanted to ask him a question would say "the doctor is busy" dismissively. I suppose he thought it was cool/amusing, but it didn't help his career. For this thread though, read 'children' as 'arrogant nerds'.
The arrogant nerd/child would better open his own company and hire other nerds/children like him. It is unlikely that the world of adults will respect their dominance otherwise.
Amit Kumar
+1  A: 

HLGEM is correct. You dont want us to say "let them go" but truth be told, they dont deserve to work you you with that attitude. Remind them who the boss is. Its one thing to want to suggest a new idea or product to work with and give the reasons why. But, if you are truly getting those sort of remarks then you really do need to consider showing them where the door is. Sorry. Business is business.

You added:

Good help is hard to find, so answer 'Let them go' doesn't work in this case. Besides, they are very good in what they do, just don't want to do what they don't want to do.

Why not? There are plenty of programmers who have been outsourced and laid-off who would more than happy to get their hands dirty in some Crystal Reports development - even if they hate it, like I hate it. :-)

So, if you dont let them go and find someone else who would be happy to do Crystal Reports (yuck) or SSIS (yuck) or MAS 500, then who will do that work?? You? Or a very unhappy programmer? Either of those two scenarios is far worse, in my opinion, than seeking new help. I'd rather interview a dozen people a day than know someone working for me is unhappy - for the reasons you gave.

We dont control what products the customer has for us to work with. I dont like doing CR or SSIS myself but I would never say no to a client and I would never take no from anyone on my team. If they want to do whatever they want to do then they can go an start their own gig. Trust me, its worth going out on your own gigs and all, however you dont REALLY get to do whatever it is you want to do - all of the time. They'll see.

Good help is hard to find, you've actually proven that by posting this. :-)

Optimal Solutions
+1  A: 

Sometimes having to find new help is a better solution than insubordination.

However, having said that, it is your job, as the manager, to convince/motivate the developer to do their job, even when it is difficult. So I would try to empathize with them about how they feel, explain to them you have been in that situation before your self, and you found a way to deal with it.

If they continue to fight you on getting the job done, you need to remove the developer from the job.

+3  A: 

While a Draconian approach ("Do this OR ELSE") should be a last resort... it is a last resort.

If it's absolutely required (e.g. asking for alternate recommendations isn't viable, per your examples) then substitute these for your question, and I think you'll find the answer:

"What would you do if a developer on your team absolutely refused to show up to work?" "What would you do if a developer insisted on coding all GUI elements in French, even for English projects?" "What would you do if a developer insisted on developing on a Solaris box in C, even though the product is for Windows and build in .NET"

or better:

"What would a restaurant chef do if a cook refused to follow the recipe, or make the food that is on the menu?"

Because, at the end of the day, is there a difference? It's definitely true: business isn't a democracy, and they call it "going to work" (as opposed to "going to play") for a reason. Everyone likes to have input, but sometimes it's not practical.

You should definitely try - first, to reason/convince/cajole/bribe the person (degree depends upon their skill). However, a smarter manager than I once told me (regarding a really good employee of mine who had a severe attendance issue), someone who does great work when they're there, but doesn't show up, isn't doing great work. This is the same kind of situation.

+2  A: 

It's very simple: the needs of the business are that you use a certain technology or tool. That need exists for a reason (your customer wants to tweak reports after they're delivered, your customer has certain licensing restrictions, your customer has certain security restrictions, etc). Developers exist to serve the needs of the business (AKA, make money for the business). If they don't want to serve the needs of the business then there is no longer a need for their services.

Mike Post
+2  A: 

I agree with @tonylo. If you are asking your developers to learn out of band stuff that is not the focus of your company, then you are going to have difficulty, and this is not necessarily a case of bad developers.

If your company has no focus technology wise, use contractors for dirty work, or work where you can't sustain FTEs.

+2  A: 

With all things like this you need to go through a process.

Firstly, talk to the developer; make them explain why they think the tool shouldn't be used. They need to explain why it's bad for the business, not just that they don't like it.

Unless they changed your mind, you then explain to them why using the tool is best for the business, especially pointing out when there are non-technical reasons for using it. If the customer has insisted on the tool, that's a good enough reason. You are here to serve the customer, not to amuse yourselves. Again unless they managed to persuade you otherwise, tell them that that's they way it's going to be. Let them calm down for a few days after this.

If at this point they are really refusing to use this tool, that 's when you have to start getting heavy. Point out that if they refuse to do what they are told there will be consequences. If this is a big company offer them a transfer to a different part of it. Maybe allow them to work on a part of the project that minimizes their involvement with the tool. But point out that their attitude is not making them look good, and will be remembered when performance review comes round.

Finally if they are still flat out refusing to do as they are told, they need to be formally disciplined, and if that doesn't work, fired. It doesn't matter how good they are. If they can't play as part of the team you don't want them.


So, if the management has promised a customer that a particular solution will be developed using tool X, but the developers refuse to use tool X it sounds like management screwed up. Managers who promise customers things that cant be delivered don't last long.

Yeah, go ahead and force tools on your developers and fire them if they don't have the right slave mentality. Your best developers will leave first.

Development works best when management and customers concentrate on specifications, and let the craftsmen choose the tools. Tool dictation is a symptom.

+1  A: 

a lot of good points here. i like what HLGEM has said, only i would be more diplomatic about it (as is to be expected from a project manager).

a few focal points: 1) coders get paid for their behavior, not their technology preferences, 2) business isnt a democracy, 3) the purpose of a business is to maintain its existing clients and garner new ones.

that said, i would approach it using the feedback model from Manager Tools, with adjusting feedback. so you would say something like this to a programmer:

"John, can i give you some feedback?* When you say you dont want to use crystal reports, heres what happens; i become concerned about our ability to satisfy our clients needs, i see the potential of our clients going elsewhere to have their work done, i worry about the other guys seeing this and also deciding they dont want to use technologies our customers need. all these things connect to the company's profitability - without money from our customers the company cant keep us employed. what can you do about this?"

personally, i would also approach it with a bit of empathy. i would say "yeah, i know MAS 500 isnt a particular mind-blowing system. but sometimes we do have to do work which isnt that glamourous or exciting. i know i hate writing test plans, they sap the very energy of my soul, but i do them because theyre needed".

oh - and a point about terminating people. it is an absolute last resort, the impact it will have on the other team members can be quite significant (e.g. people start worrying about their job security and may preemptively leave for another job).

RE: contractors to do non-core work -> dont forget, there is a whole level of new communication/management overhead if you start sub-contracting work. not to mention a lot less profit to be made for a company.

+3  A: 
  1. Mediation. Provide them with a third-party perspective so they may realize they are being irrational (posting some problems on SO may help) but use this tactic sparingly or you you won't gain respect for yourself.

  2. Manage attitudes. Judging by the harsh developer rebuttals in your question, I am inclined to think that the developer has quite an attitude problem. You may want to pick up a book on behavioural psychology or take a course on it if you want to become better at managing people and personas.

  3. Empathy. Build a relationship with them and get them to empathize with you so they may understand why you need Crystal Reports or whatever. Go out for lunches and do some bonding (include other people if you feel uncomfortable 1 on 1). The closer the bond, the easier your management will become. You could also put them in a position to manage smart interns so they may be able to relate to managerial issues.

  4. Processes. Setting processes and best practices in place can also help alleviate some of problems. Decisions like using Crystal Reports should be discussed in design meetings. Including the customer in the early design meetings may help set a customer-centric mindset for the project early on. Repeating mantras like customer-focus development can also help but YMMV.

At the end of the day if you want to tame the shrew, so to speak, you have to frame the problem in a clinical fashion and deal with it in a pragmatic manner.

Also look within your own practices. Are you micro-managing? Too soft? Building a bad vibe by cursing developers in your head? Not empathizing with them? Cut out to be a manager at all?

Always act tactfully.

+2  A: 

Is your company growing and what customers do you want to gain?

In a small company developers will do a lot of different things. In a bigger company developers will specialize. Some will only do crystal reports and others will do only hard core programming.

Some people will leave if they can't do what they want to do. Some customers will leave if you can't deliver. The state of the job market and the number of (potential) customers are important factors.

+1  A: 

You either have to convince them that the tools are superior, or accept that they won't use the tools.

Sure you can "force" them to use it if you're the one paying, but that's really stupid since the developer will be doing it against his will and probably create a really crappy solution for you since he have no motivation for anything else then proving his point which probably is that the technology you're forcing him to use sucks...

When that's said, you should have several warning lights/beep/flash/alarms go of when a developer says he refuses to use a technology!

Unless you're a better developer then the one refusing, then the technology probably do suck, or at least the developer doesn't have the required knowledge to use it which will make the solution he creates in it actually truly suck!

Most developers have a lot of honor regarding their work, and the only reasons why I would think that a developer "refuses" to use a specific technology is because he (often rightfully) believes that by using that technology his code and app will end up bleeding, which will make you as a customer bleed much more.

Funny that you mention Crystal Reports as an example in fact ... ;)

Thomas Hansen
+1  A: 

Seems that most everyone has bad feelings about Crystal Reports.. I did too until I attended a training class. Once I learned how to use all the features, I felt much better about it and was really impressed with the functionality. I was able to create and deploy reports in days that would have taken weeks to build by hand. Plus the Crystal Enterprise platform automates the deployment and delivery of reports to the right people. Who wants to write the same thing by hand? The value is in solving the business problem, and fast.

I've noticed that consultants that can create high-quality reports are extremely valuable. One guy was so good at it he rose up to create the profit/loss and balance sheet reports for a large corporation- and was paid $150/hour in his pocket. That is an inspiration to any developer who would prefer to spend weeks reinventing the wheel with manual coding.

Rob McCauley
The only case I've seen with Crystal Reports was where it utterly could not be used due to database design.
That's a valid point, Joshua. It's advised to put as much time into the DB design as the reports. Often the schema is fixed, but you can still create a View (or even Stored Procedure that returns a Ref Cursor) that cleans, summarizes and consolidates the data before it gets to Crystal.
Rob McCauley

Good help is hard to find, so answer 'Let them go' doesn't work in this case. Besides, they are very good in what they do, just don't want to do what they don't want to do.

If he's not helping, I wouldn't call him good help.

Richard Seviora