Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Should a programmer be indispensable?

Before I worked for a web development company, I asked a lot of questions of friends who were working as developers for tips about being good at your job.

One answer I got was:

"Always make the employers beg for your competencies. Prove to them that you are the best and you cannot be replaced. While keeping the status quo, hold your employers hostage where if one day they remove your from the job or task, no one else will be able to do your job."

How true is this statement?

share|improve this question

marked as duplicate by Karl Bielefeldt, Mark Trapp Jun 30 '11 at 0:23

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

That's a way to do it, but I would not call it ethical. I also don't see any advantage in it since I don't want to be stuck in one job or task for too long. –  Raynos Jun 29 '11 at 11:37
See also: Should a programmer be indispensable? –  user15608 Jun 29 '11 at 12:27
"If a programmer is indispensable, get rid of him as quickly as possible." -Gerald Weinberg, The Psychology of Computer Programming. –  Toby Jun 29 '11 at 13:05
You should be irreplaceable because there are few as good, not because you know things others don't. –  Jon Hopkins Jun 29 '11 at 13:33
dilbert.com/2011-06-18 –  DKnight Jun 29 '11 at 15:50

20 Answers 20

up vote 68 down vote accepted

If you truly are irreplaceable, how do you ever expect to get to anything else or get promoted? Your friend's advice is fairly horrible. Yes, you may create a sense of job security, but you've effectively trapped yourself in that same position.

Another view is that there really is nothing you can do which cannot be learned by someone else. If it is impossible to be replaced because what you do cannot be learned by someone else, then how did you get into that position? Your existence proves the fallacy of this argument.

And finally, do you really want to create a "hostage" situation with your employer? I've seen many people in my many years in this industry who worked hard to create such a situation, and they were victims to layoffs while the companies they worked for continue on just as before.

share|improve this answer
This, this, this. The only time this advice holds water is if you wouldn't be able to do any other job, and then you need to stay in that position forever. For anyone with ambition and skill, that advice is horrible and will pigeonhole you into that role and that company. –  Wayne M Jun 29 '11 at 12:06
If you can't be replaced, you can't be promoted... –  Shauna Jun 29 '11 at 12:39
What a perfect point! Add to it - the struggle to be the only one who can do certain things will often lead to a contest of wills with a good manager who knows that the team should be able to back each other up. Fight too hard with management and you will quickly find out how replaceable you really are ... not matter what your skillset. –  bethlakshmi Jun 29 '11 at 13:49
I've made a career of wandering through the code left behind by "irreplaceable" people, and the surprising thing is how sloppy they tend to be. Generally the only real barrier to fixing their mess is time. And the little bottlenecks they put in to make themselves "irreplaceable" are usually pretty simple: they're lazy, remember? So it's usually not much work to take that stuff out, and then you can fix the rest at your leisure. –  Satanicpuppy Jun 29 '11 at 16:33
"The graveyards are full of irreplaceable men" (DeGaulle) "If you want to see how irreplaceable you are, stick your thumb in a bowl of water and then pull it out and observe the resulting hole." (Harvey Mackay) –  Malvolio Jun 29 '11 at 17:54

Do you really want to take anyone in hostage?

I don't think so.

What most people wants is being able to get things done. Most employers in the world are seeking for such people.

Therefore the only strategy would be to focus on providing value to your employer while you invest in your own capability to solve problems.

This will not only increase your security but also your market value.

Knowing that you are valuable and that you are capable of providing value will contribute to your well being. Which is what most individuals are seeking.

There is a great book on the subject I recommend. It's called Linchpin: Are You Indispensable? and has been written by Seth Godin.

If you are looking for a more programmer's specific book, The Passionate Programmers written by Chad Fowler is another piece of art you may want to read.

share|improve this answer
Seth has the right attitude. I just saw him speak, and amongst other nuggets of wisdom: "If the reason you have your job is your competence, you are IN TROUBLE". Competence can be learned and taught. How you uniquely solve the problem, and add value to the company is key. –  Lloyd Jun 29 '11 at 12:05

That advice is flat-out unethical and could cause a false sense of motivation - for the wrong reasons. If you want to provide value above and beyond the norm:

  • Work well with others on your team. You don't need to prove you're #1 or the best at any particular thing, but helping others with their problems and asking for help on yours is part of being a good team. People that isolate themselves into a functional silo are not as valuable (they are arguably valuable for that one thing only).
  • Work well with others on other teams. QA, business analysts, administrators, executives, or anyone else you may have contact with should feel comfortable working with you. You won't add value by treating developers one way and other teams as an inconvenience to your work day.
  • Focus on the skills that you don't necessarily need to program, like communication. A lot of programmers tend to focus on the art of coding, but add to that the "soft skills" and you will bring value along inherently.
  • Be unafraid to offer your opinion when asked (but keep it tactful).
  • Always be ethical in your decision making process. If you want to help the company succeed and try to help avoid things like layoffs, then you wouldn't be helping by holding them hostage. Make decisions that benefit as many as possible, including you, your team, your company, and your customers (if you have any).
  • Always be professional, but personable.
  • Always be truthful.

Programming is a team effort and so is being a good employee. Don't get roped into making anyone think you're irreplaceable. Don't go around planting surprises (back doors, easter eggs, etc) in your code or configurations.

share|improve this answer

They must have the impression they work for fools. I think you should produce quality work so it is in your employer's best interest to keep you, but no one is irreplacable. Sounds like they would be the types to withhold information. It's selfish and counter-productive.

I remember the creator of an app who felt this way. He was replaced as the sole programmer by the head of technical support-me.

If you want to be a lead developer on a large project, others are going to have to do the coding for you. You can't get promoted if you can't be replaced.

share|improve this answer

Personally, if I employed someone who thought and acted like that I'd try to get rid of them as soon as possible.

Maybe I'm crazy but in my experience the people who are "indispensable" are so because their work is so horrible that no one wants to be responsible for it, not because they are geniuses (there are of course exceptions, but those people probably feel their indispensability as a burden not an asset).

Being good at your job is about making your colleagues' lives easier and making your company money so that it can pay everyone's wages.

share|improve this answer

Horrible advice. Anyone with ambition would never want to be "irreplaceable" since that also means you won't get any advancement opportunities because you're too valuable in your current position.

share|improve this answer

While the statement may hold true for a short period of time any employer who knows what they are doing will resist "islands of knowledge" and will force you to train other people in your task which may eventually lead to your termination.

From a personal perspective do you always want to be doing the same work on the same project/area day in/day out for the next 40 years, be contactable even on holidays when something goes bump in night?

Having worked in IT for 17+ years in various jobs/roles I have yet to meet someone who cannot be replaced (if got killed crossing the road the company would still go oon!). Yes sometimes there is a productivity drop when the "irreplacable" person leaves but after a few weeks its like they were never there and in some cases productivity is even better.

You would be far better to become an expert in several areas covering coding, business process, design and become the "go to" person for anyone who has questions in your company. Being the "go to" person doesn't mean you have all the answers but that you have enough experience/contacts to have the answer or to very quickly find the person who does.

In my experience companies prefer these types of people rather then someone who thinks they are "irreplacable" for a particular function.

If though your field is an extremely specialised such as heart surgery and you are a world expert then maybe you might just be "irreplacable".

share|improve this answer

Making yourself irreplaceable is a surefire career dead end path. Like Wayne just said, promotions are impossible because you are indispensable at your current position.

But it gets even worse. In the high-tech industry we are working in, nobody can be irreplaceable for a period longer than the lifespan of the product he is working on. So even if you are irreplaceable right now, in a few years, maybe 5 or 10 or 20, the system will be replaced. Chances are that your coworkers will receive training with new tools etc. while you are doomed to maintain the old system until it's finally shut down. And then... you have suddenly become superfluous.

Now that's only the case when you are really that irreplaceable and the management is willing to accept that dependency. More likely is that during your next vacation or sick leave, they will notice the problem and solve it.

share|improve this answer

There is no such thing as irreplaceable

Microsoft is surviving without Bill Gates, Apple will go on without Steve Jobs I am pretty sure you would not be as much of a linchpin to any company as they were/are and if you do end up being that valuable, I am pretty sure you would see the value of having trained replacements as quickly as you could.

I am assure you, you don't want to work for anyone that allows this behavior to flourish, it is a miserable existence.

share|improve this answer
Apple almost tanked it self when it thought they could replace Jobs. Gates had already set in motion many things to come before he moved on. And he replaced himself, the company didn't do it. Microsoft isn't doing all that well either. –  Andrew Finnell Jun 29 '11 at 14:32

it is utterly and completely false. People who believe they are imperative to the proper function and operation of a company that has > 2 employees are delusional.

EVERYONE can be replaced, even the CEO and president everyone. Granted it is sometimes more painful than others. sometimes the amount of time it takes to get someone new to understand what you did is a few months and sometimes the cost is quite large. regardless no one is irreplaceable. should the need arise (cut-backs, bad-blood or whatnot) you too can be replaced, if you think otherwise than you assume no one on earth can do your job as good as you and that there aren't enough skilled people around who can "get" what you did in a month or two, and if you believe that than you are both arrogant and as I said earlier delusional.

share|improve this answer

No employer/company can afford to be held hostage by a single person, no matter where in the business they are. Therefore any attempt to hold your employer hostage will backfire.

If I were to see a situation where a single person in my team tried to create a position of being irreplaceable, that would be immediate reason for me to cross-train somebody else and have a serious chat with the first person.

And I have to tell you that the attitude shown by this statement does not bode well for the relationship between employee and manager/company.

share|improve this answer

Being irreplaceable means you suck at what you do. If you're replaceable, that it can mean two things: You suck so much, that anybody else could really just hop into your position and make your work. Or it means, you're really good: You deliver high quality code, that is robust, tested, clear and documented.

Providing such quality is desirable. As an employer, I don't want to have my code base full of voodoo performed by some cowboys. If an employee leaves or has an accident that will keep him from working, I don't want to hire an archaeologist to make sense of the code he left behind.

This advise is just really stupid and self-righteous. Taking hostages is not win-win and will sooner or later lead to frustration, that will be channeled to the employee, so you.

share|improve this answer

I've worked with a number of people who followed this advice. They were overcompensated and they knew it. They were afraid of changes in technology, and more afraid of becoming unemployed and having to go back on the job market with their obsolete skills. You don't want to end up like that.

I particularly remember one group whose full-time job was to maintain a set of buggy shell scripts to make Clearcase look like some obsolete DEC revision control system. Use of these scripts was killing my group, so I naively proposed that we just stop and work with Clearcase directly. I was right, but there were several employees whose paycheck depended on the use of those scripts, and they had a lot of reasons why those scripts were absolutely vital. A multi-hour meeting ensued. I don't remember the outcome; I left the company shortly after that and I'm sure they were very relieved. A year later the company was sold, and soon after that everyone was laid off.

share|improve this answer

I would never knowingly take a job at a place that valued putting someone into a role forever over quality work. Does the business not have ambition? Does it not want to grow and change? Nor would I stay at a place that ignored quality work, and just wanted me to do my job, and no more.

If you have any ambition at all, the relationship between you and your employer is typically much more mutually beneficial. Not only that, it can be a healthy thing, and starting off that relationship with anything like "holding someone hostage" is just ridiculous.

If a person craves stability and security ("I want a place that doesn't fire anyone") because they think businesses are a place that you do charity work, I don't want that person on my team. I'm not a cut-throat competitor by any means, but I've absolutely worked with people that just want to come in, have a stable job, and collect a paycheck so they can pay their bills. Those people, when you need a team of folks that can actually do good work and get things done, are completely worthless.

share|improve this answer

If your program is easy to understand, maintain and port, and if it is properly documented, it shows that you are both professional and that you care about the company you work for.

If you try to obfuscate your code on purpose or keep secrets, people around you may likely notice it. And whether they do or not, you will appear to be unskilled and unprofessional.

I think I would measure a programmer's skill and professionalism by the following:

  1. How stable their programs are. Both after release and after a patch.
  2. How good their programs are at performing their intended task.
  3. How easy it is to understand and maintain their programs.

If a program lacks any of these three factors, it is a bad program, written by a bad programmer. Someone who is trying to make themselves invaluable will leave out 3) and therefore seem less skilled and less professional. Further, by leaving out 3) they will shoot themselves in the foot, as they are the ones who must maintain their own programs.

share|improve this answer

The only way to be irreplaceable at your job is to do it so badly that no one can figure out how to pick it up after you've left. Especially when it comes to programming: Anyone can write code to do X, but not everyone can figure out how code written to do X works if the person who wrote it writes it as though they were drunk, high, and illiterate. And while writing system-critical code that way may help you be irreplaceable, I should hope that you have more pride in yourself as a programmer than to do so on purpose.

share|improve this answer

I'm seeing a lot of negative interpretation of this advice, so let me expound on a better interpretation.

You should be "irreplaceable" not because you write unmaintainable code, but because you write exceptional code. Ignore the part about "no one else will be able to do your job". That's ludicrous. But the part about "Prove to them that you are the best", absolutely. Do not fail to let your employer know just how good you are. Do not be the faithful quiet slave, and do not let your professional opinion be ignored.

Anyone with significant skill in any area can ethically use their expertise as a bargaining chip. Your time is valuable; expect raises or else go somewhere that will pay you for what your time is worth. Of course you have to actually have desirable (and relatively rare) skills or this won't work.

share|improve this answer

In any of the places I have worked that had more than one or two programmers, it was a critical skill for seniors to be able to mentor those junior to them. If you aren't passing along your knowledge, then you aren't a senior developer and you certainly aren't someone who would be promoted to managment, architecture, or systems analysis. People who hoard information in order to be indispensable are the most dispensible people in the organization because all you have to do is replace their system with one that the others can use. And by hoarding, you are giving everyone else the incentive to make sure what you do is replaced by something else.

That said, there is nothing wrong with becoming a specialist if that interests you. Some people prefer to learn depth rather than breadth. You may be the only person in your company with that speciality but that shouldn't make you irreplaceable. You need to organize it so that someone else can pick it up when you are not there. I've been the only database specialist, but when I left, there was clear documentation of the database's struture and the design parameters and the business rules that needed to be enforced by the database and why. I also educate my boss about critical jobs running on prod so that he could handle it if one of them failed when I wasn't there or was tied up on somoe other priority. After all, I want to be able to take vacation too.

share|improve this answer

Your boss will recognize that you are irreplacable, when you are already left the company. That time you will be working somewhere else.

share|improve this answer

I have an unattainable goal to program myself out of a job. If i can design and create a system that solves all of my employers problems and will never need to be changed because it will handle all concievable business rules intuitively. I will take the letter of recommendation from that job and include it with my resume and list of requirements for employment to my resume and wait for my equity offer from a fortune 500 company.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.