25

A colleague of mine made the argument to me that I should not try that hard in my current job as I am a software engineer and if I cut corners, the problems fall on my replacement when I inevitably switch jobs for a large pay raise in a decade. That there is no reason to care beyond skill development as it is not my company and I won't be there to really get any benefits beyond salary.

Is he right?

8
  • 54
    A decade is a long time to deal with self-inflicted problems.
    – Seth R
    Jul 29 at 16:08
  • 51
    It sounds like what he is really saying is: "Don't make me look bad, I've got a sweet thing going here"
    – musefan
    Jul 29 at 16:17
  • 36
    I'm not sure someone who thinks developers typically get a new job after a decade knows that much about development Jul 29 at 17:41
  • @JoeStrazzere Some Software Engineering industries have pay-grades based entirely on years of experience rather than actual proficiency. So in that case the answer is "neither".
    – Onyz
    Jul 30 at 11:03
  • 1
    @BittermanAndy That's the way that all Government Software Contracts I've seen work, unfortunately. I've seen many colleagues intentionally slacking off and still getting paid. It's a very sad state of affairs but that's where the economic incentives lead to.
    – Onyz
    Jul 30 at 14:50

13 Answers 13

73

He is not.

  1. You get better by being better, and will be able to achieve more over time. That leads to direct promotions/raises/bonuses but also makes your resume more desirable so you can change jobs. I've tossed plenty of resumes of someone who clearly just occupied a seat at their previous companies in the bin, I want to know what you know and have accomplished. If the answer is basically "I passively half-ass things" then I won't hire you, regardless of how many calendar years of experience you have.
  2. Your reputation follows you in tech. You are likely to work at places that have people that have worked with you - or know someone who did - and they will talk about whether you're a A player or a C player. Someone who will vouch for you is a powerful way to get better positions over time.

His advice is a good ticket to being in a junior role even deep into your career. You can follow it, and move from one faceless corporate minion dev role to another, and still mostly get paid. But if you ever want to accomplish anything, get a non-drone job, or reap higher rewards you will not be able to.

7
  • 4
    I see this posted all the time. I feel like the statement that you will run into the same people again is just a myth. To this day (working over 10 years in tech) I have never once run into someone I know. Jul 30 at 13:49
  • 3
    @Frozendragon I've worked with some of the same people several times. In one case I was hired by someone who was one of my managers at a previous job. In another, one of my managers was a director at a company I later joined, and I feel sure he was consulted when they were considering hiring me.
    – Barmar
    Jul 30 at 14:18
  • 1
    Of course, there's a big difference between a 40-year career and 10 years. More coincidentally, the two managers I mentioned were at the same original company, but completely different later companies.
    – Barmar
    Jul 30 at 14:20
  • 2
    @Frozendragon: everyone's experience is different. I've run into the people multiple times and across multiple cities. It's not a guarantee, but is it worth the risk? Jul 31 at 23:57
  • 2
    How can you tell from a CV whether the candidate is "someone who clearly just occupied a seat at their previous companies"?
    – OmarL
    Aug 1 at 13:02
54

First off, if you cut corners, you're not actually developing skills. You're developing bad habits. When you go to your next job for what you assume will be a big pay raise, you'll just be taking bad habits with you. You won't have learned how to accomplish things properly. So the problems that you've created and left behind will follow you in that you'll keep making the same easy to avoid mistakes.

Second, when you get into the habit of cutting corners and doing things improperly, you're not going to be able to express proper methods in an interview. Even if you "study" for the interview and can regurgitate the methods, your habits will present themselves in a technical interview or a code examination. People who are good at what they do will be able to spot your sloppiness from a mile away and won't even consider hiring you. People who don't spot it will have the same sloppy attitudes and behaviors, and your pay raise will move you into an organization where someone just left behind a pile of sloppy code that you're now responsible for.

As @mxyzplk indicated, your reputation follows you. They're right, and what's more, your habits follow you even more steadfastly. You might be able to escape a reputation by switching cities or something, but you can't escape your habits. If you want to be a professional, you have to behave as a professional. Otherwise you're going to spend your career being a clown bouncing between nightmare situations.

0
20

He has some points that are technically correct (the best kind of correct!), but overall this opinion is misguided.

Let's start with the part that is correct: Software engineers tend to change companies more often than those in other disciplines; it's not uncommon for a software engineer to change jobs every 2-3 years, and staying at a company for more than 5 years is rare indeed. So in that sense, he is right; you can (and possibly should; there are good reasons for doing do) change jobs after a couple years and it would not be uncommon.

If you write bad code (and let's not mince words, what he's telling you to do is to write bad code), then it is correct to say that some of the problems that arise from it will not be your problem; they will be somebody else's problem. That statement is factually accurate, as a statement.

All of this kind of misses the point, though, which is that you are working to get money (let's not kid ourselves here; the primary purpose of employment is to get money), and not working means that you don't get money, and so you need to work to maximize the amount of time you spend getting money. Which leads me into where this advice is wrong.

The core issue here is that if your code is sloppy then someone is going to realize it sooner rather than later. It's not going to take a "decade" like your coworker says; it may be more like a month or 2. Unless you're planning to leave the company in a month or 2, someone is going to find this bug (probably) and someone is going to ask questions about who did it, and they're going to realize it's you. If this happens enough, your boss may find that you are putting in too many bugs and the time it takes to fix them is worth more than your employment, and hence you find yourself without a job. That's not good. Then, once you've found yourself without a job, you'll also find yourself without a reference letter or industry connections or so on, which is going to make finding your next job harder.

The other problem with this is that, if you never think through a problem, then you never train yourself how to think through problems. This shows in interviews. You're going to walk out of this company (by being fired or otherwise), and you're going to interview for your next job, which will be a more senior role with a higher salary. Except, when you go to interview for that role, they'll ask you some senior-level problem that you'll have to solve. Except that you never thought about that because you were always lazy with your code at this company. The interviewer is not going to be impressed when you, with senior-level years of experience, come up with a buggy, shortcut-full, junior-level solution when you are interviewing for a tech lead position. So, you're going to end up taking lower level jobs forever, because you're not building up the skills you need to get higher level jobs.

So, don't do this. It's not going to work out for you. Let your coworker torpedo his own career this way if he wants, don't do it yourself.

After such a conversation, though, I may be tempted to treat pull requests from this coworker with a bit more scrutiny to make sure you don't have to deal with any crappy code of his later on.

1
  • 3
    +1 for the answer, and if I could, another +1 for the last paragraph alone! Jul 30 at 13:24
18

Other answers have covered lots of external motivators for not following this colleague's advice.

On a purely personal level I enjoy my life more when I can take pride in my work. That's what I want; it doesn't need external incentives to be valid1.

So I certainly don't want to cut corners and leave a horrible mess for the next person in my position. For my own personal happiness, that seems like terrible advice.

It's not like cutting corners would give me any less work to do anyway (often the complete opposite, in the medium/long term); at most it just gets me on to the next task sooner. Even assuming the company only has a finite amount of software work to be done and once it's all done you can stop, the company isn't going to pay you for all the time you've "saved" by not-really solving the company's problems. It just hastens the time when the company thinks it no longer needs me, and I'm looking for a new job. So even if we suspend disbelief for a moment and accept your colleague's reasoning that you you don't "need" to do a good job, what is there to actually gain by doing a bad one?


One caveat though. Wanting to be proud of my work doesn't mean I'm going to let my job eat my non-work life by working ridiculous overtime; my pride in my work is attached to how well I do it, not to how much I sacrifice for my employer.

So if your colleague is saying "don't try so hard, you can cut corners" because they see you doing that, then I think they're phrasing it badly but they are coming from a good point. Working unnecessary overtime is making a donation to the company every bit as much as if you were writing them cheques, and you are extremely unlikely to get any return on that investment later.

However that's unrelated to "let it be the next developer's problem, you're going to move on before anyone notices if you cut corners", really.


1 I don't subscribe to the kind of "people need jobs to be fulfilled as human beings" rubbish that shows up in politics all the time. I'm at work to earn money, and if income was not an issue I would not be doing this. But given I am at work, I want to be proud of the work I do there.

2
  • 2
    +1 for the charitable interpretation of the co-worker's position. Most people out there aren't miserable slobs. :) Jul 30 at 13:26
  • 1
    I’ll say that if I have to go to work I might as well enjoy it and do something that I can be proud of. Especially since it ends up being a lot less effort. I’ve seen people wasting more effort on trying to avoid work than others spent on actually doing it.
    – gnasher729
    Aug 1 at 17:05
9

Yes and No.

Summary: I'd say forget about "cutting the corners" part. Just don't get obsessed with perfection or emotionally invested in a project. And like he advised, don't take your eyes of skill development which does mean you have to care about the quality of your work.


Assuming he is not being cynical about his profession, he is partly right. In the old IBM, some good managers warned developers to watch out for Gold Plating, which, very simply put, means don't deliver more than what is asked. Stick to the specs the client or PM has provided and don't over-deliver on it because often you may not be appreciated for it, and in worst case you may even create an issue in the future (for example, adding a feature that wasn't even requested). Unless it is for skill development (as your friend rightly highlighted), it can just consume your time unnecessarily and affect your regular work and overall productivity (from the point of view of your managers). Overly obsessing about perfection of your work can also result in faster burn out.

He is quite right that you will be switching companies for a better pay sometime in the future (in any industry, it is a fact that your chances of getting a pay hike is better with another company than the current one). And thus he is also being practical in advising you to not be that emotionally invested in your current project.

It may also be that he is speaking cynically from his overall experience in his profession and / or particularly with the current company. It may be that he is telling you that the current company doesn't really care much about the quality of work you do. And thus the bare minimum suffices there to survive.

But that maybe his experience due to his personality and his particular managers. It is not necessary that you may experience the same thing. Perhaps you may be smarter and more professional than him and / or have better managers than him who will appreciate the effort you put into your work. And that may mean the difference for you in getting better incentives or promotions.

There is also the matter, especially in the software industry, that if you don't get into a management position by the age of 35, you will be more likely replaced by someone younger because they are cheaper. And in such a scenario, to advance forward, you sometimes do have to think in terms of the metrics the company cares about.

But then, different companies measure different metrics - some companies may care about quantity (which manager can squeeze out the most work for the lowest pay and deliver a "satisfactory" work) to another that actually do care about quality too (let's a hire a few good people and pay them what they deserve, rather than hire mediocre developers for lower pay). So you cutting corners may benefit you in your current company, but it may reduce your future job options with companies who don't appreciate that.

2
  • Mainly correct, but anecdotally, I am 50, never been management, never been replaced by "someone cheaper". I HAVE changed jobs every 3 years max and was a contractor doing 3-12 months contracts for years.
    – kpollock
    Jul 30 at 10:33
  • @kpollock That's the caveat that I didn't add - "unless you change jobs a few times". The point is to not stagnate.
    – sfxedit
    Aug 4 at 17:23
4

To answer the question as phrased in the title: for the other discretionary part of the equation. Increases in compensation are discretionary on the company's part.

While there are always outlier individuals, companies do a good job of paying their better workers a better compensation. An employee who wants a better raise should strive to do a better job, not just an adequate one.

While some would point out cultures/countries where employees are not treated so well, even in those places I suspect software engineers still do better than most other workers.

It sounds corny, but I believe if you keep trying to do the best job you can at whatever you do, you will do better than those around you who just get the job done.

2

Aside from everything that's already been mentioned, I'll add my take:

What you do in the course of your career and how you do it is a direct reflection of who you are as a person.

Are you the kind of person who cuts corners, takes shortcuts, who doesn't care about the end results, who doesn't concern themselves with leaving problems to others? Are you lazy, a slacker, someone who doesn't care about the quality of their work?

People in the workplace are going to say one of two things about you. This is going to follow you for your entire career:

  1. He/She did great work.

  2. He/She didn't care about the work they did and the results of their work reflect that.

Which person do you want to be? Answer that and you'll have the answer to your question.

1

IMHO, this is very connected field and everything you do can help or bite you on the butt in the future.

It is not uncommon for new employer or potential employer to call previous jobs and ask how are you as a person and a professional

1

He is. Workplaces are built on exploiting your labour which means overworking you and underpaying you. Unless you have a specific promotion you are looking towards or a specific skill you want to develop that will be beneficial to you (not just your employer) you should always provide a minimum amount of effort (I guess to some extent commensurate with your pay). Never give your employer extra effort or extra ingenuity unless you have a guarantee that your efforts will be adequately repaid. Remember: your employer doesn't care about you as a person, only as a cog in a profit generating machine (and they want to make you as cheap and replaceable as possible), so don't care about them

0

Your colleague has an opinion, his claim is not a fact one can objectively measure, at least in the terms you described without exact quotes.

This is neither wrong or right as far as facts go. First, because nobody knows about the future. If kids in school were to start learning programming at age 10 as of now, then in ten years you will have to be a very good developer if you want to switch jobs with a high pay raise. And the market would be overflowing with decent developers, even if the good ones remain hard to find. Or maybe in ten years, the market for developers may get even more difficult for hiring managers so that even crappy developers would be making tons of money. Who knows? You can place your bets.

What I would like to point out, is that he defends a cynical worldview. Which again is neither objectively right nor wrong, but it may be harmful to your mental health. In general, self-accomplishment requires people to:

  1. Believe that they are good at what they do
  2. Be aspirational versions of themselves, that aim for something more
  3. Be well seen by others.
  4. Feel useful for society.

If based on your colleague's advice you decide to do a lame job and not put the effort to improve yourself, then you are likely to fail on most of these four items. Even if you do get this large pay raise down the line.

If you work hard but maintain a good work-life balance, then these items are more likely to be well in place for you, you'll feel better and maybe get raises and promotions faster.

By the way, legend speaks that Jim Carrey persuaded Nicolas Cage not to submit an application for the role of Andy in "Man on The Moon", as a great star such as himself should never go through that sort of effort. Meanwhile, Carrey hired consultants and scenarios to produce a high-quality test tape and eventually got the role. Check if your colleague is not plotting a similar scheme on you.

0
0

Your colleague is way wrong and his opinion counts on the assumption that all workers are cogs being exploited by their employer.

The easiest way to be treated like a cog is to behave like a cog and the easiest way not to be treated like a cog is to behave differently. Some of anyone's ability to stand above the other cogs depends on one's own skill set and capability. Skill and capability you will not be building if you "cut corners" and allow the fallout to drop on your successors.

You are being paid to do a job. The value you provide to your employer can match what you're paid, fall below what you're paid or rise above what you're paid. Your colleague's opinion would put you at the lower end of that curve -- either providing less in value than the compensation you receive or barely meeting it. I can guarantee that your employer will never give you a raise if your value falls short or merely meets the value of what you're paid. This will leave you with only one opportunity to make more money and that's to switch companies.

Some managers and companies will never treat you as anything but a cog no matter your individual contribution -- these are cog companies and you can choose to be a cog there or move on.

Cogs suck, whether they're companies or fellow employees. Cogs don't want anyone else escaping the cog machinery by being better; they don't want other employees making them look bad and they don't want other companies beating them in the market. You should perform your best no matter what you're doing. If your best is cog level then so be it, be happy as a cog.

If you have a choice, if you have the ability, if you have the drive then don't be a cog. Rise up above the machinery. You will be rewarded and won't have to depend on escaping one machine only to join another in the hopes of getting a raise.

Sometimes it's hard to escape because of peer pressure. There will be fellow employees and others who will tell you you can't rise above the machinery, that you're just another cog like them. Don't listen to them. By definition, the bell curve places the vast majority of employees in that mediocre, cog-like center. Either be happy there and accept your fate or make your own way.

0

Mind your own interests

There are millions of companies in the world, and each one is unique, with its own management, financial situation, workplace culture etc. However, in general, all of them pay their employees for some work, with implicit assumption that this work brings profit to the company, i.e. its owners.

When an employee no longer brings profit to the company, in most cases company would try to get rid of him, i.e. to cut losses. Therefore, at first glance, your colleague is right - you should not exert yourself for the sake of the company. You could work with minimal effort required no to get fired, and that is it.

However, depending on the circumstances, there are some situations where you would want to work harder, not in company interest but in your own. These situations are:

  • Possibility of promotion, raise or bonus. If a company has a culture of rewarding overachievers, then why not, invest extra effort so you could reap benefits later. Of course, this could be tricky to deduce right away when you start in a new workplace, but in a few months you should be able to "feel" atmosphere in the company.

  • Improving own skillset. Even if a company does not reward aforementioned extra effort, if the technology you are using potentially brings you profit afterwards it is advisable to work hard and master it. Of course, in that case you would not stay forever in the current company. When your skills mature it would be time to find new job.

  • Reputation in the industry . Even if you are working in dead-end low-paying job, some of the colleagues you meet there could be potential colleagues in new job. This goes especially for some niche narrow-expertise fields. Therefore, calculate carefully do you want to be remembered as a slacker. Of course, if you are working for example as a general-purpose Java developer, probability of this happening is much lower.

  • Having a stake in the company . Self-explanatory, if you own stocks or have a contract tied to company profit (bonus based on profit) , you may want to work harder then usual.

Overall, what ever you decide, don't be ruled by emotions. Companies are not living beings, you do not owe them loyalty beyond your contract. Business world is rough, and you should act primarily in your own interest.

0

Most answers here focus on utilitarian aspects: You may be found out, you may encounter colleagues later who were disappointed in your work, your career may progress faster if you deliver quality work. But these utilitarian aspects are not all there is to it, perhaps not even the most important part.

The reason that we should strive to do good work, and the reason that a good product is a source of deep satisfaction, lies in the special nature of work, or labor. Hegel, the philosopher of dialectics, recognized this: What we call "work" is the fundamental human interaction with nature. It is needed to shape the environment we live in. This interaction is at the core of the human existence. In the creative process of shaping our environment we infuse the products with our ideas, our personality, our humanity. We imprint them, if you want, with ourselves. While Hegel surely thought of a carpenter or tailor, his insights are equally applicable to programming, perhaps even more so: Bits and bytes, after all, restrict our creativity much less than wood and wool. There are no limits to the quality of our programs beyond our own.

Here is one of the most famous excerpts from Hegel: The Phenomenology of Mind (emphasis by me):

in fashioning the thing, self-existence comes to be felt explicitly as his own proper being, and he attains the consciousness that he himself exists in its own right and on its own account (an und für sich). By the fact that the form is objectified, it does not become something other than the consciousness moulding the thing through work; for just that form is his pure self existence, which therein becomes truly realized. Thus precisely in labour where there seemed to be merely some outsider’s mind and ideas involved, the bondsman becomes aware, through this re-discovery of himself by himself, of having and being a “mind of his own”.

The things we produce are an expression of what we are, become parts of ourselves.

Choose wisely.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .