Developers aren't compensated for any extraordinary achievement, though. Unless they own a notable share of the company. So, why should they give everything and get nothing back? How is that fair?
Salespeople and managers usually consider technical guys pariah. They can always be outsourced or otherwise replaced, and they can be blamed, for example for failing to meet impossible targets. If there's success, it always is a manager's achievement.
Developers also get roughly the same pay for both working minimum and for screwing their lives and healths on powerpoint-driven death marches. The compensation for extraordinary success goes to shareholders, and maybe managers or even salespeople.
Devs are paid a premium, have generally much more relaxed work schedules than managers or any customer facing role.
If you screw over your health working in a toxic environment that’s on you IMO - as tech worker you probably have more opportunities to improve your working conditions than the vast majority of humans
Or, what is your comment meant to claim exactly, beyond the extremely obvious "there are exceptions to the rule" trope?
> Developers aren't compensated for any extraordinary achievement
That as a blanket statement is just not true. Of course it does not apply to every single developer, I would even say it doesn’t apply to the majority.
If your management is good, it absolutely is remembered and impacts future performance and promotion cycles.
So, if you want a bonus as a software developer, be a sales rep by happenstance. Probably helps if you went to a prestigious university where you met people who went on to prestigious roles...
never seen any one-off bounties or extra bonus for shipping one specific thing. usually it just gets rolled up in the "your yearly performance discussion".
obviously founders / owners / folks holding a lot of stock are playing by different rules
My first job as a developer made me work around the clock, day and night, for a below average (nationwide compared) salary. And I got yelled at.
Since I didn't have enough work experience, my applications weren't responded to. There were no ways to improve conditions without changing jobs.
Ofcourse it is fair. How can you say you get nothing back? They pay you salary you agreed on when signed contract.
> My first job as a developer made me work around the clock
Bad employer. Maybe doesn't obey the contract on their side and doesn't pay for overtime. Tough one until you level up your experience for sure.
But I'd expect salary to be below average in your first job. You still don't have the necessary experience. And when you do, you CAN find another job.
Just don't have bad attitude towards your job. You will be rewarded one day for being a honest and productive worker.
If a company is that pressed for time, theyre not going to fire you. Take your time and do things right, dont Boeing it up.
22.5 years later I can confidently say you are living in a comfortable bubble and have no idea what do most programmers go through every day.
And religion is not always bad. It can help us stay focused, and selfless for some unknown greater good.
That greater good does not have to exist. But decreasing the focus on self can still be good for your soul.
Only applies to people who mostly focused on themselves.
I'd argue that most working people have the opposite problem: they have to focus on everybody else's problems but not theirs.
I'm only working towards tangible greater goods. Including my own inner peace.
I had a similarly shitty first job, although I was lucky to be in France, which was very strict worker protection laws, so "working day and night" was 'only' 10 hour days. However, after like 8 months there I was able to get another job - it doesn't take much experience for recruiters to start reaching out on LinkedIn aparantly.
The workers protection authorities are not resourced to do any individual checkups, and going to court against a company would take years and possibly leads to lifetime in debt. So the practical way to resolve this is to change companies.
If you work at a traditional workplace, think of yourself as a professional. Do the best work you can during business hours, without ruining your health. The company is paying you to make decisions that are best for them, and you may not like it but that is what you agreed to. At the same time, they only pay for your work and not your soul. You need to keep a balance between work and you as a person.
Unfortunately there are many toxic workplaces out there, and if I ended up "trapped" with no escape, I would probably consider things differently. But when you finally escape, keep an open mind and try to put your bad experiences behind you.
I did put that behind me after switching jobs.
My initial outlook and attitude on professional life was that I need to try hard and stay positive and help everyone. I expected other people to work for common goals, put their own goals aside, and be friendly. As in school, that mostly lead to abuse. I'm only advocating against trying too hard because I've hurt myself with it.
As a child, I was taught to go the extra mile, work in a sustainable manner and never blame anyone. At work, I have never refused to work on a problem because it's not my fault or someone else would be a better fit for it - and that makes me a very good scapegoat and a fine target for impossible requests.
Guess what happened? I'm right now stuck with a person who is asking daily for something I have explained to be impossible, and does not accept my answer. So he asks again. I have no idea what to do.
I can't set boundaries or take care of myself, so I'm a bad employee and a bad person who doesn't try enough. Great.
Maybe that means talking to a professional therapist to find out how you can handle the situation. They get paid to help you, and there is no shame in that
Like most workplaces on the planet. Check your bubble.
I agree with your advice but you have to understand that many people start families and that tilts the table in favor of the employer; people become very risk-averse and dare not refuse anything. This is a fact and it's happening every second to dozens, if not hundreds, of millions of people out there.
> Unfortunately there are many toxic workplaces out there, and if I ended up "trapped" with no escape, I would probably consider things differently.
Please do. Living paycheck to paycheck is the reality of most working people.
this reply goes for everyone complaining about jobs really, everyone has strengths and areas where they can grow- so focusing on these can lead to greater job satisfaction.
If you believe otherwise I would question your real life experience.
The notion that devs have better hours than managers is either a fiction or conflating managers with founders. Who do often work ridiculous hours and expect everyone else to do it too - and enthusiastically - even though they’re the only ones with a stake in the outcome.
Grinding meaningless Javascript to deliver more advertisements and conflict to people is neither motivating nor important, or at least it shouldn't be to a responsive person.
2) Not everyone can be a doctor
We can all find meaning in our own work.
Get nothing?! What a strange way to view a paycheque.
"Hi, you're only paying me, but that's not enough to expect a solid work ethic. Instead, I'll make sure my work is just passable. Want more, and now you have to pay me more!"
Where I come from, "extraordinary achievement" is just "doing your job".
(Are you advocating something else? I'm not suggesting free overtime, just doing the best job you can.)
Do what's expected in the interests of the business, not in pursuit of some "great software" ideal.
Only in theory. In practice, the incompetent leadership leads to those naturally being identical, as in "we have to deliver project 17 for this year, please do your best!!!" and ad infinitum.
> Do what's expected in the interests of the business, not in pursuit of some "great software" ideal.
Who mentioned this? Only you. A projection on your part, it seems.
>Unless you have a stake in the company, it is NOT your job to make sure the company is the most profitable it can be. Your job is to create great software. What's great software? The kind you'd be willing to put on your resume without feeling bad.
You did omit the first part of my comment however.
There is something to be said for 'if you're going to be a rational economic actor and you have a salaried job, the optimal strategy is finish your job's tasks as fast as possible and work on a personal project which you control the upside to with all your extra energy'.
From a purely economic point of view, spending any effort beyond the minimum at a salaried job is a waste of effort - the expected value of that extra effort is nil, unless you own significant stock. This may be why many tech companies offer equity as part of their compensation.
That's a very protestant work ethic worldview. Doing what is expected from what you're being paid in the best way possible is not a poor work ethic, it's a pretty rational one.
The other side of it where one always strive to do more, to go above and beyond what you're being compensated for, and so forth can also be a quite poor one. God is not going to give you extra points, for some people doing their best work at current expectations is good enough, no need to spend more energy than required on a job, there's more to life than working and accumulating.
The problem is, people don't "get it". There are people in this thread protesting about "doing poor quality work", eg, "racking up tech debt". Why?
Because it eats at them. Because they are in this to build, and build that which holds, which has value.
They have pride in their work! Yet the response some have here is simply don't do the best you can do. These two things are counter to one another!
I am advocating that yes, do the best you can do. Take joy, deep internal joy in doing your job correctly, because of what you build. This indeed does not mean doing the bare minimum, by some broken, made up rationalized excuse.
As I said, a good work ethic is not a protestant thing, it is a human thing.
We can expand this to everything. What are you being compensated for? Are your ethics formed around what's profitable?! Madness!
It's also interesting that you bring the Japanese into this. While they certainly to care a lot about producing high quality work, they also have one of the world's highest suicide rates.
I understand taking pride in what you build.
However:
1) it's important to not let that destroy the rest of your life
2) it's a lot easier to take pride in what you build when you're working on something you own[0]. As I believe I alluded to in other comments on this thread, and was kind of insinuating with the original comment that you replied to, deciding that extra effort spent on a dysfunctional enterprise project micro-managed by 3 competing orgs who spend their time changing requirements in order to win minor political victories (yes, this is an extreme example, please bear with me) is better spent on a personal open-source project, or even building something like a sport club or happy family seems to be the logical course of action when you care about what you build.
Which isn't to say don't do the best you can at work - ship the code they ask you to ship, write it well, add unit tests, all that jazz. But then once that's done, you can either focus on being the best employee for Megacorp, which is likely to be soul-crushing, because you'll have extremely little reward for your effort, or you can be the best employee of You, LLC, where you natural human desire to make something beautiful can express itself in a way that is much more rewarding for you, both financially and emotionally.
> Lastly, you're trying to shift the discussion by claiming "best way possible" as opposed to others saying "do the bare minimum". These are very often not the same.
Because the discussion gets murky exactly at this point. Doing the bare minimum means not going out of the way to solve issues for others, like Americans working outside of their working hours and bosses expecting that should be done. I have many work colleagues in the USA who are beyond annoying by trying to prove themselves by working outside of what they are paid for, with the thought they should go "above and beyond" instilled in their minds. It just creates issues for other cultures who do not prize themselves in sacrificing their lives for the job.
The other side of it is doing the best work you are willing to do, with the limitations you currently have (skill, health [physical or mental], time, etc.), that's what I call "bare minimum" for myself. I won't be wasting my time trying to come up with new products, new paths of generating revenue, simply because I'm not paid for that, when I am in that spot I definitely offer the best help I can but I won't be fighting political infights, depriving myself of a life to work another 2h/day to setup a new project for some higher ups, and so on.
> I am advocating that yes, do the best you can do. Take joy, deep internal joy in doing your job correctly, because of what you build. This indeed does not mean doing the bare minimum, by some broken, made up rationalized excuse.
You don't need to take deep internal joy of doing your job correctly, at all, one just need to have a work ethic that doing your job correctly is the right thing to do, it's what I'm being paid for, and that's the bare minimum. If that means I can slack off a little bit because I'm aware I can deliver what's expected so be it.
Perhaps we are talking past each other here because I do not disagree mostly with you, I probably just disagree with your approach to it (and hence what I called a derivative of the protestant work ethic).
> As I said, a good work ethic is not a protestant thing, it is a human thing.
Not necessarily, if your work is bullshit and you are not paid enough for it without much chance to do something else because of life's circumstances there's absolutely no inner motivation to have good work ethic.
> We can expand this to everything. What are you being compensated for? Are your ethics formed around what's profitable?! Madness!
Much the opposite, what's profitable is usually the least of my concerns ethically-wise, I would even say it is most times detrimental to ethical behaviour.
I take joy in projects that I actually find meaningful. Being an underpaid cog in the machine, working on JIRA tasks visioned by someone else isn't meaningful. Lack of adequate pay makes me feel underappreciated, and frankly destroys any motivation I could otherwise have. So no, I'm doing the bare minimum and don't feel bad about it. I treat my employer like it treats me, that's called justice.
As I'm writing these words, an aspiring musician is probably sleepwalking through his day job because he was up all night practicing his music.
Or Paul Graham, when he talks about writing the book On Lisp during his time at Interleaf [0]
You are right.
...Most are much worse. :D
No? Then you'll keep seeing what you call "mediocrity".
I am a pretty good programmer and have literally saved businesses, several times over the course of my career.
Never again though. A pat on the back is not enough of a reward.
Start your thought process by making the extremely obvious distinction between these two.
Ultimately anything can only give you feelings. I don't understand what else would you expect from (pursuing) being excellent (just to clarify, I define "being excellent" here as being extremely skilled at some ex ante selected task or creative process; both individuals and organizations can have that property).
But I get what you're saying. You feel like being excellent should give you money, fame and ladies. But you can get these things without being excellent. At some point, being excellent is a burden, and it's irrational to pursue it if you have those goals (of money, fame, etc.). (Someone else said in this thread that they want "a credit" for the excellence. Well if you want that, you don't need to be excellent, you just need to be good at pretending that you're, in front of people who you ask for the credit.)
Now, corporations (and private companies in general) are setup to pursuit profit, not excellency. If excellency gets in the way of profit, and mediocrity is sufficient, they won't pursue excellency, regardless what the individuals in those companies want. That's organizational laziness. Note that organizational laziness is rational (and we teach it to MBAs), because rationality only ever makes sense with respect to your goals (which here is pursuit of profit, not of excellency). But that also means, rationality is never gonna tell you which goals you should pursue. Therefore, to decide to want excellency will always be an inherently irrational act (therefore, you only do it for good feelings).
The point of the second comment I made was that yes, some people choose to build mediocre (capitalist) organizations (based on profit maximization and labor market) in pursuit of organizational excellency. To me as a socialist, this is a foolish mistake. If you're interested in excellency, you should build organizations of peers (like cooperatives) who intrinsically share that goal, not subordinates who have to be motivated extrinsically. I should also note, every organization will get parasites who have different goals, like work for less effort. Unless these people are somehow a burden on the goal of excellency, they are less problematic in organizations that pursue excellency than in capitalist organizations that pursue profit. Therefore, the organizations where the excellency maximization is a goal may seem to be collectively less efficient (more wasteful) than those where profit maximization is a goal. Again, this comes from the fact that being excellent is not necessarily the optimal way to pursue an extrinsic goal, such as profit.
Hand-wavy dismissals are not a discussion argument. I don't accept this as a rebuttal.
> You feel like being excellent should give you money, fame and ladies.
And that's called "tearing down a straw man". Why are you arguing in such a bad faith?
The only thing most of us who finally smartened up about the labor market is this: profit must correspond with reward.
You and others seem to conflate this pragmatic view with the suggestion that we do sloppy work. No, we do our work just fine and we do it well, reliably, and on schedule. What we do NOT do is to go above and beyond.
But you and others seem to get triggered on other topics (mostly about human excellence and "we as a society must all help") that have almost nothing to do with the discussed topic and give your takes not on it, but on these other things.
Finally, profit being an "extrinsic goal" is a needless philosophization and does not advance any discussion.
Lazy pay, lazy perks -> lazy workers.
You are not being paid enough to rack up tech debt during 80 hour weeks constantly moving from one sales-driven project to the next, because that's a stupid way to develop software and it'll burn you out after a year of back-to-back "why isn't XYZ done?"/"why didn't you make XYZ not buggy?" meetings, at which point you'd better have made enough money to retire to the Bahamas.
where?
They aren't giving everything they're there to do a job and that job is make the company profit.
The person you are replying to isn't saying "you need to go the extra mile to make profits" they're saying "you should be focused on making money for the company, not on personal preferences in your code".
But GP is saying everyone except the devs is there for status and fat bonuses. You’re talking like a defector.
Common misconception, but a non-profit needs to make a profit, too. It just gets invested back into the business instead of distributed to shareholders, or in fact to any individuals.
Look: job 1 is making safe software, job 2 is making money and job 3 is perfecting the architecture.
If it is, then at least you have a simple test case to work with so they've done a chunk of the work for you. If it's not, then they'll spend ages trying to craft a test case for a scenario that's extremely unlikely.
People very often leave you alone when challenged to put in the work to prove their point.
>It really isn't, your job is to make a great product. Making a great product often, but not always, requires great software.
I believe that depends on the role you have. If you're a software engineer I think you should try to create great software. If you're responsible for the product you can decide it might be better for the product to ship earlier or with the current state of software but I think you should not keep your software engineers from trying to make the software great. You can try to shift their focus on a different (software) topic that you think is more important if you don't like what they are currently trying to improve.
This is different from always making great software but shifting priorities.
Absolutely and categorically it is not. That is complete nonsense. Why should an employee care? Unless there's some profit sharing scheme in place that would benefit the said employee and they took advantage of that scheme. And even then, employees typically (and I'd even say in the vast majority of cases) have very few and tiny levers to pull to affect company profitability. So you typically you get nothing if the profit is x and nothing if the profit is x+n and even if you get some of that n you can't really affect the absolute value of n. Why should you care about n again? Oh, right, so the company doesn't go under and/or lays you off. That shit may have worked 20-30 years ago when company loyalty and upwards mobility was a thing.
> It really isn't, your job is to make a great product.
Nope, that's the product manager's job. Here, a Wikipedia link, just for you: https://en.wikipedia.org/wiki/Product_manager
They don't have to care, they are just there to do a job. If your company values a release now more than a more stable one later, it's not on you to refuse to do that.
In a well-working organization, that absolutely means that you, as an engineer should look into how to do X with the least amount of effort, hush things up, and ship it. The PM is the one that has to decide into hushing or not things, you are the one to decide how.
The problem is, every single organization where the PM insists on you to hush isn't well-working. It's easier to win the lottery than it's to find exceptions here. On those problematic organizations the PM will use your results to improve their curriculum and will absolutely throw you under the bus when the hushed product behaves like a hushed product. And everybody will be happy with kicking you down.
Also, if the product has any kind of safety impact, it's not the PM's job to decide about it anymore. It's yours.
Its interesting that a lot of the replies here are railing against the idea that software devs are used as cogs in a machine, yet at the same time all replies are arguing that a dev should only be a cog in the machine, and any further context/awareness/action outside of being a cog should either not be expected or make the dev eligible for an outsized reward.
So to zoom in on your reply:
> Why should an employee care
Because they are paid to make the company profitable, and if they fail to do so they may not continue to be employed. I'm not sure why this is controversial. This requires no profit sharing to be in place, because it is simply the job that is required of the employee. It is probably by far the most general description of a job that is not: "the thing you do for money".
It may very well appear that the employee has no direct influence on company profitability, but since this is nearly impossible to measure objectively the next best thing is to try to make sure that he or she does by listening to signals coming down the hierarchy of management. Your PO telling you to hack a thing together is such a signal, and should be listened to. You warning about a giant pile of tech debt is a signal you should send to your PO, that he/she should listen to.
This is all absolutely trivial.
To generalise this, it's everyone's job to create value. This may or may not result in profit, but ultimately aligns with the goals of the organisation.
In some cases, ship vs not ship, profit vs not profit, is the difference between a company thriving and failing to thrive.
In others, there are second- or third-order effects that render marginal profitability kind of irrelevant to the trajectory. This usually applies to either very large / institutional orgs, or situations where the business is leveraged by investors (VC or PE) such that the kind of honest profit earned by shipping an update or a new product won't meaningfully impact on the company's fate. In those situations, doing good engineering and cleaning up tech debt might make more difference to yours and your colleagues' lives, and maybe even your customers', than shipping.
That's their problem, not mine. I get paid a fixed amount. If I get paid the same + a percentage of outcome then I'll change how I work.
Easy to understand, I believe.
It becomes a nasty chicken and the egg problem though -- many companies pay less as a risk management strategy, and that leads to the employee not having enough motivation. Of course from then on he/she does not want to excel and the employer concludes they made the right decision which is of course super wrong.
It's quite tragic on a human level but I stopped caring about that aspect as well. At my age and experience I just shrug and say "You get what you pay for" and I am not interested in trying to school people who would never change anyway.
This attitude is more likely to get you fired than rewarded in most companies.
If you step outside your role, or even lift your head up and peek around and offer your thoughts about what you see, you'll be at greater risk for no reward.
Again, in most companies, not all.
Please give some examples of great products created by software developers that have terrible software behind them.
There's a third and even more common option: seniors who really could care less about either
Who do you think is more likely to be lying? The person who claims to care about the bottom line or the person who claims to care about code quality? From my experience the former is almost always a bullshitter
This is a terrible take, and one I generally see as a signal of lack of seniority in a software dev. It is absolutely everybody's job in the company to make sure it is profitable, unless you work for a non-profit.
The thing is though, that profitable is not the same as "just ship it". If you're in a company where those things are conflated frequently, that's a sign of lack of seniority in management.
> Your job is to create great software
It really isn't, your job is to make a great product. Making a great product often, but not always, requires great software. Many great products have terrible software behind them. The tension between product, sales and development should result in a compromise that creates the most value short, middle and long term. It is 100% your job as a developer to understand what can and cannot be hacked, what priorities the company has beside delivering great software, and finally: when great software must be made, because compromise is unwise.
Just like the boy who cried wolf, the developer who can never compromise on software quality is powerless when there is an actual reason to not compromise on software quality, and rightfully so.