There's massive caveat with all of these "and then the story ends because we didn't just ship it :(" stories: sometimes the value of the "app" you're working on is in the technical details that cannot really be "hastened" and you can't "just ship it".
Also, and this is something a lot of the managerial class people don't want to hear:
Your job as a sw engineer/architect is to resist the "just ship it" pressure from the management as much as possible. So unless you own what you're coding and you really need it out of the door for your own benefit, if more time makes your work more professional, then take more time. Anyone telling you otherwise is a 100% hack. You are not an automaton that takes in JIRA tickets and spits out hacky code as soon as possible. Or at least you shouldn't be. Not to mention that not taking time (doing things properly) is incredibly taxing on your psyche and you WILL burn out. There are only so much garbage tasks you can take.
It's worth repeating: 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. This is the thing that will ultimately make you feel good about the work you're doing. Hitting that arbitrary deadline for a 1425474th time may feel like a relief but it's short term and a form of negative motivation - and in the workplace, those NEVER work over a long period of time. So RESIST that pressure from the top and do your work properly. If they fire you, then who cares, the only way up these days is job hopping anyways.
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.
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.
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.
My experience working in this industry is very different and devs do get recognition and sometimes bonuses (if certain goals are hit).
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
Maybe that depends on the job market you're working on. In some countries salaries are more affected by personal performance than in others.
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.
It sounds like a toxic workplace, but you should do yourself a big favor and try to put that behind you. If you keep that mindset in your new job, your perspective will be negative and you risk burning out.
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.
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.
Please do. Living paycheck to paycheck is the reality of most working people.
Is it the reality of most software engineers though? I recognize I live in a wealthy part of a wealthy country, but it hasn't been particular hard to be an SWE, I live well below my means.
You live alone? I have a family. That introduces a rather big difference in monthly expenses.
You just sound like you're venting and depressed tbh, if you're in STEM and working "paycheck to paycheck" then either there is a skills mismatch or you refuse to improve in some critical way that has been addressed to you already.
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.
Thanks for your assumptions.
I'm sorry to say but I'm very much burned out already. It all went well for a while after switching jobs, but the lockdowns and remote work ruined what was left of my life. My friends noted that they don't miss me, my company switched to completely remote etc. I can now only sleep and work, I can't even think of anything else anymore.
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.
It sounds like you have ended up in a bad situation. There's no real suggestion I can provide for how you can improve your situation, other than to try to find a way to disconnect. (Meetups, walking, museums, hobbies).
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
They usually get paid by the hour so they have a vested interest to talk BS and prolong the session as much as they can.
A good therapist can help you with this.
If they ask for the impossible then perhaps things are not looking good for the company. I think you better figure out somewhere else to go soon because that tends to mean they won't last much longer. It's a tough market but there is always hope, try and build out some side projects and get out before your company starts to fold or you are let go. Sometimes just a change of view is nice so maybe try something different.
Ofcourse it is fair. How can you say you get nothing back? They pay you salary you agreed on when signed contract.
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.
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.
I would say that their view is akin to religion. Any religion really.
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 think whether it is fair isnt the right question (which is subjective and I disagree anyway) but whether it is rational and advantageous for you. What benefit do you get for rushing a job and shipping shitty code? I think the downsides vastly outweigh the upside.
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.
I'm sorry to hear that.
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.
We have the laws in place in Finland, too, but they aren't enforced in practice. So, people who refuse to obey them get an advantage against people with integrity.
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.
I have never known a software developer who got a bonus. Rarely even recognition.
I get two bonuses every year - one for individual achievement and one for profit sharing.
You and every other programmer on the planet then?
Or, what is your comment meant to claim exactly, beyond the extremely obvious "there are exceptions to the rule" trope?
Well the original notion here was
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.
It is true when it applies to the majority (and nobody said something is only true when it applies to 100% of a group because then absolutely nothing would ever be true when it comes to people). If you think otherwise and are convinced of it then you are very privileged -- and I actually envy you. You have no idea what contractor programmers go through out there, apparently.
This is too angry of a reply to someone adding their personal experience onto your comment about how the world is. I appreciate their anecdote refuting the claim; I think it makes a better discussion than just superlatives so I think you should get back to your point (which I mostly align with) instead of attack them on "just because you showed an example where my rule isn't true doesn't make my rule not true".
So are you saying my point was so obvious that it was unnecessary to be made?
I came to work over a vacation to fix a critical customer issue. The company rewarded me with a $50 gift card.
Companies have internal processes and typically can’t say “here’s an extra 5k for saving our butts!” unless there’s an existing program and money set aside for such spot bonuses. It’s a huge audit risk.
If your management is good, it absolutely is remembered and impacts future performance and promotion cycles.
I worked with a guy who got a sizable bonus (rumored $200k). The reason? An old college buddy called and asked if our technology could help their social media company with a problem they had.
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...
Merchant banking. I miss those bonuses
know plenty that get bonuses, yearly. individual performance + company (stock) performance + other variables = some percentage of salary, handed out as RSUs or cash or both.
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
I get recognition plenty. We all get bonuses according to how well our division does, which is developers certainly have a hand in. If you do good work, you also tend to get promotions and raises well beyond the usual 5% per year.
Make the company 100 millions and you are lucky to see more than 10k of it.
If you believe otherwise I would question your real life experience.
While ad hominem is a fallacious way to handle a debate, it is a great way to determine motive for and if debate is even worthwhile.
I’m not saying it’s perfectly proportional to the value created, I was challenging the notion that devs are these wages slaves chained to their desks who never get anything extra while their managers swim in money
Maybe this is a US vs Europe thing? I'm in the latter region, where I am there's a ceiling for dev salaries, virtually the only way to break through is to become a manager. It's also very uncommon to share the companies success.
Only twice have I worked for a manager who thought it was unethical to ask the devs to work hours they themselves would not work.
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.
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
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.)
that scene from Office Space where he talks about "I do just enough not to get fired" may be relevant here.
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.
I call it (doing the bare minimum required) "organizational laziness" and I hate it. It might be rational, but it leads to mediocrity.
OK, hire me, and if I over-perform and help you achieve a business target, I want a triple salary next month. Or better still, 20% of the extra profit.
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.
Sorry to disappoint, but.. I don't want to hire you. I am a socialist, I find labor markets morally objectionable. The above is one reason, putting pursuit of profit above human excellence leads to mediocrity.
What benefit does excellence derive for the excellent then, other than feel-good bubbly feelings? If labor cannot differentiate itself then collectively it will do the minimum acceptable and everybody will be mediocre (unless autism).
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.
I too strive to be humanly excellent. I don't strive to make my boss' bonus bigger.
Start your thought process by making the extremely obvious distinction between these two.
Starts at the top.
Lazy pay, lazy perks -> lazy workers.
This. From worker's point of view it's irrational to work hard if the pay sucks. Good management should realize that, and demand less from underpaid workers. Embrace the culture of laziness, or pay a fair wage.
Not just at the top, you have to go higher than that. It starts with the idea that the market success always leads to excellency.
whats mediocre is willingly being a cog, in my opinion. Cogs dont get any credit.
No, Office Space depicted a horrible office environment, most are not such. And minimalist work ethic is a poor one, regardless of hand wavy, trumped up, rationalizations.
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.
Trying to bring religion into this is beyond amusing. I guess the Japanese are all protestants? Hardly. And rationalizing poor behaviour by saying it's rational is another good one. 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.
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!
What is seen as "good work ethic" is absolutely a cultural thing, and at least partially explains economic success (or lack of) in many countries. The Japanese aren't protestant, but they have other elements in their culture that encourage hard work as a virtue.
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.
It's not beyond amusing, the protestant work ethic is the tradition from where a lot of nations have derived their work ethic from. Just like the Japanese derived their work ethic from their traditions, bringing it up is just clearing the way that yes, it's a religion-originated way of thinking about work, there's nothing wrong about that and you getting hung up on it is what's truly beyond amusing.
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.
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).
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.
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.
That's actually a very interesting point of view.
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.
[0] https://paulgraham.com/own.html
You are right.
...Most are much worse. :D
you can be very hard working on things that aren't your day job.
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]
[0] https://paulgraham.com/worked.html
If you're going to sandbag you should aim for slightly below average. Minimum leaves you no room for error.
You get a salary for doing the expected work, not extraordinary work.
Exactly. Do the expected work well, but don't sacrifice yourself so that other people can use, abuse and eventually desert you.
Having the interests of the bottom line of the business in mind does not equate to sacrificing yourself.
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.
Who mentioned this? Only you. A projection on your part, it seems.
The original poster of the thread mentioned it.
Thought we were talking about the sub thread but okay, I'll give you that.
You did omit the first part of my comment however.
What is this "extraordinary work" we are talking about here exactly?
"I'll make sure my work is just passable" is a very strange interpretation of the original statement, which was "if more time makes your work more professional, then take more time."
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.
Its rare in any field to be compensated for any extraordinary achievement. But these are the people I like to work with.
Surgeons save lives which they may find important and motivating per se.
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.
1) Not all surgeons save lives
2) Not everyone can be a doctor
We can all find meaning in our own work.
The best paid ones work on vanity projects.
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.
If that is your experience with companies and managers, you have to choose your jobs more wisely. In good companies managers were engineers at some point as well and know what is important technically and motivationally.
where?
It's more contextual than that.
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.
The problem is then you’re not being paid enough.
That is also true.
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.
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.
Nope, that's the product manager's job. Here, a Wikipedia link, just for you: https://en.wikipedia.org/wiki/Product_manager
You're conflating work with responsibility. Let me ask you this: How many product managers does it take to make a product?
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:
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.
The OP's scenario has a product manager telling you that what they need is for you to finish feature X quickly so the company can be profitable.
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.
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.
Many great products have terrible software behind them.
Please give some examples of great products created by software developers that have terrible software behind them.
Early Facebook was written in PHP, and regardless of what you think of them as a company, just look at their market cap. WordPress has a huge userbase these days and had similar roots.
How is that terrible software? PHP isn't the new hotness, but it's everywhere, fairly easy to pick up, and reasonably fast.
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.
Depends on what you mean with great software of course, but a developer should work together with the product team to come to a specific realization of the product vision. That vision may not always require great software, and it may actually specifically call for hacky software, but the product people cannot make that judgement call (and if you are in a healthy company, they don't).
This is different from always making great software but shifting priorities.
I 100% agree with you. I’m in a situation at the moment when I’m nearly constantly having to check myself against other devs. I don’t do hacky work and nothing I do isn’t extensible or easily refactorable. But I constantly get feedback from another dev on my team wanting me to polish out a change to perfection against every feasible possibility. I try to employ YAGNI reasoning to them, but they just have a perfectionist standard.
Look: job 1 is making safe software, job 2 is making money and job 3 is perfecting the architecture.
Ask them to write the tests that will trigger the failure condition - i.e. make them prove that it's a possible thing that can easily occur.
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.
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.
Personally, I’ve never seen good developers who cared at all about profitability. All of them cared about the products and customers, but no one was driven by profit at all. Whom I met and cared about profit, they were mediocre the best.
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
Making a great product and maximizing profitability are often at odds. E.g. see all those dark patterns.
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.
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.
This entire comment reads as someone who has a purely adversarial relationship with their coworkers with little trust. Sounds exhausting!
Seeing you‘re a CTO, I‘m a bit concerned for your staff (if any) if your first reflex is blaming the developer for not trusting their boss.
The person is adversarial, that is clear in their comment. There's literal adversarial quotes like "only do X if good for you, otherwise do the opposite". On the other hand you went straight to googling a random commenters job and attacked that.
Every one of your sentences is an assertion presented as fact. That could also be considered adversarial. GP has replied in a constructive manner in the meantime btw.
And yeah, no googling involved. I often look in HN profiles to find more context to why people are writing what they write. I don’t stalk them, tbh I find it creepy when people from HN find me on X and DM me.
nah fam he is right. And he didnt google shit, its literally in the profile.
Not my intent to assign blame, it just sounds like a toxic workplace. I've been there!
The better places I've worked were more focused on compromise, experimentation and taking shared responsibility for risk.
Thanks for elaborating, this helps understand where you are coming from.
I don't see any blame assigned in the previous comment.
no it was more passive aggressive - suggesting there was blame but not actually coming out and assigning it.
It reminded me of that quote wrongly attributed to Shigeru Miyamoto (who created Mario and Zelda and other classic games). "A rushed game is bad forever, but a delayed one may eventually be good."
Of course it may not apply to software today (except to the extent first impressions count) because modern software tends to be continuously maintained (and modern games often are too, to a much lesser degree, with post-release patches).
Games were not updatable at the time of the quote, which makes an incredibly huge difference from products that can be regularly updated to fix issues.
I do mention that in the second paragraph. My understanding is that most [0] games don't get super-substantial updates making the game leaps and bounds better than it was in its initial state, the way continuously-developed software does. Am I wrong?
[0] Games like Minecraft, Stardew Valley, Terraria and online games being a minority.
Games and software operate from a different set of first principles, games are more akin to movies in that we consume them for the experience and that final level of polish often does make or break it.
It applies. I did a debloated Windows 10 IoT Enterprise install for a friend (who's giving this laptop to his future wife) and iconcache in Explorer is still broken and giving me the occasional white page icon, and nt authority\system gets access denied when trying to delete %localappdata%\microsoft\windows\explorer\iconcache* while explorer is kill.
Bad forever!
the counter quote to that is John Carmack, who was originally a fan of the "it'll ship when ready philosophy", saying he 'largely recanted from that now' when discussing Rage on the Joe Rogan podcast.
Or Duke Ellington: "I don't need time. What I need is a deadline."
Sounds exhausting? Sounds like gaslighting a wee bit...
Oh nooo... the poor managers, how will they manage if you don't TRUST them blindly and completely (and bend over backwards to fulfill all their whims)? What kind of a cult is this? I'm not a sheep that needs to be herded. Besides, trust is earned.
So no, it's not exhausting, it's the exact opposite. It's refreshing and freeing.
Anyways, I get along with my coworkers very well. In fact most of my friends began as my coworkers. Then again I do not consider managers to be my coworkers. And generally speaking, yes, you could say I don't trust them. But that just comes from working in 5 for-profit companies for over 15 years. The only exception was an energy company, probably because the "just ship it" mentality wasn't as strong.
You've hit the nail on the head about trust needing to be earned. I didn't assume that this was on you or it was your fault. It just sounded like a bad situation. Also based on what you're saying manager also doesn't trust you or at the very least you don't share the same values.
That said it was quite a cynical interpretation of my comment and aggressive reply, so I'll leave it with that.
Honestly that sucks. I worked for a small-ish company before living to a FAANG, and both times in every role I had I had a great team and manager with super high trust. Makes me appreciate my experience more to read about others.
no, to me it doesnt.
to me he's right about how devs should deliver it as engineeringly sound as possible, and executives should deliver it as timely as possible.
its a balance between having a usable product and a product they need at the right time.
it's not adversarial. its a conflict yes, but a healthy one.
They should all be aligned in what they're trying to achieve. Misalignment here is not healthy.
Swe should inform about consequences, and executives should inform about business priorities, but they don't have to all disagree on the way forwards.
I can see some of the tone being too adversarial, but I think the gist, that we are after all professional engineers, who studied and spent time and money to understand how to build such systems to high standards.
And since we are that and are paid for that knowledge, we should strive to improve software / system quality as much as possible. Isn't the job of executives, managers, etc. to figure out the constraints we have and strive to improve profit and shipping speed as much as possible?
Together, with our combined expertise we can get the practical best of all three. But if eng just nod along knowing they are sacrificing quality, security, scalability, etc. then they are doing a disservice to the team, no?
Those kinds of orgs eventually get eaten alive by orgs who had better alignment because they’re inefficient. Executives are human and they need the help of engineering teams to make some decisions. If every question about “can be ship this faster?” is answered with “no because we’re professional engineers who’ve studied a long time to build systems to high standards”, then that company will lose vs another competitor who had a more collaborative approach.
Or with the employer/owners? Owners and workers have a fundamentally adversarial relationship.
> 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.
Maybe. But...
> Your job is to create great software.
No. Your job is to do what the company pays you for. The company is not paying you to create great software. It's paying you to solve some kind of business problem or provide some kind of business service. Some of those problems or services do indeed require great software. But many do not; mediocre software will do the job just fine. And if that's the case, and you insist on creating great software anyway, you are spending time and effort that is not adding anything to the company's bottom line. And while you personally might not care about that, the company does, and they're paying you.
> What's great software? The kind you'd be willing to put on your resume without feeling bad.
You used the term "software engineer". A software engineer's job is not to always write great software. It's to write the optimal amount and quality of software for meeting the particular requirement it's supposed to meet. More generally, an engineer's job is to produce optimal solutions to problems. That does not always mean building the highest quality product possible. Sometimes it means doing just enough to get the job done, even if it's not very pretty, and stopping there because doing more would add no business value. And you should not at all feel bad about putting that on your resume. Refusing the temptation to gold plate everything when it's not necessary is a good thing for an engineer.
The company pays me because of my knowledge and expertise, that is needed to create and maintain the porduct as best as possible.
If I am just a yes man, the company isn't getting what they paid for. If I honestly assess and say what is being sacrificed re: security, scalability, future flexibility, etc. in the software, then the company is getting what they paid for, and they can choose how far they want to go in the quality / time spectrum. And if they pick somewhere my expertise says is too far on one or the other side, it's my job to say so.
No?
> The company pays me because of my knowledge and expertise, that is needed to create and maintain the porduct as best as possible.
Yes, but that does not always mean writing great software. Sometimes it means writing mediocre software because that's all that's needed. Sometimes it might mean writing no software at all because software isn't the best way to solve a particular problem.
You recognize this because you say there is a quality/time spectrum, and the company wants you to use your expertise to help find the optimal point on that spectrum for a particular need. But "write great software" implies that there is no such spectrum--everything you do is always at the extreme high end. You are agreeing with me that that's not the case.
Yes I guess I just read the parent comment more charitably. Like always push for maximizing the quality as that's your job and your expertise. And sometimes when quality really matters you have to stick your neck out and push back aggressively, even if it will cost the company more than expected. That's what we learn in engineering ethics courses in school after all.
> sometimes when quality really matters you have to stick your neck out and push back aggressively
Yes, that's certainly true. But not all cases are cases where "quality really matters". In many cases you reach a point where adding more quality has rapidly diminishing returns in terms of business value--often because it takes time and effort away from other projects where quality matters a lot more. Ultimately that's the company's decision to make. And as I pointed out in another response upthread, if you genuinely believe the company is dysfunctional in this regard (and many companies are), your only real choices at that point are to try to become a manager so you can fix the company's culture, or change employers.
Should we not find out what the company are paying you for? They might be surprised that you think they hired to you do to be a no-man and believe a course correction is in order? :)
Yes and no. Ultimately, your solution will live on after you. Even if theres no way for it to backfire publicly, your coworkers and future employees have to deal with it. It can absolutely ruin your reputation and cost you future employment. Admittedly its much easier for a contractor to draw a red line, but I had done this as far back as my first full time IT job, setting boundaries with the owner of that business as to what is and is not practical and achievable.
Sort of missed the point. It’s about writing the optimal amount and standard of software.
> It can absolutely ruin your reputation and cost you future employment.
If your solution does not meet the company's needs, yes, this is certainly true. But I never said you should do something that does not meet the company's needs. I just pointed out that meeting the company's needs, even if you add the qualifier that you are going to do that in a way that is professional and does not create unnecessary burdens for others, still does not always mean "write great software". It means finding the optimal solution for the particular problem.
> setting boundaries with the owner of that business as to what is and is not practical and achievable.
And in cases where "write great software" is not practical and achievable (and yes, there will be plenty of such cases), that would mean telling the owner that it is not practical and achievable to write great software to meet this particular requirement, and recommending a different solution. Which is what I said.
The problem with this mindset is the most companies are short-sighted and when the problems inevitably start coming in it is the developers who are placed under pressure.
It is the developer being paged at 2am on a Sunday. It is the developer working overtime to get the feature out because the codebase is a giant mess. Etc.
Having a minimum quality bar is a must. The OP was suggesting a professional level of quality - not gold plating everything.
> most companies are short-sighted
The best course if you find yourself employed by such a company is to change employers. A company that is genuinely short-sighted is dysfunctional and no amount of professionalism on your part as an individual contributor is going to fix that. Now if you could get yourself promoted to management, then maybe you could have an impact--but then you wouldn't be doing actual software engineering any more, you'd be doing corporate management fixing, which is a different job.
> and when the problems inevitably start coming in it is the developers who are placed under pressure.
Yes, this is true. And as above, if it's genuinely dysfunctional, your best course, unless you are willing and able to become a manager yourself, is to change employers.
> Having a minimum quality bar is a must. The OP was suggesting a professional level of quality - not gold plating everything.
That's not what "write great software" means to me. "Great" is not the same as "minimum quality bar".
This has to be satire.
"Do the wrong thing unless it's for you, in which case ship it earlier", "your job is to make you feel good about what you put in your CV", and other amazing quotes.
The only thing of value in the whole comment is saying to not get too attached to any job or worry too much if you get fired, but even the reason given for it is wrong. Incredible to realize I probably work alongside a few people with the same adversarial attitude.
Some people do like to live life in the wrong game theory quadrant.
No, everyone lives life in the same "game theory quadrant" whatever that means. People primarily play for themselves including you, some people are just more aware of this fact than others. And also its still always rational to defect.
That's not true, I have many examples I've seen of people putting themselves second. Of course everyone has these thoughts and actions and needs to reflect and be self aware, but it's not true that everyone is just always out for themselves, in fact that's the type of world view that leads people into the wrong quadrant and it's a bit of a depressing world view. I think you understood exactly what I meant by wrong quadrant, from your reply.
Don't you know anyone that donates money? Or that volunteers their time? Or that doesn't use all their deductions when doing taxes? Haven't you read stories about people who anonymously donate kidneys? There's so many examples - and the only way for your world view to "work" is if all of them only do these things for selfish reasons.
At some point one has to acknowledge and believe in good and cooperation and decide if they mostly want to try and operate in coop mode or in selfish mode, but the more you believe others are likely to choose coop, the more like you are to do the same. So you need to start from the belief that good and coop are things other people will also choose. Your world view prevents this "from the start".
I'll drop in here and say that donating a kidney is an excellent relatively low risk thing you can do that has the power to transform someone's life. Here [0] is an excellent article telling one persons' story.
[0]: https://www.astralcodexten.com/p/my-left-kidney
Last i researched, donating a kidney affects your quality of life extra-ordinarily. for eg you can't eat the same way, can't exercise/move around the same way and also you might have permanent complications from the surgery. i MIGHT consider it for a close relative but for a stranger? that would require some real mental gymnastics.
From what I know, this isn't true. Nutritionally, the only thing you need to avoid is high-protein diets. You can exercise just fine after a 6 week recovery period.
Of course, it's impossible to predict complications. Some donors have died on the operating table. The risk of complication is very low, though.
If you have any other questions I'm happy to answer.
Sources
* https://www.livingdonorgames.org/
* https://www.kidneyregistry.org/for-donors/kidney-donation-bl...
* https://www.kidneyregistry.org/for-donors/i-want-to-learn-mo...
I understood that you were referring to the prisoners dilemma, but I dont understand or agree with your idea of living in a quadrant. Everyone lives with the same game theory, difference arises from individual incentives and indivdual intelligence/rationality. But ultimately everyone seeks the nash.
Donating money? Volunteering? Even donating a kidney can all categorically be understood in terms of individual gain.
Which part of his comment was satire exactly?
He mentioned that your job as Software Engineer is to focus on Software quality and push against on unreasonable deadlines. It is NOT your job to make sure the company is hitting its sales targets, that's the management's job.
If you think this is satire, you are in the wrong profession and frankly I'm amazed that on a website called Hacker news, people are attacking parent for this advise. Then again, perhaps not since most people here are focused on startups churning out products with unreasonable deadlines.
No wonder no one takes Software seriously if _this_ is the attitude from the self proclaimed "Engineers" themselves..
it's just written in such an over the top, office-space, Dilbert-esque, somebody's-got-a-case-of-the-Mondays style that it's hard to take seriously. Yeah, don't write absolute trash code, but also don't spend three years architecting the most beautiful, most modular code and run out of money before you ship; you ain't gonna need it. If you're programming from a place that's so far removed from customers that you don't care about sales, what are you even doing? Just writing code for the sake of writing code? If the only person you're writing code for is yourself, that's fine. this is the Internet age and there are a ton of unbelievably awesome passion projects out there, like that engine noise one. But the rest of us are writing code for some sort of purpose which involves other people using the product that the code is being written for, and sometimes money changes hands.
There's software quality, and there's that one guy who over-engineer's everything and just loves writing frameworks and never ships actual product. Without seeing actual demands and code, it's impossible to know which of the two categories they fit into, but it reads like the latter of the two.
I started writing a reply about how the context is very different between indie side projects and your work environment, but then your post morphed into a comment about the role of a programmer in an organisation, and so did my reply.
Firstly, I sense you are frustrated in your current post and I sense you are not in step with your management or perhaps not even in step with your coworkers. I sympathize with your predicament. If I had any advice it's that you cast around for a position that's more in line with your principles and goals (don't quit your current job till you find that.)
Personally I've been on all sides in the myself. I've been the principled programmer. I've been the one dedicated to quality. I've been the manager. I've been the person responsible for the business staying in business.
Yeah its nice to adopt the "code my problem, business not" position. It seems like the moral high ground. But businesses are all about balance. They have to balance things like income, and happy customers with tech debt and so on. Having programmers (or anyone for that matter) working -against- the big picture is not ultimately useful and can do more harm than good.
I don't always agree with my team and they often don't agree with me. But ultimately I'm responsible so (sometimes tough) decisions have to be made. The most successful employees are those who acknowledge that this isn't necessarily the best way to do something, but strive anyway to make it a success.
I wish I had the time and money to let programmers just spend forever building stuff and never shipping. They most definitely wish that. But we live in a real world with constraints and the reality is we need a lot more than perfect code.
Of course some places are just impossible to work at, where everything is rushed and there is no balance either. And then it sucks to be you.
If we waste resources overengineering everything, it takes resources away from other parts of society that require them.
Good thing that 100% of all programmers go out there and volunteer all the time they saved at work.
Oh wait, no they don't.
What? No.
It's the economically and humanly well-balanced position. I got a wife whom I love to spend time with and I don't want to live on the computer. 8 hours is already way too much. I do what is expected of me and maybe a little more, for the rest they'll have to pay extra or give me parts of the profit.
If not, they'll get baseline performance.
It is always so mind-bendingly odd to watch people claim that you can go above and beyond as if that has zero side effects on any other aspects of your life.
This is the wrong framing of it, shipping is an internal mental battle, not an external one.
We are not perfectly rational automatons that always work towards our rational best interests. Shipping is hard so we create mental battles inside ourselves to avoid it and use post-hoc justifications to feel morally ok with that decision.
The choice of when to ship isn't nearly as important as the answer to why you aren't shipping on the choice you said you would ship. Yes, shipping at different points of maturity represent different sets of tradeoffs in a complex multi-dimensional matrix and it's an intellectually fascinating challenge but often, the choice is far less important than the debate that sucks it in and engineers end up bikeshedding the decision. Whenever you find yourself bikeshedding, it's important to realize you don't solve it by looking at the decision but by looking at why people feel the need to bikeshed in the first place.
You talk about how "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.", what is the "job to be done" by that belief for you? Is this a true, genuine held belief by you or is that here as a cover to some deeper belief that is uncomfortable to surface?
The answer is something ultimately only you can answer and no internet comment can force that deep degree of introspection, only those close to you who have a requisite degree of insight and therapeutic practice can reliably help with that. But the larger point I want to make is that the shape of the conversation around shipping is all around exploring where we feel different mental resistance around shipping at any point in time and uncovering where that resistance truly comes from vs the reasons we make up to dress it up.
What do you mean by “not shipping on the choice you made to ship”? Do you have an example?
Really fascinating thoughts.
Like what the article stated. “I should ship this week but I really feel we need a mobile app to ship.”
You build the mobile app and you still don’t ship because the mobile app was not the problem, it just hid the problem. Until you understand and confront the true problem (emotional discomfort at the consequences of shipping), there will always be another reason not to ship.
Any job, In any industry at any level should be working together with your manager to understand what the company goal and how to achive that. Its always going to be time/price vs quality if you work on creating software or clothing or whatever. There are properly companies and managers that do not care.. but imbany healthy organisation this should be the case. There is not garbage tasks. Its tasks that needs to be done. Any understanding that not all tasks that needs to be done in an organisation is fun but needs to be done is a sign of maturity that you want from your employees
My boss says our goal is to make quality products, but often we don't even have time to check the parts.
Once there was a problem that machine didn't make good enough surface finish, but boss just said it's fine, let it run. Turns out it wasn't fine and we had to fix 3000 parts with hand sander. That's why I don't like to cut corners.
Why are you developping?
Is it a hobby for passing time? For pleasure? For the beauty of the code?
Could be. But most of the time, you develop in order for the software to perfom a task someone needs.
And that should be your first focus: to develop something that brings value for its user, and develop it as efficiently as possible. After all, what's the point of a software if nobody uses it? So no, your job is not to create great software, your job is to bring value to users.
In my career, I've mostly seen the developers pleasuring themselves with overengineering, bloating code with features nobody needs, and writing lines to anticipate future developments that never came. Rather than the opposite.
So I think the challenge is to remain minimalistic, that's hard, and that's what the original post is about.
Unfortunately there is no correct approach since both sloppy and overengineered codebases backfire. What helps me find balance is following the philosophy of 1. Make it work 2. Make it right 3. Make it fast
Most deadlines are made up anyway. If it doesn't happen usually nothing happens.
“I love deadlines. I love the whooshing noise they make as they go by.” - Douglas Adams
Wow. That reminds me of what the guy who was fired said.
I’ll never understand him. He lives in a house that’s below sea level, with one kid and one wife, and it gets flooded every 4 years. He was raised 30% during Covid, job was quite comfortable, he was competent for it, then stopped pulling his weight. Wouldn’t it be easier to keep pulling weight and try to build something that works, rather than deploying energy for union tactics, and then live in a twice-more expensive above-sea-level house?
Yes it would. Sometimes people get stuck in a victimization loop.
Good News: Dr Sapolsky has recently updated his intro video on depression.
it's here: https://youtu.be/fzUXcBTQXKM?si=JU-iOaP9SeFdB5qy
I was one of the first employees in a startup, and if I hadn't made compromises the company would probably not exist today. Your approach only works for big established companies where your team has limited impact on the results.
For small and medium sized companies you definitely need to make compromises. It is part of your job as a professional to make choices that leads to the best business outcome.
Unfortunately a lot of developers don't have a connection to the business side, because they are "protected" by several layers of management, PMs and designers that interact with the business on their behalf.
Getting a product out quickly means that you also get feedback earlier. This is not only good for business, but it is also an opportunity to evaluate your implementation to see if it matches your assumptions. In my experience this causes less stress compared to rolling out a "perfect" solution that has to be rewritten while under pressure.
My job as a developer at my current workplace is to reduce complexity and get the PM and designers to cut down their initial plans to a minimum. It makes arbitrary deadlines less stressful and any delays will not have the same impact.
if more time makes your work more professional, then take more time. Anyone telling you otherwise is a 100% hack.
It sounds like you're a fan of Total Quality Control, as am I. However, it also sounds like you're susceptible to feature drift and undermining yourself with ideas thought up late in the development cycle, as am I.
I've seen it from both sides. Software people who want to get just one more feature in, or who want to hold up release to fix an inconsequential bug. Similarly, the CEO who ruminates all weekend and decides we have to revamp something for no objective reason and on a ridiculous deadline.
I think it's very different when you're one-man-show vs a cogwheel in organisation. In former case, just like the author mentioned, your struggle is more with yourself. You need to make yourself move forward. And "Just ship it" approach gives you that - you get external push to carry on. External user(s), external comments and demands give you that bit of energy to carry on.
In corporation setup, you always have a manager and peers that push you. You have periodic meetings with team/manager whatever to show what you have done, and then, depending on company setup, it's quality vs speed discussion. But that's very different from being all alone with your code and computer trying to build something from the grou up.
Engineering is tradeoffs; the whole concept of quality only makes sense in the context of a certain budget. If an engineer takes two weeks hand-crafting some one-off charts in d3 and react that could’ve been done uglier in some BI dashboard in a day, it might look good on a résumé—but it’s shitty engineering.
What a weird screed.
Good news - once you work at a large enough company, this flips to "your job is to finagle your way through a million different safety and security checks at every step in order to write a few lines of code and get them shipped before a pivot and/or re-org makes them irrelevant to your new managers goals".
There's usually an entire pipeline of people waiting on your work - sales & marketing, ops, support - and every delay you induce risks knock-on effects for them, not to mention that depending on the product, customers can be planning their own workloads around your release schedules, so you'll mess them up too. Not all deadlines are arbitrary.
Usually when you are doing "just ship it" often enough you achieve this, especially at larger firms too often I see situations where engineers are doing their 3th refactoring without any customer feedback.
https://www.dreamsongs.com/WorseIsBetter.html
If you want to write good software, get it in front of someone who will actually use it as soon as possible.
Get it in front of many people who use it as soon as possible.
No matter how smart you are, you can't anticipate every user need. Let the users tell you what they need.
To do that, you need to ship.
I would not hire you. I would worry that you would take my money, and not ship anything that makes my company money. I could just as well burn my money for all the good it would do my company.
You do know that the point of a company is to make money, right?
Your job is to create great software for the company and your definition of great software is therefore defined by the company.
If your idea of a good CV is one where you can say "I deliberately made the following companies less money than I could have: ..." then I'm not sure who you're applying to with confidence.