评论
(comments)

原始链接: https://news.ycombinator.com/item?id=37859311

根据上面的文章,很明显,讨论软件工程师之间的懒惰问题需要谨慎考虑,因为它具有主观性和潜在的误解。虽然有些人认为真正的懒惰可能导致较低的产品数量或较差的执行努力,但其他人则认为被认为的懒惰可能表明情感反应或影响一个人对任务的动力和承诺的心理挑战。总的来说,确定在各种背景下什么是懒惰或仅仅是分心可能证明是有挑战性的。一些人倾向于关注懒惰的负面后果,强调它消耗能量储备并鼓励技术债务积累。相反,其他人则强调懒惰的好处,例如保存精力和减少压力。最终,决定是否承认自己或他人中的懒惰可能取决于个人的价值观和优先事项。

相关文章

原文
Hacker News new | past | comments | ask | show | jobs | submit login
Can't be fucked: Underrated cause of tech debt (jesseduffield.com)
395 points by todsacerdoti 6 days ago | hide | past | favorite | 370 comments










Much of CBF can be explain simply through rewards and incentives.

See, when I joined my current company, I was full of energy and I did BF. I fixed broken builds. I made our abandoned test suite green. I refactored our deployment pipeline. I hunted down the root cause of bugs and fixed them. But then I noticed several things.

First, rather than encourage people to behave like me by example, they did the opposite. Why fix a broken build when I would come along and do it? it turns out doing shit work just gives you more shit work.

Also the guy does hack jobs got promoted ahead of me because he is a master of optics and presents his work much better than it is. And look at how fast he delivers! it doesn't matter his code keeps causing problems in prod, by then he has moved on to another project and it's someone else's problem.

Oh, and that junior guy than I spend several hours a week helping makes more than me, because we hired him in 2022 when we were desperately throwing money at people, but I didn't get a raise in 2023 despite an "exceeds" rating because you know, it's tough times and we need to buckle up.

Listen, I love what I do and I want to excel at it, but is it any wonder and CBF? At the end of the day I work for a salary. If my efforts aren't rewarded, or sometimes actively punished, my motivation goes down the drain. Sure, part of it we do for ourselves, but at some point you have to question who is really benefiting from the situation.



When we only work for a salary we’ve lost sight of what it means to be alive. Move on, go somewhere you deserve to be. Find your people.


This is just wrong if you despise the concept of paid work at all. I spend these 8 hours a day because I am forced to. I need to pay for food and shelter, for my kids education and all the other stuff. If this wasn't the case I would give a fuck and spent all the time with my family, play video games and just live from day to day.

Choosing an IT-career is just the least evil for me.



This isn’t wrong or right. It is an opinion on how to live.

You aren’t forced too. You need to look up what ’forced’ really means. I’m not saying it isn’t hard though.



Going "actually!" on people and acting like a dictionary is making me wonder if you are arguing in good faith.

Yes we are forced to work. If I stop paying for stuff I'll starve, nevermind the fact that I'll have to live outside.

And yes we can live in the woods, theoretically. But we don't want to.

And no, before you say it, this being "the price to pay for living in civilization" is NOT a given. It's a local maxima that many people agreed to never revisit. Not very impressive, and not a good outlook for our race.



I don’t argue. I am just portraying my view on what is possible in life. That maybe different to yours. That’s ok right? I recommend reading ‘Man’s search for meaning’ by Viktor Frankl. It is a landmark book.

We do have choice and most do take the lesser evil of IT and but if you really want, you can go look to see what else is out there.

It is not without risk though.



Problem is you want to live in society. You want to have your cake and eat it too. You want utilities, roads, healthcare, all kinds of shit.

That requires money, so you need a way to generate money. But you don't have to partake in society. If you want to I'm sure you can grab an axe and go build a log cabin in bumfuck nowhere.

And then you can work all day to make sure you have housing and food and firewood and whatever else you need.

Personally I'd rather sit on my ass in a comfortable office and get paid to think and press some buttons so that I can get electricity and food and all the shit I need. But nobody's forcing us.

I don't think you want what you think you want. You like modern society, certainly beats fighting mountain lions for days-old dead deer and dying of a treatable infection. If you want the benefits of society you have to contribute.



> Personally I'd rather sit on my ass in a comfortable office and get paid to think and press some buttons so that I can get electricity and food and all the shit I need.

Me too, but I am arguing the degree of it here, and that nuance is sadly lost on many. They always jump on "go live in the woods then" which obviously is not what the argument is about.

If the costs of living drop a little and if housing becomes actually affordable then I'll very likely never open my mouth criticizing civilization again.

And I will not agree that the current world economical situation is inevitable. I think many of us are quite aware that the world elite is playing dangerous games at the expense of everyone else but themselves.

It does not have to be this way. It can be better. But that's a huge -- and different -- topic.

> But nobody's forcing us.

Hard disagree and I'll leave it at that, you are chasing a dictionary definition here much like my previous parent poster did, and that's not moving any discussion forward.

> I don't think you want what you think you want.

Disrespect will get you nowhere in any discussion.

> You like modern society, certainly beats fighting mountain lions for days-old dead deer and dying of a treatable infection. If you want the benefits of society you have to contribute.

Sure, and again -- degrees. It's not an all or nothing and it's very puzzling why you and many others are framing it that way.



So, where can I live a decent life for free? Nowhere? Then I can either end things or work. Working because the alternative is death is not really a choice.


Is coerced pedantically correct enough?


Tricked


You do realize the entirety of human existence people have “worked for their salary” where “worked for their salary” basically means putting food on the table and spending all day and 7 days a week doing so?

It’s only in the last few decades for a small fraction of the world, and a few centuries for an even tinier fraction of the world, we’ve been able to “work for our salary” where salary even includes leisure.



Nah, I already did the "do what you love" shtick during the first half of my career working as a researcher living paycheck to paycheck. After I got my first job in the private sector I figured out that, you know what? actually I like being able to pay bills, buy stuff, go out for dinner, and generally lead a comfortable middle class lifestyle.

In any event I'm not exactly nihilistic. I believe better places to work exist, but my visa prevents me from changing employers. When the time comes we'll see if the grass is greener.



This isn’t binary. Either or. You can find people and companies you like to work with and it not be the ‘do what you love’.


Let me ask you something honestly, where do you find your people? Is there really such a place that operates differently? I find myself in a very similar situation as the GP, but I agree with your sentiment, so I would prefer to taks your advice. In my experience, every work place has the exact same problems as they described. I just want to know whether there are indeed better options, and what to do to find them.


As another note: there are times when you on the wave, part of something and there are good things happening. This only lasts so long. Again, applies in work and outside. Form your own view but be aware of cynicism (in others and yourself). This comes from broad experience of humanity. We are in the shit but there really are groups of incredible people that merged together, do amazing things. Find that.


You search. Through experience after experience you realize what are the values that are important to you and you need to be around those that share it (and also an organization that has quality values) It may mean you will move from job to job but work is not life. This also applies in many aspects too. We are tribes.


One option is to work at a place with longer development horizons and where the top priority isn't getting the latest feature into production by end of day Friday. Research institutes and R&D departments at huge companies (possibly even companies outside the software engineering sphere) for example operate very differently than companies/departments that directly ship software. Of course these places have other problems and they may not necessarily be 'better', but it is at least they are different problems in my experience, and personally I've found them preferable.


Getting into these I found pretty difficult for many reasons, and usually you take a significant pay cut.


Getting hired isn't that hard I've found, if you can show passion and interest for the area. The pay point is however correct. Although personally I've found the pay cut worth it in exchange for getting to work on genuinely interesting problems in a much more relaxed environment with a much better work-life balance. YMMV


Well if "much more relaxed" environment also fairly translates to less hours (to compensate for the less payment) then I'd be okay with it but I suspect it does not.


You don't need to tie your job to your sense of self worth and happiness.


And let them eat cake.


exactly. It's not often your motivation thats the problem, but motivation cost. Being appreciated lowers motivation cost greatly. People like rewards. This is how people play gamea for thousands of hours. Cause the motivation cost is so small. Im not saying to gamify the workplace. But i do say that we have to stand up to appreciate our peers: cause we cant testify for ourselves without sounding petty.


Various debt has different "interest rates" and the skill is to pay off the high interest ones as the expense of 0-rate ones.

I have a closet in the basement where when I did the vinyl plank floor, I ran out so the planks don't quite go to the back of the closet all the way. Problem? Yes? A bit ugly? Yes. But in reality the problem is 100% of the time covered by boxes and anyway I can live a happy life in this house for decades and not be affected. That's 0% tech debt.

On the other hand if my gutters are clogged, there's interest on that because the longer I wait the costlier it will be to deal with since clogged gutters can lead to basement leaks or gutters themselves detaching. Or, if my stoop is broken, that's not just an eye sore but I keep tripping on it, the faster I fix it the sooner I stop tripping. That's a high-interest debt that should be fixed asap.

In engineering, a high-rate debt could be some architectural thing that slows down the development of every single feature. You want to quickly pause features to pay this down so everything can move faster. On the other hand, some file that you never touch having some shitty code or lots of TODOs may be a very low interest debt since in practice you never touch it or are otherwise not bothered by it other than knowing that it's ugly - like my closet floor.

Engineers make two mistakes around this - fixing zero-interest debt when there's more important things to do on one hand. On the other hand, when they say "oh, product management/leadership didn't sponsor our tech debt fixing" - it's often because we fail to articulate the real cost of that problem - explaining that it's high rate and how it's costing you.



> oh, product management/leadership didn't sponsor our tech debt fixing" - it's often because we fail to articulate the real cost of that problem

I disagree. they simply don't care because from the top down, new shiny stuff gets attention, not keeping the old stuff going.

edit: I also wanted to add this, if I do convince them of its importance, MAKE NO MISTAKE, management will agree that work must be done but it has absolutely NO BEARING on having a positive job performance. I just convinced management of something important that I have to do that I will receive no benefit from - unless it goes wrong then I'll get reprimanded.



You're conflating what is important with what seems important, and what your job is with what you'd like your job to be, and that's a dangerous, burnout inducing, trap.

Important, in the context of a hierarchy-driven development team or company, is defined first by the best way to let money flow towards the company, and second by the people who are enabled by the hierarchy to make decisions about where to allocate resources to improve that inflow of capital. While persuading someone it's momentarily important to shift from what was going to be done to what you think should be done can be one way to acquire "career capital" (Newport) and maybe move towards it being your job to do so, it doesn't change what your current job is which is basically to consistently show up and do whatever those others decide is important, and to be ok with that; slow, mediocre, gradual progress and existence, which is perfectly fine if you have other part s of your life, which you should be spending more time on anyway. If new shiny stuff gets attention, then that's part of the dysfunction of the overall system (Meadows - Thinking in Systems)

When I was early in my stupid career as an developer, I made the idiotic mistake of trying to influence decisions regarding things that didn't matter to anyone else, like accessibility, usability, and when I failed to do so put in a lot of my own personal energy to do it right anyway. That was worthless, and I got depressed, fired, and ended up homeless for a while. Do what you're paid to do, and be realistic about what that is, until you're literally swatting people away who want to pay you to do it, then you can do it the right way. Never trust companies for any reason, and don't invest too much of yourself in them unless you can guarantee positivity will come your way if you do things beyond your standard deliverables.



>Do what you're paid to do, and be realistic about what that is, until you're literally swatting people away who want to pay you to do it, then you can do it the right way.

yeah, assuming you get to that point before burnout or CBF kicks in. Or maybe you never do and just retire off of corporate. I imagine that exact mentality is why so many game dev programmers burn out and chase the money they deserve in others parts of tech.



> assuming you get to that point before burnout

My point was that the burnout lies in mismatched expectations, as well as working excessively, and yes I'd agree that's probably why game devs do that. There are better avenues for "passion" than your career unless you can trade the skills you've built up in your career for whatever you want to do for work.

Edit: Additionally, if in retrospect I just said yes to the most viable incarnation of whatever the corporate overlords wanted, and stopped caring earlier about the hypothetical implications of poor technical decisions (which I should have accepted sooner weren't a significant part of my job), then the work would have just maybe got done and whether it worked or not wouldn't necessarily be my concern, and I'd have more fuel in the tank to just keep getting better and moving somewhere else.



That may be your experience, but I assure you that there are plenty of companies where it's not like that. Where I work, our product team is pretty receptive to us taking time to fix tech debt, since:

- Engineering is very transparent about explaining when tech debt is slowing down development of new features

- We recognize that buggy/unreliable software hurts customer retention

- Engineering leadership has set the expectation that a significant portion of each team's time should be spent on maintenance and reliability.



It's a mix of both, depends a lot on the sponsor. Some may figure it out but it wasn't explained properly. Others may do as you say even if Einstein himself said we needed this refactor otherwise WW3 would start.


I agree with your analogy, but for a large team, you can't ignore the 'broken window theory' [1] as it applies to code quality. If the codebase is messy and inconsistent, even in those 'hidden' files, developers are going to be less inclined to implement their new feature(s) with any consistency or quality. "I'll just hack this thing in here, since we really need to rewrite this entire module anyway; we'll clean it up then..."

[1] https://en.wikipedia.org/wiki/Broken_windows_theory



You can also lack the authority depending on the codebase and seniority. I still freshly remember a one line fix in a large game codebase I could have fixed right then and there, but had to simply file a bug for because that part of the codebase was managed by some other studio.


I love this analogy, interest rates on tech debt. It's such a natural extension of the phrase tech debt and succinctly gets a point across. I'm gonna have to steal that and start using it at work.


> It's such a natural extension of the phrase tech debt and succinctly gets a point across.

The metaphor of interest was the whole reason that Ward Cunningham initially coined the term "tech debt":

"Technical Debt is a metaphor, coined by Ward Cunningham, that frames how to think about dealing with this cruft, thinking of it like a financial debt. The extra effort that it takes to add new features is the interest paid on the debt."

https://www.martinfowler.com/bliki/TechnicalDebt.html



The problem is that in many cases figuring out which is the 0% interest debt and which is the expensive debt often costs about as much as fixing it. So blaming the developers for "not articulating the real cost of the problem" is a bit of a cheap excuse. If the debt causes customer visible problems it has a chance of getting addressed. If the problems are only internal, the chances are much lower.


> But in reality the problem is 100% of the time covered by boxes and anyway I can live a happy life in this house for decades and not be affected. That's 0% tech debt.

what's amazing is that I'm apparently in debt while owing absolutely nothing to anyone.

When you say something like "0% tech debt" seriously, do you ever stop and wonder if maybe you're off-base?

Debt needs to be serviced, if you don't need to service it, it's not debt.

What next, that feature that hasn't been implemented yet is 0% tech debt?



It seems like the analogy was unhelpful to you, although it seemed to resonate with a lot of other HNers based on the comment responses and ratings.

The main point to take away is that much of what is colloquially called tech debt does not need to be dealt with on any time horizon, while some does - and being able to distinguish between the two types is key. Were you able to get that much out of this?

And then to make the analogy work for you again - my closet IS a form of tech debt and I insist that it's "0% debt". For example, if I am going to sell the house, it might be the case that having this flawed floor would cause me to get lower offers. So I might chose to deal with this issue at some point, but there's no reason to deal with it any sooner (analogous to not being in the rush to pay off a zero-interest loan)



your closet is unfinished, nothing more, nothing less.

If the porcelain top on my toilet breaks, I'm not in debt because I choose not to replace it.

now, I can run around and tell everyone my toilet is now causing me to have 0% debt because I have a right to say whatever I want, but words have meaning and me saying it doesn't make it so anymore than me claiming the earth is cheese has any effect on whether or not it is. Unless of course by cheese I really mean iron when I say cheese.



I am taking that you've absorbed the larger wisdom of the post and can't resist being dense on the analogy, so I'll call it a success for both of us :)


and now it all makes sense.


>If the porcelain top on my toilet breaks, I'm not in debt because I choose not to replace it.

you do know what "tech debt" is, right? In your metaphor, your top may have 0% debt because only you use the bathroom and no one cares, or it has a potentially high debt in that you receive more germs from your bathroom and get more sick, costing you money to buy medicine to keep you not sick. The debt is objective but we live in a world where finding that objective measure is infeasible.

to use your cheese metaphor, it's more like boldly claiming the earth is 35% iron. it's something you can quickly google and is acceptable through decades of study, but it also wouldn't be surprising if better tooling and measurements later on specify "it's actually 33.42% iron". Important for a geologist, splitting hairs for a casual audience.

We are very much a casual audience, and splitting hairs over a metaphor isn't that productive.



what makes this worse is that the original metaphor was meant to try and communicate with business leaders.

There is no business leader on this earth that is going to agree with 0 debt is debt. Or that choosing not to do a thing or pay for a thing implies debt.

And it gets even worse when you take it to its logical conclusion. Choosing not to fix something is apparently debt. So then if you take out a loan to fix it it's also debt?

What the poster meant is it doesn't always harm anything to leave something unfinished or imperfect. Which is true, but then they tried to squeeze "technical debt" into that and went off the rails.

words have meanings for a reason.



okay, well I'm not a linguist. I wouldn't have chosen to make a dedicated word for a self-portrait picture in an official context over something practical like a singular gender-neutral pronoun. I wouldn't have chosen to make a word's extra definition be its own antonym because people can't help but engage in hyperbole. But society shapes language and its collective usage drives what words are "official".

Inaccurate or not, it's understood by people what "tech debt" means and the point of communication is to express ideas to others. Even if it spits on the queen's english, it furfills its goals. I lack the clout and energy to try and oppose and change such ideas (and to be frank, it wouldn't make the top 50 of things I would influence if given those factors).



no one understands tech debt to mean "0 debt", you're making my point for me.

We have 1 poster abusing it and getting called out for it.



If we're talking about the abuse of language: "one person disagreeing" (in this case, the subject themself) is not the equivalent of "getting called out".


You can't argue with my original point so instead you're trying to find something wrong with my wording.

I get to define my intent, not you. You cannot call someone out without disagreeing with the behavior or words that you're calling out. So congratulations on stating the obvious I suppose.



We're well beyond a flame war, and the worst kind. This isn't Reddit. and to be frank I felt like we were constantly talking past each other despite my attempts to align ourselves. Once we have to resort to insults, especially over how words are used, it's clear we both missed the point.

My thoughts are laid out above. I have nothing more to add on the subject. You win, and I apologize for failing to understand your point.



In your stubborn response, have you considered Jesus?

No no, seriously. You need a counter party to your debt. What about a divine figure?



That's a nice story but at my company management actively discourage all forms of code hygiene. The only thing they care about is code shipped. It comes down to a perverse set of incentives from the csuite but it 100% has zero to do with developer articulation.

Nobody gets in shit for telling their developers to code faster.

Lots of risk telling them to fix the underlying issues so they can ship faster in the future.



I am not sure you totally understood my point.

"Code hygiene" is not a goal but the means to a goal. The reason hygiene is good is that ideally should (1) enable you to ship faster and (2) have fewer bugs so you can focus on shipping the next thing instead.

So then there's two options - if your hygiene doesn't give you (1) and (2) then it's pointless. On the other hand, if you do have a velocity issue because of bad hygiene, then that sounds in line with your c-suite concern.

"hey boss, our code needs to be more hygienic" - nobody cares.

"hey boss, we are at 10% of possible velocity because of issues X,Y,Z, and we can be 10X faster if we take a month to fix those" - now they are listening.



Hey, I fully agree with your original post and this one, but I wanted to present to you a crazy example I experienced years ago.

So we offered a solution to our customers, and then we could customize this by offering our own "consultant" developers. In the end, each developer had a goal to be "80% of their time billable".

Now we sometimes had to write these things called "channels", which took about 2 weeks to write. If we would have rewritten the framework behind it (which would take about 2 weeks) we could have probably sped up writing channels to less than a week! The thing was, nobody really cared if it took 2 weeks or less than a week, since the customer paid for it. My statement of 'let the customer pay for the 2 weeks anyway' never got hold (that would have probably resulted in some accountant fraud I guess, the way they set up the contract). So anyway, nobody was willing to invest this 2 weeks refactoring that would almost instantly pay itself back.

We were writing channels all the time, and it always felt like such a waste.

Sometimes in corporations, you can end up in the most crazy situations. I've seen plenty.



until turnover is high.

Maybe it is like those restaurants with dirty bathrooms. Most customers don't care, and if you get some minimum customers management thinks a bathroom makeover won't matter.



Turnover at my company is through the roof and management just moves on to other companies as well. New management people are just as reluctant to believe devs saying "well, this code is a pile of shit and so no we really shouldn't be all-in on quickly releasing your favorite new feature".


> until turnover is high.

You're making it sound like having someone quit is a blocker. Some managers see that as shedding the dead weight, and keeping in the guys who are the team players with endurance. The guy who complains about code quality suddenly leaves and all of a sudden there are no more complains about code quality, and worst case scenario you have new joiners trying to onboard and cause a good impression who don't care if code is shit because their goal is to shine.

How did you solved that problem?



It's self correcting as customers will move to the competitors over time.

If it's one of the few business that has an absolute monopoly over a certain sector in a country, then the country will gradually weaken over time, until eventually it won't be able to resist a foreign competitor.

Or at least that's what market theory suggests. Of course the period of 'self-correction' could take a few months to a few centuries to fully play out, and simultaneously overlaps with all other market participants.



Not a huge Steve Jobs fanboy, but I always liked his quote[1] about craftsmanship, sweating the details, and giving a fuck:

“When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”

I think software as a whole suffers greatly from this "well, I got it barely done, technically fulfilling the requirements, so my work is over" attitude.

1: https://www.goodreads.com/quotes/445621-when-you-re-a-carpen...



I appreciate this analogy, but Jobs made this work by creating a leadership culture that was obsessed with quality and craftsmanship. By all accounts he would regularly refuse to ship hardware and software that wasn't up to his standards and fired people for not building things to the right specifications. In contrast, most of us work in organizations with the exact opposite leadership mentality, namely "get your work done as quickly as possible so we can sell more product, and fudge whatever you have to to make it through quality testing unscathed".


> In contrast, most of us work in organizations with the exact opposite leadership mentality, namely "get your work done as quickly as possible so we can sell more product, and fudge whatever you have to to make it through quality testing unscathed".

When I was in leadership and advocated for getting things done as quickly as possible, the principle reason is that it didn't matter: the company already failed by the time I had subordinates. My reward was that I got 4 extra years of my life back by leaving 1 year in rather than at the bitter end, compared to my colleagues.

It's my opinion that most companies are 90% operating failures / doing stuff that doesn't make sense, while there is 10% that does make sense and subsidizes all the failure. Some people call this taking risks, and indeed the worst places to work take the fewest risks, but I don't think the two are related.

Also the Lisa was a disaster. I don't think there is generalized advice here, even if you have all the conditions where craftsmanship and aesthetics are literally the #1 values your product has.



>It's my opinion that most companies are 90% operating failures / doing stuff that doesn't make sense, while there is 10% that does make sense and subsidizes all the failure. Some people call this taking risks, and indeed the worst places to work take the fewest risks, but I don't think the two are related.

so, is the metaphor of drawer useless in software? Is there no point taking pride in the craft because it's all going to fail anyway?

I don't mean this rhetorically. I just genuinely wonder what and how different people's mindsets are with respect to work in the field. I work in games so success is rarely guaranteed, and shorcuts often taken. There's very few times I can say that better code would have saved a game financially.



I said it on here before. I used to be the king of macaroni code. Tiny pieces of spaghetti code - fast running that barely made sense. The technical debt stacked up really quickly but it ran damn fast and got the job done. Kind of stuff that would make people say "How the heck does that work? That is fast though!".

It is a problem of being self taught on projects that only I would use, you would learn some very bad habits. Would also mean making code that you would look back on a few months later and have no idea what you were doing.

If it was for anything other than video games pre-online era, I fear the kind of damage it could have done. It was putting pixels on screen, not running online data bases or via monetary systems.

To that I say, I like the Ps2's/Gamecube memory systems that kind of didn't give a damn how many pointers you threw at it. I would also like to say I learned not to do this, I did not. I just don't code any more.



The culture hasn't persisted. Take a look at the output of the console app on your Mac: They are using the software equivalent of plywood in Mac OS nowadays.


How could it persist? Companies optimize for profit, quality be damned. In contrast, craftsmen take pride in their work, and pride is what creates quality.


Fun fact, there's a word in Greek for "pride in your work": Meraki.


Meraki also means "done with love", which gives it a slightly different spin than just pride. You're proud of it because it comes from the heart!


Yes, but also "done with love" isn't exactly it either. It's very hard to translate precisely.


Thanks! If anyone else has a word for this in their native tongue, I'd love to know them.


Let me ChatGPT that for you ;)

* Sisu (Finnish): Though not a direct equivalent, "sisu" refers to a blend of determination, resilience, and courage in the face of adversity. It's doing something against the odds, putting extra effort, and not giving up.

* Gaman (Japanese): A term that loosely relates to enduring the seemingly unbearable with patience and dignity. It can apply to doing meticulous, quality work even when situations are challenging.

* Jugaad (Hindi): Jugaad speaks to a creative or innovative fix; essentially finding a low-cost solution to a problem in an intelligent way. It reflects a spirit of resourceful improvisation and can indicate a pride or savvy in being able to solve problems with limited resources.

* Arbejdsglæde (Danish): This word directly translates to "work happiness" and denotes finding joy and satisfaction in the work you do.

* Mānawa (Maori): This is used to describe patience and perseverance, particularly in working toward a goal or mastering a skill.



I can't speak for all of them, but "jugaad" maybe isn't a good translation of "meraki".

For me, meraki has kind of a "craftsmanship" meaning - you're building something carefully, like a sculptor. The result reflects your soul.

Jugaad is more of an ingenuity/re-purpose/get-it-working-fast kind of thing, kind of like a "hack" but with a more positive meaning.



I really should get to know chatgpt a little better, thanks for the reminder.


The best reason to do great work as much as you can is intrinsic satisfaction you get from that.

Also, think longer-term: if you can program well enough, then you can write great software quickly which is a huge asset when making your own thing and selling it.

It is quite rational to optimize for your own wellbeing in these ways even in orgs that are not fully conducive to long term careers.



>if you can program well enough, then you can write great software quickly

No? Doing things the right, robust way regularly takes more time and effort than doing it the quick and dirty way, which means your lazy coworker gets the management attention and raise instead of you.

For the vast majority of software developers, the correct career choice is just to always be making your manager's life easier, and they rarely care about "doing things the right way", especially when whatever you write will be replaced in five years because someone somewhere is too lazy to understand the current codebase.



The correct career choice is to seek organizations whose values align with yours as much as possible.

Life is too short to spend most of your waking hours surrounded by people whose beliefs go against yours.



> Doing things the right, robust way regularly takes more time and effort than doing it the quick and dirty way, which means your lazy coworker gets the management attention and raise instead of you.

Not if you make a habit of it. If you do, the right way feels like the only way and comes quite fluidly. Meanwhile, the lack of PR bickering and regressions that point back to you does actually become apparent to your colleagues. Your work is not only quick, but good, and people notice both.

This is something that’s not apparent early in one’s career and the temptation to take shortcuts does have short-term payoffs during that phase. But if you stick to doing good work, you come out way ahead later on.



Unfortunately we live in a stack ranked world and with incentives like not being deported - people will choose whatever pleases management over any idea of craftsmanship or quality.


A bitter pill, indeed.


> The best reason to do great work as much as you can is intrinsic satisfaction you get from that.

Be careful: it can be dangerous to tie your inner satisfaction with your work, which is not under your full control and also what you need to get paid. You can get burnt out.

Sometimes you have to take a step back and say "It is what it is, we all need money, fuck it and let's move ahead."



I think you’ve made a good point but I’d also note that one can have satisfaction and happiness from small(er) bits of work done well in the context of a larger undesirable/burnout/failure situation. And maybe even such outlook can help stave off burnout during difficulty stretches when paired with a somewhat stoic perspective that one is not entirely responsible for the fate of the larger company/team


Yup.

For so many reasons, from a mentor of mine:

Quality Is It's Own Excuse.

If you can do it better, do it better.



Jobs sounds like an asshole to work for and I wouldn't want to be held to his standard. That being said, I want to work with people that at least regularly attempt to employ true craftsmanship. Your product can have its warts but it needs to fundamentally be built with love.


Jobs uniquely understood that promoting exclusively sales people is the primary cause of legendary product degradation.

It’s a little absurd to state “uniquely” there, because obviously, “everyone” understands this except the people that need to understand it.



I'll bet Jobs' company sells more than the companies most of us work for.


I don’t know what fictional carpenters Jobs was talking about. Real carpenters need to be pragmatic and cost effective to stay competitive in the market.

Using expensive wood or spending time doing things nobody will see will lower your throughout and raise your costs unnecessarily for the customer.

Even a master carpenter has finite time and money. Every morcel of time spent doing things nobody can see is time not spent doing other things with more visibility. The masters are still competing with other masters in a globally competitive market.

So Job’s fictional carpenter would get outcompeted by the hypothetical free market where carpenters of equal skill are producing more at lower cost.



It depends on the target market. If I were making furniture aimed at the wealthy, you better believe that every piece of wood in it will be high quality -- and the price I charge would reflect that. If I were making furniture for normal people, price is a greater concern and appropriate tradeoffs must be made.

Apple, during the Jobs days anyway, produced luxury goods for a luxury price. Given the market they were addressing, Job's comments make complete sense.



I think every carpenter wishes they could make furniture exclusively for the wealthy and famous. But they have to compete with all the other carpenters at similar skill level for their business.

Making furniture with features that no one can see except the carpenter is a disadvantage compared to the same carpenter who focuses their time making more their furniture more visually appealing to their customers.

Everyone seems to forget that Apple was nearly bankrupt in the 90s because no one was willing to pay so much for their product when Microsoft did it cheaper and similar quality (from the users perspective).



> I think every carpenter wishes they could make furniture exclusively for the wealthy and famous.

Sure. It's a rather tiny market that can't support a lot of furniture makers. But it can support at least a couple, and I'll bet you that those ones aren't going cheap on materials.

> Everyone seems to forget that Apple was nearly bankrupt in the 90s

I certainly haven't forgotten, but that's orthogonal to my point. My point is that in many industries, there are high-quality, very expensive versions of the products. One of the things that makes them high quality and expensive is that they don't cut corners. In electronics, I've seen the same effect, where extra care and expense was placed into things that technically don't need it and are unlikely to ever be seen by the customer. That extra care and expense matters to that demographic, though.



Look at automakers: there are varying levels of luxury / craftsmanship. There’s a video on YouTube [0] about Rolls-Royce wherein among other things, they’re shown checking a dashboard insert to sub-mm precision for the even height of embedded diamonds, and rejecting the first attempt. Weeks of work gone, thanks but try again.

While Apple is certainly not on the same level as that, the point is true craftsmanship and meticulous attention to detail does still exist in consumer goods, and can be handsomely profitable.

[0]: https://youtu.be/ZcFrFjl-RQs



>I think every carpenter wishes they could make furniture exclusively for the wealthy and famous. But they have to compete with all the other carpenters at similar skill level for their business.

I guess the metaphor applies here too. Some will take that pride and rise up. Some will take that pride and fall behind despite being equally qualified as the ones who rose. Others will coast along and make stable business.

I think where the metaphor breaks down is visibility. Sure, that cheap plywood isn't normally visible, but a customer who looks will find it. very few iphone consumers have the skills to find bad code and fewer care as long as it does what it is intended. It's probably more akin to selling hot dogs than selling a chair.



> Job’s fictional carpenter would get outcompeted by the hypothetical free market where carpenters of equal skill are producing more at lower cost.

Maybe someone should have explained to Jobs how to compete in the marketplace. Another approach is to try to understand why Jobs said those things given the obvious economic costs that you mention, and how it led to the most valuable company in the history of the world.



Jobs was fired after making this quote, because his approach nearly ruined the company. The modern Apple has learned the lesson that you don't need to actually create quality products, you just need to fool people into thinking your products are quality (and it sure helps if all your competitors are even worse).


My point was, instead of dimissing people whose ideas conflict with ours, we can expand our ideas by understanding them. Also, if you reduce it to a choice between listening to Jobs or you ...


> So Job’s fictional carpenter would get outcompeted by the hypothetical free market where carpenters of equal skill are producing more at lower cost.

I think the point of the story is that Jobs's carpenter is not even trying to compete with Walmart trash products. He is deliberately avoiding the market that is sensitive to higher costs.



The point is that the world is large and there are many master carpenters.

This hypothetical carpenter would be competing with other carpenters at the same skill level.



Thank god the world of Software and Hardware engineers competing with Apple is quite small.


This is not wisdom, this is someone venting.

The truth is way more nuanced than “the master carpenter would get outcompeted.”



The truth is also way more nuanced than what Jobs is describing. I was just showing how ridiculous his argument is.


I advocate for a non-naive optimism here because one’s views on this greatly influence one’s mental climate.

If you believe the race to the bottom prevents you from doing great work, then you will not do great work.



If one takes a craft to be their profession, then one must be pragmatic because time and resources are finite. Otherwise one should take the craft as a hobby instead.

Spending all your time polishing details that nobody cares about is not doing great work, it is wasting time. Time that could have been spent experimenting on new techniques, trying new ideas, taking on new projects.



>Time that could have been spent experimenting on new techniques, trying new ideas, taking on new projects.

this mindset seems to be the exact ones that coporate companies sinking in tech debt has. The absurd extreme of this is that carpentry is a waste of time when you could be making more money as a doctor.

Fact is you don't need to be 100% optimal on time and resources and you don't need infinite money to live. I'm sure carpenters work on thin margins but a few pieces of plywood won't bankrupt them and leave theif families on the streets.

If someone sacrifices a little time and money for personal satisfaction and pride, that's fine. If they want to maximize profits that's also fine (as long as they aren't abusing their labor to do so). C'est la vie.



Huh. I look behind me and the nice dresser I've been using since I was a child almost 30 years ago has a piece of plywood for the back. It actually could stand to be replaced by now, though.

> I think software as a whole suffers greatly from this "well, I got it barely done, technically fulfilling the requirements, so my work is over" attitude.

I disagree. I think employees suffer from an incentive problem. I love doing good work and writing good software, but there's only so much time in the day and I don't love it so much that I'm going to give up my personal interests for business gains I'll never benefit from.

On top of that, mismanagement is the other biggest factor. Any time I start some refactoring, I can reasonably expect that I'll wake up one day to a brand new must-have feature that I need to complete by EOD if possible. No matter how much management agrees that tech debt needs to be addressed, it will only ever be addressed if I pad my estimates and do the refactoring instead of my assigned work.



The dresser matters as a craftsman producing a fine quality product. A good mass market product should have a plywood back, because pushing up the cost takes away from it's utility.

Generally speaking, modern management doesn't respect the business, they look at maximizing current P&L before all else. I worked at a place where the entire business was dependent on a true legacy system where 75% of the staff responsible for this core system retired years ago, and the rest literally died at their desks. They considered it their life's work and documented everything and advocated for a variety of sane plans to migrate.

What was the result? They're all dead. The last one was 74. The system remains, and they are paying the legacy vendor 50x and getting minimum viable support and zero enhancement, further increasing complexity. It's a shitshow for the company, but they still haven't moved to fix it. The lesson is, don't get emotionally invested in the company. That dude should have been watching his grandkids grow instead of slinging COBOL and JCL and hoping that someone would wake up and give a shit.



It's a terrible analogy because most cabinet boxes are made out of plywood not because it's cheaper, but because it has better structural qualities versus -- what -- solid planks for the back of a dresser?

The plywood starts flatter, is less resistant to warping, is just straight up more dimensionally stable, and as strong if not stronger than some species of wood that are used in carpentry.



Yeah, definitely a sloppy analogy ironically enough. But as a woodworker I’ve realize most people when they hear plywood they’re really thinking OSB or cheap particle board. Quality high-ply with a hardwood outer layer isn’t in their vocabulary. So the analogy sorta works.


I don't think Mr. Jobs actually knew carpentry and may have meant a different kind of material when he said plywood.


Plywood is actually pretty nice. I'm confused. Are people talking about particle board?


I made this post[0], some time ago, and I think it dovetails nicely, here:

>

Exactly.

I read a book, where one of the characters is a smith. It has this exchange, between him, and another character:

    "Always do the very best job you can," he said on another occasion as he put a last few finishing touches with a file on the metal parts of a wagon tongue he was repairing.
    "But that piece goes underneath," Garion said. "No one will ever see it."
    "But I know it's there," Durnik said, still smoothing the metal. "If it isn't done as well as I can do it, I'll be ashamed every time I see this wagon go by -and I'll see the wagon every day.”
[0] https://news.ycombinator.com/item?id=28086786


This was the quote that came to mind. I read that book many times as a kid and that quote really stuck with me.


Ah, Belgariad. I like David Eddings.


I liked the Belgariad, Mallorean, Elenium, and Tamuli series. The Redemption of Althalus was ... bearable.

I suggest avoiding The Elder Gods series.



> I think software as a whole suffers greatly from this "well, I got it barely done, technically fulfilling the requirements, so my work is over" attitude.

The core issue is that going above and beyond that isn't rewarded in most cases - to the contrary: if you take the time to do it right (write proper unit/integration/end-to-end tests, refactor when you see a steaming pile of poo instead of just taking another dump straight on the pile), you'll end up "less" productive on paper than your colleagues "solving" ticket after ticket - and most organizations run that way, particularly those where the business model doesn't allow for good code. The worst cases tend to be "fully agile" shops that don't account for refactoring / code quality cleanups at all.

Apple is the unicorn in that regard (or at least it was up until the last years, their software quality definitely declined...): their products cost a ton of money for the customers, so the customers expect good quality, Apple as a company has the profit margin to actually make that happen, and most importantly: at the helm they had Steve Jobs who actually "had an eye" for experience instead of some run-off-the-mill MBA beancounter.

(Do note that there is also the other extreme: just look at Juicero. A machine built to squeeze out juice packs, with engineering practices like it would be used in spaceflight)



Typically this is because programmers are treated as workers on assembly line instead of carpenters making beatiful chest of drawers.


There is also a huge portion of programmers who want to be on an assembly line. They don't care about their profession, they don't strive to improve at their craft, they don't read stuff on HN. They're simply there for the money. Since quality requires active effort in software, I think this group has an oversized responsibility for tech debt.

Case in point: frontend and the shit show that's become.



The real part about front end being garbage that pissing me off is that people I have to speak on the phone with go on to patronize me about how “you know you can just use the online form, right?”

I COULD use the online form if the fucking thing ever worked!

Most recently was unable to book service for my vehicle online cause the selection lists always cleared themselves the moment I selected something. I click the year of my vehicle. It populates for an instant. Then clears.

Then had a guy on the phone audibly upset at me for making him take the phone call to book service.



One might also note, pound for pound, most chests of drawers are probably bought from Wal-Mart or Ikea.


And unfortunately, since I enjoy woodworking, the Walmart chest of drawers is just as functional and often much better value than the finely crafted one. There’s virtue in building something accessible that improves things even if it doesn’t have “fine joinery” so to speak.


Much better value? I disagree. High quality products built by artisans mean you aren’t participating(as much) in globalist, race-to-the-bottom corporate behavior. You know where your dollars are going and mostly what was involved in making it. Not to mention, handcrafted, high quality furniture lasts so much longer too, like multiple lifetimes.

All it takes is placing ethics (physical resource use, living standards of those who make your stuff) higher in your value approximation. I hate spending money on disposable goods with a passion, as a result I value the walmart chest of drawers negatively because owning and using it will make me unhappy.



That's all very well, but the average person does not have the money to spend on well-crafted furniture. At the end of the day, they need somewhere to store their stuff and a cheap chest of drawers does the job. Ethics about buying choices are for people with money and will make zero difference in the grand scheme of things. Maybe that chest of drawers falls apart after 5 years instead of 20, but that's not going to sway a person who just gets by financially.

If you hate globalisation, then maybe that can be tackled with better legislation, improvements in working conditions and standards of living, and other systematic changes. It's not going to be changed by lecturing poor people on the ethics of buying cheap stuff.



Exactly. A relative of mine works for a fine furniture company in the Midwest, they have a production line making high-quality items with traditional joinery and actual hardwood and hardwood veneers. We were shopping for furniture for our house and needed a big dresser, I reached out and their version cost $8,000. That would support American jobs and my relative directly, but $8,000! We ended up with a West Elm one in a similar style for $1,800. A Walmart one with cheap particle board could be had for $800. Even if the Walmart one only lasted 5-years, you could buy 50-years worth for the same price as the US-made one.

Weighing "Value" means you need to consider many dimensions and people have different weights, priorities and abilities to service those dimensions.

At some level, a dresser is just a box for my t-shirts and socks. Similarly a link-shortening website probably doesn't need a typesafe, fully commented code base.



I think an important difference, for me, is that at a certain point the chest of drawers is finished.

Software - or at least, the kind of software I have worked on in my career - is never finished. It is a neverending ship of theseus.

I can muster motivation to try really hard on something that has an end point. But the idea of maintaining that kind of motivation and focus on a project that just goes on and on and on is, for me, near-unimaginable. You could pay me a million dollars a year and I think I would still really struggle with it. It's something I think about a lot and struggle with, because I have certainly had colleagues who seem to be able to maintain that level of craft on software projects.



> I think an important difference, for me, is that at a certain point the chest of drawers is finished.

> Software - or at least, the kind of software I have worked on in my career - is never finished. It is a neverending ship of theseus.

Totally agree. I've done several rants on HN about the software industry's inability to declare their products "done" and moving on. Every product that we complain about becoming "enshittified" should have been declared "done" and developers pencils-down years ago.



Strongly object to the assessment that developers have this half checked-out mindset. Now, of course, this would differ from workplace to workplace, so YMMV, but at my workplace, so many developers have the craftsmanship attitude. They'd love to solve hard problems and solve them well, not because the solutions are worth money in a marketplace, but because they are intrinsically valuable, interesting, meaningful, delightful, etc. to the developers.

The problem is the business doesn't care about anything except how much money can be gotten out it, often with a short-term horizon.

So the developers and the business people walk shoulder to shoulder for a little ways, where the two interests are aligned, but then we part ways at the point of introducing technical debt. As a developer, I'm not free to take the time I need to pay down this debt, because of business constraints.



You'll notice I never blamed developers in particular. This attitude is shared across "software as a whole" including developers, their managers, their PMs, their exec leadership. Everyone is part of the machine that is prioritizing money and a short-term horizon over craftsmanship and quality, including but not limited to the developers. We all have agency.


Precisely the exact opposite is true.

There are countless software projects that have never seen the light of day because the developers spent all the time polishing the back of the cabinet (and the product managers designing the door handles), and nobody did anything about the actual drawers.

You've seen the survivors of the process which have ugly backs of the cabinets because the developers started on the actual drawers and, because more likely than not it was somebody elses money paying for back-of-the-cabinet-polishing, and they got stopped at the end.

Also, if I have to delay the building of my kitchen because the cabinets are late, and I call the shop and they cheerfully tell me that they were ready yesterday but they haven't finished polishing the backs, oh man, I don't know how happy am I going to be about their excellent craftsmanship, you know?



>There are countless software projects that have never seen the light of day because the developers spent all the time polishing the back of the cabinet (and the product managers designing the door handles), and nobody did anything about the actual drawers.

maybe some hobby projects. I can't name a product that failed due to too much polishing. It's almost always due to overscoping or underfunding or political reasons. Sometimes first to market is important, but it's not the difference between success or failure simply due to timing.

>you've seen the survivors of the process which have ugly backs of the cabinets because the developers started on the actual drawers

And I've also seen "survivors" that died because the drawers weren't actually bolted on but got plenty of funding on the show floor with "no touching allowed" signs. Absolutes, sith, etc.

> if I have to delay the building of my kitchen because the cabinets are late, and I call the shop and they cheerfully tell me that they were ready yesterday but they haven't finished polishing the backs, oh man

And that's a classic miscommunication. Some managers see unnecesary polish when in reality they were still bolting the drawer in but they think "it's good enough".



This may be one of the only known instances where the plane-with-bullet-holes meme is applicable:

Some people see all those (planes) software projects (coming back from war) being live ridden with (bullet holes) technical debt, and the first thing that comes to their mind is ("better reinforce the places with most bullet holes!") "Better make sure to deal with that technical debt!"

Fascinating!



It comes down to positioning and competition (profit margins). Apple notably sold upmarket consumer products; the segment best placed to pay for quality. If you are downmarket, or if you sell to businesses (where the buyer is not the user), you will find it harder to pull this off. It is the ideal, though!


It’s kind of sad Apple is still sort of the outlier in this multiple decades later.

Every adjacent company ever: “we can beat Apple!!” then actively self-sabotages quality via processes, lax quality control, and a pervasive low level of CBF.



> When you’re a carpenter making a beautiful chest of drawers


Absolutely. Tech as a whole has almost zero sense of collective aesthetic. And that harms the work we do, makes it harder for people to get into the field, and promotes very shallow, formulaic approaches.

You just got it barely working? Great, now make it beautiful while you have the context. It’s done when it is tight, fielded, and you can forget about it.

On tech “culture”: My worst-rated comment on HN was when I suggested devs should spend 15m less on Twitter/HN and put them toward writing more unit tests so they’d understand and enjoy their work more.

To me, that sums up where we are now.



> My worst-rated comment on HN was when I suggested devs should spend 15m less on Twitter/HN

Because everybody knows that spending 15m less on HN will not give you better anything. It's like saying "working more hours a day you will have more code". It just leads to burn-out. Most programmers need some idle time between thinking. Or like saying "Want to have house? Eat less avocado toast and skip that starbucks coffee."



And people tune out even faster if you say to put more time in.


> I think software as a whole suffers greatly from this "well, I got it barely done, technically fulfilling the requirements, so my work is over" attitude.

I get it barely done, technically fulfilling the requirements. How much more I clean up depends how much more time my PM has left me in the sprint. Since I'm constantly bombarded by questions, appeals for help, requests to approve pull requests, last minute changes, various meetings etc., that usually is not much, if any, time.



Have you tried taking the time instead of asking for it? It works surprisingly well in my experience, with very little pushback (and when there's pushback, it's important to understand why and address it). The first few months you focus on delivering value without rocking the boat. You probably don't have enough context to make any meaningful changes anyway. Then when it's time to groom stories, you select the time it takes to do a proper job, to make I improvements, and as long as it's not ridiculous, who's going to challenge you on it, and based on what?

Of course, you need to pick the right battles. Sometimes that hack to fix a production issue will stay like that for ages, and the proper fix will never be done, and that's the way it is.



Seeing a lot of people missing the point in response to this. Jobs' comment here makes me think of the Lord of the Rings appendices that came out when the trilogy was first released on DVD. The behind scenes on the set building showed their artists had carved all of these intricate detailed horses onto parts of the furniture in Edoras that would never show on screen, even knowing they would never show on screen.

Lord of the Rings didn't fail to ship or lose money because of this. They made money, but more than that, they created something that will be remembered forever for quality and craftsmanship. Not every carpenter has to care that much and the same is certainly true of people shipping computing equipment. Just like Peter Jackson, Steve Jobs got rich, but he won't be remembered for being rich. He's remembered for quality and craftsmanship. I can't sit here and say everyone who builds anything should build for maximum quality, but I have trouble believing we'd be worse off as a world if we had more Notre Dames and Parthenons and fewer pothole-riddled main streets with falling apart boarded up storefronts.



Lot of burned out or CBF devs in the discussion, I suppose. It is a bit of a shame how tech in some ways more or less became the modern version of entrepreneurship, a way to hopefully work on the Next big thing(tm) and then cash out of life.

I get it but as an aspiring artisan it also makes me question how I even can get to that point. Your environment determines a lot of your growth and COVID has thrown a tempest into that equation.



Jons also said you have to start with the customer experience and work from there.

He said that trying to build the best tech ever and trying to market it, does not work, and he had the scar tissue to prove it. His NEXT experience echoes the truth.

Making a high-quality product requires an Entire Agreement, you cant buy from a supplier who only sells plywood for your chest of drawers.

Apple controls it's tech from top to bottom and that's the only way to effect serious change and uphold quality standards.

It is spirit-draining to pick up some off the shelf tech and find a million things with it that should be structured differently..... but we all do it and that's how it is.

We don't have top-to-bottom control and easy ways to change product designs, that Apple has, until we all get that ability, high quality is a failable target.



Eh there are certainly places for that mentality, but I prefer working with engineers and in places that do the opposite. Sure you can use the finest wood on the back, and polish the underside beautifully, but your beautiful chest is probably either never going to be bought or ripped apart and the wood reused for a chair. A lot of times, the fancy back of the chest is a complete and utter waste of time and effort.

Good engineers have to know when they're building a beautiful chest for public display for 20 years, and when their customer doesn't even know if they want a chest yet. It's a matter of context and being aware enough of the business circumstances to make the right decision.



As a kid, my dad (a mechanical engineer) explained this to me in a really memorable way. He was planning a model bridge building contest for my friends and me, and I complained that he was making too many rules. Allowed building materials, maximum qty of various things, etc. He pointed out that without these rules, it’d be perfectly acceptable to just fill the simulated valley with concrete—there’s no way that would lose the load bearing test. But it’s also not fun and defeats the purpose of the contest. _The constraints were important._ It’s the constraints that make it engineering. So you could use a beautiful piece of solid wood on the back of your dresser. But most likely that breaks the constraint of cost. Knowing where to save money on material without it getting noticed is where the engineering is.


very well said


It's not necessarily the developers fault here. One of the reasons I stopped being a professional developer is I like writing beautiful or well crafted code. Very few businesses will afford you that luxury. I enjoy the code I write in my own time.


For my own curiosity, what did you move to that (as a person who cares about craftsmanship) is fulfilling enough, etc.?


Infosec. That isn't about craftsmanship either, but does bring together technical and people skills.

I get my craftsmanship fix writing code at home. Just couldn't bear doing it at work the way I had to.



It happens. E.g.:

> In a way I would have loved to ship with that hack in there, but once we found the cause of the error message I couldn't in good conscience leave the hack in there. Besides which hand editing it added time to completing the build, which was inefficient.

Source: https://www.wcnews.com/news/2023/09/18/mythbusters-wing-comm...

The link is about investigating the origin of the “thank you for playing wing commander” error message, which seems fitting too.



You want craftsmanship? Pay for it and make time for it. Too many companies claim to want that but are both unwilling to pay top dollar and then don't provide enough time to actually do it.


I just feel like doing nice wood work is a lot easier than building shit on top of shit. Mostly I mean, an organization is full of shit, shit process, software and unfortunately, people. It takes a high level of mastery and maturity to know when to bust out the scalpel and start cutting the cancer out and know how to do it effectively without re-occurrence.

The first thing a good carpenter will do is make sure the house they're about to renovate is square and true. If it's not, they will have tricks to make the walls square and true, they're not just going to polish the turd or put glitter on it.

Jobs at Apple probably had a lot of opportunity to work on a lot of greenfield things, which I'd say 99% of people don't have the luxury or doing.

I also like his quote and attitude btw, just realistically, most of us won't ever get live in that world.



There are, of course, alternative metrics for "quality". Furniture with non-visible components made of plywood is more ecologically sustainable, for example (lighter and cheaper, too); one could even push this to using veneer everywhere. The furniture's beauty, form or utility is not affected, while being less of a burden on the world.


I rarely meet a carpenter IRL who won't single-ply that backboard.

It's a feature, not a bug; the chest of drawers is heavy enough already and someone's gonna have to move it someday. Making the back as thin as possible is doing a kindness to a future owner when they have to relocate the damn thing.



> I rarely meet a carpenter IRL who won't single-ply that backboard.

Yeah, that's the point. Do you want to be one of the millions of craftspeople who doesn't sweat the details? Or do you want to be exceptional?



The point is when one sweats the details, one concludes that making the backboard full-thickness varnished board is an exercise in ego, not focusing on the user. It makes the user's experience worse for no other reason than some arbitrary artist's definition of simplified aesthetic.

... definitely a lesson I think many software engineers should internalize.



>It makes the user's experience worse for no other reason than some arbitrary artist's definition of simplified aesthetic.

sure, no other reason than "less stability". You may or may not need the stability, but sacrificing it so that is 2% easier to carry into a house (which happens maybe, once per 2 years for an especially nomadic person) seems to be the exact kinds of corners management likes to take.



My classic Macs still have handles on their tops, and they were designed to be desktop machines.

A toast to the hardware manufacturer that considers the fact that tangible objects get moved.



That depends. What is the price of exceptionality?

In other words, which percentage of your lifetime earnings would you be willing to give up to not add a plywood backboard (or the software equivalent)? 10%? 50%?



well, in my field, the software equivalent of cutting corners these days are adding skinner box mechanics to a game. in a darker timeline, it would involve making cryptocurrency fronts masqurading as artistic expression.

I'd happily give up 50% to not encourage that. But I am also fortunate in that 50% of a very senior SWE is still a very liveable wage.



I've been giving a lot of thought to how engineers are different in this way. Assuming everyone has similar motivation and work ethic, I think it boils down to what satisfies you — or more precisely, what irks you the least.

For some engineers, the thought of leaving some things undone gives them the icky feeeling, while the thought of not completing a challenge in an expected timeline doesn't bother them. For others, it's the opposite.

I think this holds true even for personal projects, where there's no manager or sprint to impose a time constraint.



That's an interesting idea to think about: if the thought of not completing a challenge in an expected timeline bothered me so much that I took every step to meet the timeline, and leaving something undone didn't give me a very strong icky feeling, what would I do differently when things inevitably turn out to be more complicated than I originally thought? Turn in my code in a non-working state and say it's done?


In the extreme case, I guess so. The other extreme is the person that will never complete a task as there's always some detail to refine.

But it's a spectrum where most people are somewhere between the extremes.



Well, if you are the type of carpenter that afford doing the best drawers and dominate your market, you can probably work slower. e.g. Some luthiers sell their instruments 5 years before their completion.

If you're the middle-end drawer maker, then you probably will put plywood on the back so that you can build more in less time and call it a day.

And in the end no one will ever see it.



It's basiscally saying that you should put your requirements before the customers'.

All the respect to Steve Jobs, but I know I'm not him, someone who is probably top 0.1% in intelligence and luck. I'll put customers' requirements before mine.



If that is you, then all good. I’m sure there are hobby carpenters getting joy from building wonky cabinets, and that is fine too.


I made a cabinet for my wife and it was both significantly more wonky AND more expensive than the IKEA equivalent, even if you counted my labor as being worth zero euro per hour. It also took several months instead of just ordering one. Still had fun though, which is what a hobby is all about.


Then the PM comes and asks you to change the wood used on the back of the chest of drawers because they have some brain fart.


I take it, Steve Jobs must have absolutely fucking hated IKEA furniture? :)


For most of my career I opportunistically cleaned up tech debt without being asked, because I wanted to. I felt ownership. Now that I'm in a Jira-based job with micromanagement and no autonomy I don't do a single thing I don't have to do.

Discretionary effort used to be the bread and butter of my career. Now the bureaucratic and social project management overhead required for any change makes things too annoying to be worth doing if I don't have to. I don't care if the product works long term, I don't care if the company succeeds long term, I just do my tickets until I find the next job.



I also love how these orgs say, with a straight face:

“oh you can refactor! Just put together a refactoring design plan and present it at the next design meeting. Then after multiple rounds of reviews and feedback, we’ll divide the refactoring plan into a series of milestones that can be tracked and estimated. Then we can prioritize it during our next planning cycle among the other features that we want to accomplish.”

If you do try the whole “never ask permission to refactor,” you’re admonished for creating a PR that doesn’t adhere to the patterns in the repository. “I like this, but we need to discuss this with the whole team.”

So the tech debt spirals away until it takes months for anyone to merge a PR and tests are so flakey it feels more like playing casino slots hitting the restart button until it builds. Agile is great.



It's interesting how the companies creating this culture often pride themselves on culture and think they're doing it right.


the whole "culture" thing is managers wanting to show upper mgmt that their team is happy (even if they're usually not)

because they know deep down if their team is not happy or doesn't smile for the photos it looks bad on them.

or like "mental health and wellbeing" its a bunch of empty gestures that make no attempt at actually addressing the issues of your work (low pay, long hours, stress, pressure so on..)



In some exceptional companies that is not the case, and there is really an effort made. But rarely in large companies.


It is like restaurants they say their ingredients are "fresh". If you have to specifically call it out, there is something wrong.


> I just do my tickets until I find the next job

same. being proactive in a reactive job is never rewarded in my exp.

you found an issue? now its your problem. that issue crops up again in the future? you must have fucked up.

its just not worth it. the pm's and other management are too small brained and they work on negative assumptions always.



"Never ask permission to refactor" has caused so much trouble in my career, specially because folks think they - somehow - have an enlightened path to good code. They don't - it's just easier than reading and trying to understand (which they don't)


Man, the negativity in here is unreal!

I just wanted to chime in and say thanks for writing this, and I feel seen. It describes my daily feelings to a T. I see open source projects with their great test coverage and their principled refactors, and some days I am that person too! I’ll get a burst of Do It Right energy and just knock out a ton of nice well-built stuff. And then one day all of that energy vanishes and, like the author, I CBF. Tests get skipped, code gets bolted into places I know aren’t great, and I just overall start paving the way for something I know Future Dave won’t thank me for. And even though I’m seeing it happen in real time, I don’t have the energy/motivation/whatever-it-is to get back into an inspired Do It Right mode.

(And this is all for software that I write and sell on my own.)

It was inspiring to see that the author is the creator of Lazygit. If you’re reading this, dude I LOVE lazygit so much. I’ve turned friends onto it who love it too. In my mind you’re in the category of open source maintainers who somehow always manage to Do It Right.



Author here, this made my day! Sounds like you and I share similar experiences with motivation.

I'm glad you like lazygit, hopefully I can continue to keep it in high esteem :)



Just want to drop by and say I use lazygit as well. It is an amazing tool, thank you!


There are some misunderstandings in these comments.

This is 100% normal for individual programmers. Motivation, effort, energy, willpower, whatever you want to call it: it's finite.

The draw of an organization is that it gets more done than individual programmers. The catch is that in gluing things together, there are cracks, and things fall through them. It's the responsibility of the COO, HR, product managers, etc. -- anyone getting their salary from the organizational stuff and not the technical stuff -- to make sure there are processes in place to address those cracks. To make sure someone has to "BF."

Increasingly, at every place I've worked, they just offload those to individual engineers and designers. because they're hard to measure with respect to the bottom line or OKRs. The company suffers and engineers burn out because you can only "BF" on extra little tickets and tasks that fell through the cracks for so long without getting paid more.



Most if not all of our decisions are actually subconscious. When you just can't be f*****, it means that some circuit in your brain just doesn't think it's worthwhile to do the refactoring or tests or whatever it is.

That circuit could be right in that the payoff is often not actually worth the effort, when viewed objectively and holistically. For example, if you literally spend two months working on end-to-end tests and it in fact does save you three whole weeks of work in terms of debugging or whatever over the course of the next six months, that doesn't add up.

I think there are some common extremes. On one hand, the business side often forces engineers to take on tech debt that really is the wrong tradeoff. On the other hand, many engineers may spend time creating a sort of idealized factorization and large test suite that in the end really isn't going to pay off. And part of that is actually just because they are worried someone else will find a nicer code organization or another test to write and judge them for not doing it.



not everything is just ROI. Morale and motivation is a huge issue when you feel what you are delivering doesn't meet your standards, even if your standards are higher than they need to be.

I would say this is actually the biggest problem with tech debt, the damage to morale that it causes.



>Sometimes, I just CBF. I spent months (part time, of course) building out an end-to-end test system for my open source project Lazygit, and every day I think of all the regressions that system has prevented and how much harder it would be to add that system now given how many tests have been written since. I know for a fact it was worth the effort. So why haven’t I added end-to-end tests to my other project, Lazydocker? Because I CBF.

Building end to end tests is hellishly annoying and a huge amount of work if the tooling to do it just isn't there. There needs to be better drop in default frameworks for building them.



You basically need to allocate a whole developer’s worth of time to maintain end to end tests. If you’re lucky, they will also have time for your integration tests.


I tend to consider bullshit any point that finds somehow acceptable thinking that people is lazy, in this society, in this world, on this planet, ffs we have to work 40 hrs per week per decades and rest after reincarnation, and you want to talk about laziness? Let's talk about how any bit of mental energy is extracted to built other's wealth and then when you are too old to do nothing other than watching work in progress they just spit you out

when I am supposed to fix tech debt? if every week there is another functionality going out that needs to be done yesterday? Do you think that I have to do it in my free time? Why should I even bother existing



That's how I burned out of software.

On a mature project in a small team, the only tickets left were hard bugs that nobody wanted. The kind of bugs where you can invest days and have nothing really to show for it except crossing out some suspicions. Or maybe incorrectly crossing one out and then going on a wild goose chase until you circle back to it in a week, flustered.

You're expected to commit all of your mental energy to these tickets day after day, and then once you finally triumph and solve the bug after coffee or amphetamine binges, you turn in the code, close the ticket, and you're expected to immediately work on the next ticket.

You don't get a real break. But you can mentally rest at the start of the next ticket since nobody expects instant results. But now it's been a couple days and people are asking you what you've been doing so far—you must be blocked, right?—but you've barely started and you're pressured to invent small lies and excuses about why you're behind, each one risking yet another slip of the mask.

And when you need some time off the most, it's when you're the most behind of all and people have begun to notice, so taking the time off doesn't even seem like an option.



> The kind of bugs where you can invest days and have nothing really to show for it except crossing out some suspicions.

Me, with zero C/C++ experience, being asked to figure out why the newer version of the Linux kernel is randomly crash-panicking after getting cross-compiled for a custom hardware box.

("He's familiar with the the build-system scripts, so he can see what changed.")

-----

I spent weeks of testing slightly different code-versions, different compile settings, different kconfig options, knocking out particular drivers, waiting for recompiles and walking back and forth to reboot the machine, and generally puzzling over extremely obscure and shifting error traces... And guess what? The new kernel was fine.

What was not fine were some long-standing hexadecimal arguments to the hypervisor, which had been memory-corrupting a spot in all kernels we'd ever loaded. It just happened to be that the newer compiles shifted bytes around so that something very important was in the blast zone.

Anyway, that's how 3 weeks of frustrating work can turn into a 2-character change.



Personally these can be the best bugs though because you have an opportunity to learn something new (your work environment is everything though). Compare that to a ticket in an older codebase with hard multi-cause bugs that are just painful to debug and leave you with nothing but a deeper understanding of something that is slipping into irrelevance by the day.


"I found the bug, but it's because the business process you want to model is fundamentally insane and you're asking the computer to do magic."


In my experience, administrative process that was previously done by a bunch of administrative assistants and then "computerized" around the year 2000.

The original stakeholders are long gone, the system is too valuable to be replaced and each quirk handles specific cases that are not documented anywhere. Bonus point if it's in a semi-dead language like VBScript. Please fix.



I'm going to frame this and put it on my wall.


I once ran into a bug that only happened in a specific version of the linux kernel when combined with a specific version of the java JDK, worse 2-3 weeks of troubleshooting of my life.

We found an issue in the kernel bug tracking that seems to explain it, but we never confirmed for sure. Fortunately updating either of those things fixed the issue. This was of course also hard because this was back in the golden days of vmware managed by client's IT team, so getting them to update things on a VM was hell as well.



How did your character change?


One evil-twin goatee, one villainous laugh.


I hope that people who suffer from exhaustion and a lack of breaks are setting realistic expectations for themselves, and not simply assuming that they need to push themselves to (or past) their limit. It is a rare manager who encourages you to work less, but it is (in my experience) a common manager who understands that breaks and self care are important. They just need to be reminded sometimes. You can push back, and a healthy organization will respect you for it.


Crazy enough, I'm from the management school that believes the work is only the tool to develop the person and pay the bills. I will always sacrifice the work for the worker. It's sad that the majority of managers see this in reverse.


> I will always sacrifice the work for the worker.

The attitude I see most often is: "the worker is replaceable and therefore expendable, but the work will always be there until someone takes care of it so burn through as many workers as it takes to get it done"



I like to call this zero sum management, and the parent to your post is a good example of positive sum management.

As long as the business is making money, the prospect of it continuing to make money in the near and medium term future is not in jeopardy, and the actors involved are rational, capable and trustworthy, you should always favor the worker over the work.

IME, zero sum management is an emergent symptom of a poorly performing business (maybe if we make everybody work 150% harder we’ll hit our targets this quarter), insecure executives (who don’t understand the work they manage), or poor hiring/firing practices (the only way to let somebody go is by overloading them and rewarding it with a poor performance review, or you’re hiring people who aren’t capable or don’t care).

If you’re a manager forced to make zero sum decisions and don’t feel empowered to change the root of that problem, you should probably consider leaving — good environments grow people instead of expending people.



>IME, zero sum management is an emergent symptom of a poorly performing business (maybe if we make everybody work 150% harder we’ll hit our targets this quarter), insecure executives (who don’t understand the work they manage), or poor hiring/firing practices (the only way to let somebody go is by overloading them and rewarding it with a poor performance review, or you’re hiring people who aren’t capable or don’t care).

This breaks down when you have one player in the arena acting like a snake that tries to devour everyone else(eg. Elon Musk). He has the gift of attracting an endless horde of people to burn through and then tosses them aside once they are no longer useful to him(so many examples in his recent bio). The result is that they move faster than the competition and the others eventually get eaten alive. Normally word would get out that its not safe to work for such a character but SpaceX and Tesla are among the most desired employers that engineering graduates seek to work for. Tesla received 3.6 million job applications in 2022.



Some persons are extraordinarily good at discovering big+solvable problems, and at continuously convincing other people that it’s worth burning themselves out in pursuit of it.

I think it’s worth pointing out that some projects are worth that level of devotion, and visibly so in real-time.

But we can’t make a project worth that level of enthusiasm and attention just by demanding people to act like it is (the siren song that leads to the earlier-discussed culture spirals). Often-well-meaning people will put the cart before the horse, but no amount of quacking will turn you into a duck, etc.

On balance, it’s healthy to be skeptical of people demanding devotion to some process or objective that’s not rooted in first principles you can agree with.

It wouldn’t surprise me too much if a meaningful proportion of the 3.6m applications per year are filed by people who find the first principles behind Tesla’s culture worthy of their devotion.

But yeah, the number of companies or projects that would benefit from that style of approach is quite small. 20% is the ceiling, 10% feels closer to the truth.



Some people really like killing those kind of bugs. I know people who would move from project to project, at the end of each, killing the show stoppers. I've done that myself.

But what I'm describing there is an environment where:

1. Developers are treated with respect

2. Different skill sets and different motivations of those developers are recognized



Actually what you're describing is completely different. Because if you're expected to only be working on those long, abstract, difficult tickets, none of the pressure to deliver features/bugfixes piles up as in the GP comment. But when you've got features on deadlines, there's not enough freedom to skip meetings and chug coffee all day without turning in any code.


So make that the expectation.

Expectation management is a huge driver of quality of life.

Knowing how to carve out your niche and not be expected to delvier feature after feature without a break is part of "managing upwards", which is another important life skill to gain.



"carving your niche" involves either through a lot of experience (power) or to be known in the industry (clout). The latter isn't all based on raw skill so you just hope you don't burn out before you get to such a point.


A lot of those long, abstract, difficult bugs become blocking/ship preventing issues, so...no pressure. And alas, many (most?) developers suck at debugging, so if you're any good at it, you get everyone else's broken code to fix. sigh


Hombre, are you me?

>> you turn in the code, close the ticket, and you're expected to immediately work on the next ticket.

Yes. That's me. And then I crash.

I used to call in sick when I go from heroically solving something unsolvable to start work on a new ticket. Then O thought, this is not sustainable. My boss is all over me for all of my sick time.

So then I started to just say to my manager, hey, Mgr, amma gonna flex this whole Monday. Don't call me. Don't frakkin even think about me. Back on Tuesday, we cool?

Turns out, we were cool.

Whenever someone requires from you to be a hero, don't. Or be that guy, then take a Monday off.



This. Software engineering can be a mentally draining task, and just like with physically draining tasks your body needs time to recover its strength. Nobody would expect an athlete to last very long doing back to back events without recovery time between them - they'd end up injured. Your brain is similar.

Recognizing that and accommodating it is a sign of maturity for both an engineer and a manager.



And that is why I dislike the label 'sprint'. A sprint is a short (unsustainable) extreme effort, not something that you do continuously.


> What kind of runner can run as fast as they possibly can from the very start of a race?

> [Audience reply: Sprinter]

> Right, only somebody who runs really short races, okay?

> [Audience laughter]

> But of course, we are programmers, and we are smarter than runners, apparently, because we know how to fix that problem, right? We just fire the starting pistol every hundred yards and call it a new sprint.

https://github.com/matthiasn/talk-transcripts/blob/master/Hi...



>My boss is all over me for all of my sick time.

don't you just have normal time off on top of sick days?

But if you're in a flexible enough situation where you can just call up your boss like that, that's great. That's what "unlimited time off" should theoretically have been before the well was poisoned. Trust that workers can manage their own mental health but not abuse it to be gone 30% of the year.



Who left bugs like that on the board until so late in development? Unless they're just "tricky / nice to haves" that everybody knows might not be tractable (taking the pressure off you), that's some "odd" management. No wonder you burnt out.


Working at a place like this now and I saw at least one previous workplace go from a healthy engineering org to something like this when they brought in new engineering leaders who all wanted to make their mark quickly.

The problem is often systemic and a symptom of an engineering team not really having control over their own roadmap. You see it when an engineering team isn't agreeing to take on work, but rather being told what to work on by people outside of the team. Sometimes it's isolated to a single team, but sometimes it can be a whole org or company. It's caused by bad expectations around the amount of work that can be done and unclear priorities. How many people it affects depends on what level the bad expectations are being set at.

In practice, this is how I've seen it play out. There are 10 developers worth of work that needs to be done by X date, but we only have a team of 8. No one has made it clear what the prioritization is or if they have, that priority isn't universally accepted or changes day to day. If everything is equally important, the tough work that may not have noticeable results is often what gets pushed into the backlog over and over. To people who see engineers as the "build new features" people, it's hard to regularly justify "I can't build feature X because I have to solve bug Y" and then a week later say "I still have no idea what's causing this issue".

It's easy to say, well just get everyone to agree on priority and what a reasonable amount of work is, but that's far, far easier said than done.



That's often how tech debt happens. Nobody wants to do them so they just build up


Man you have terrified me about my current situation. I'm currently on a team that is managing an extremely mature internal Angular project. The small team of two devs are just doing tickets like what you describe yet the management has no problem with this and does not hound us over why we haven't committed anything in days or a week+.

This is due to their lack of technical knowledge and they have accepted this reality because the outcomes that they want do end up happening so they dont rock the boat(or know how to since they can't discern technical stuff).

I know its a great spot to be in short term but Ive been scared because long term I will be in a big hole when the next role comes along and its more like what you describe and I haven't grown to match the role. I've considered leaving once the market improves but I don't think I can fathom giving up what I have either. Alternatively I have considered staying until I eventually get downsized but that could be years. I don't know.... :/



If you are worried about your career prospects built a portifolio with what you want to work in the future. If your mental state with the project doesn't allow you to work in arcane bugs full-time, reserve some time for personal learning and portifolio building, but keep working full-time.

A good personal open source project is worth more when interviewing than anything else really. Can't fake that in an interview.



I have been slowly doing this but in my experience, I have never had anyone care about my open source projects and the real problem is not raw coding skill, its being able to work in a large team and follow all modern processes that you'd pickup in modern teams. I am trying to learn and adopt these processes on my team (my coworker is onboard) but its a slog.

For example we compile locally, then manually move the compiled code over to the server instead of using something like docker. Part of this is the restrictions we have over our environment, part of this is inertia.

Fortunately I haven't given up trying to move to that paradigm but sometimes I actually dont want to be on a modern team. Its like I have plateaued to a comfortable state that I know wont always be there but I wish it did. I hope what I am explaining makes sense.



Agile is evil


Agile itself was a response to this problem, and was invented by engineers who wanted more control of their work. It's become a whip for management but when it's done right it can be pretty freeing.


I think this generalizes to “cargo cutting process” is evil.

If you don’t know or can’t reach consensus what your goals and principles are, no process will make your org functional.



> taking the time off doesn't even seem like an option

You don't get what you don't ask for. If you're asking and you feel like you're being overworked and reasonable requests for breaks are denied too much, work on finding somewhere more reasonable. Sure, easier said than done, but worth it to at least try in the long run.



Agile solves a lot of these problems.


Now, of course, everybody is going to start moaning, "But I have all this speed. I'm agile. I'm fast. You know, this easy stuff is making my life good because I have a lot of speed."

What kind of runner can run as fast as they possibly can from the very start of a race?

[Audience reply: Sprinter]

Right, only somebody who runs really short races, okay?

[Audience laughter]

But of course, we are programmers, and we are smarter than runners, apparently, because we know how to fix that problem, right? We just fire the starting pistol every hundred yards and call it a new sprint.

https://github.com/matthiasn/talk-transcripts/blob/master/Hi...



Agile isn't meant to imply speed in the sense of LoC/s, though right? The speed in Agile is about getting customer feedback sooner rather than later (so maybe a kind of latency?). I don't think sprints are mentioned in the Agile manifesto or related materials.

And even within frameworks like Scrum, I don't think that "sprint" was ever intended to mean that programmers are supposed to be in permanent crunch mode.



Words matter, though.

Why call it a sprint if it's not supposed to be anything sprinting? We can literally call it anything we want, so why not pick a better metaphor?

I think that many developers who say they dislike Agile really mean they dislike Scrum. I mean, a rugby scrum is pretty violent, and sprinting non-stop is a good way of dying of exhaustion.

Come to think of it, some managers do seem to want the workplace to be a ruthless battleground with worker pitted against worker in a relentless flat-out sprint to seen as a "high performer".



If I recall right, Sprint originated from Extreme Programming, a predecessor to current agile methods.

In XP, there was very much the idea of spending time to prepare for a sprint. Get requirements and preconditions worked out, clear out possible distractions.. Then you'd use a 1 - 2 week long sprint (aka actual crunch time) to knock out 80 - 90% of a feature with everyone on the team under high pressure and positive, constructive stress. And then you'd have some time after the sprint to work with low pressure, clean up technical debt, consolidate and build up for the next sprint.

And honestly, that's a pretty effective way to work if you plan and gear up for it.



Many people call it an "iteration".

> I think that many developers who say they dislike Agile really mean they dislike Scrum.

True say.



The Scaled Agile Framework (SAFe) simply calls it an iteration. This is a neutral term with no implications about the pace of work.

https://scaledagileframework.com/iterations/





There's nothing ideological about SAFe. It's simply a collection of best practices which work reasonably well in most organizations. You can pick and choose which pieces to adopt and which to ignore. Like any methodology, it can't compensate for toxic management, technical incompetence, or lack of product market fit.

If you don't like SAFe then please be specific. Which parts of it don't work if actually followed as documented?



I literally linked an article going through why SAFe is MBA garbage that misunderstands why agile was created in the first place but if that's not specific enough for you then I'm not sure what you're looking for.


That article is garbage with no specifics. I don't know why you bothered to link it.


Perception. Interpretation. Either way, "sprint" is intended to imply short burst, definite endpoint that can be seen. A Burndown is about measured capacity. The only actual speed that matters is time to failure, i.e. "fail fast".


There's a theory of "Agile", and then there's the reality of how it ends up being practiced in almost every instance. The latter is what matters.


take it up with Rich Hickey I suppose :)

If you've never watched Simple Made Easy I really recommend it: https://www.youtube.com/watch?v=LKtk3HCgTa8



Does it? At one of my former jobs management would regularly pressure engineers into doing late nights at sprint end (every other week) if we were "behind". Then if we finished things a day into the next sprint, the PM would backdate the completion to make it look like we had hit the previous sprint, since sprint completion percentage was an OKR and people's bonuses and promotions depended on it. Then since we hit the sprint, obviously our velocity had to go up for the next one, even though we were starting a day late from scrambling to "finish" the last one.

There's a reason I don't work there anymore.



The expectation that engineers work overtime to hit arbitrary metrics can’t be fixed by a process like scrum or waterfall though. Process can’t replace competent management.


Name & shame


Pretty much everywhere, unfortunately.


> Agile solves a lot of these problems

Agile causes a lot of those problems. GP just described all the elements of agile, "pick up next ticket as a on as one is closed", "blockers", daily status updates, etc.



Agile done right solves these problems. I have yet to see Agile done right, even once. And I've done XP since ~2003 and Scrum since 2006. It is now clear to me that Agile does not solve these problems: a solid leadership team solves these problems, and sometimes solid leadership teams use Agile (whether formally like Scrum, or informally, like just good communication). But Agile is the canary in the coal mine: it reveals very quickly if you have a solid leadership team or not.


I've worked in an "agile done right" situation. It certainly wasn't a utopia but the best experience of my professional career so far (14 years).


To me, "agile" in these discussions only apportions blame, it's orthogonal to the quality of software.

When it's an agile project, either devs will choose to do the right thing, or too many developers will work on new features, whether because it gives them more visibility or because they like working on features more. And when it's not agile, either you have a product/team manager that understands the importance of not drowning in tech debt, or you have a manager that constantly prioritizes features over quality.

Neither approach guarantees that the right choices will be made, just that in Agile, the developers mostly have themselves to blame.



no true scotsman is all agile advocates have

don't get me wrong agile is an improvement in the sense that iterating on small deliverables is better than a single giant waterfall process, no disagreement there

but yeah if your tool never delivers in the alleged benefits, ever, anywhere, then it's not good enough to say the problem is the people

tools are welded by people

if your tool doesn't take that into account and assumes and requires its users to be perfect, well, then it's not a very good tool



Agile done right is about some completely different problems.

AFAIK, it does nothing to help here. But a solid leadership does help.



> Agile done right solves these problems

It's funny that Agile is always something else. It cannot be criticized because then your are doing it wrong. It's like a theory which is not falsifiable.



%s/solves/creates/

I don't care what the theoretical outcome is when the practical one is always this.



What kind of stupid statement is this...no it certainly does not.

But humor me with an explanation, please...



I don’t k now why I’m being downvoted.

Agile lets you manage expectations and set boundaries by scheduling a finite amount of work into a bounded amount of time.



Agile can help, but I think a vacation/time off is better approach in this scenario.


It's not that I don't believe you, I'd just enjoy reading an explanation how it solves the problems parent talks about.


How so? If there are boring bugs to be fixed, someone will need to fix them regardless of the methodology used.


no it doesn't lol it literally causes them? i'm no waterfall advocate but at least with waterfall there's a clear beginning, middle and end to a software project with intuitive places for work, rest and celebration

meanwhile doing maintenance on an existing system in an agile environment, esp with kanban, is very often literally what the poster is describing, an endless slog through tickets that aren't particularly noteworthy and thus don't really merit much consideration or celebration when done etc



Scaled Agile Framework (SAFe) has a regular program increment cadence of every 8-12 weeks. This provides intuitive places for work, rest, and celebration.

https://scaledagileframework.com/planning-interval/



Eureka! If only it was this easy...


How?


I did a startup for five years that absolutely ruined me. Burnout on top of burnout for years on end. Now I work for an engineering non profit and I work 20-30 hours a week, sometimes less, and money is real tight but I’ll tell you - there’s just no way I can work more hours. I actually have a little time for side projects, and bike rides, and I never ever work weekends. Hell I don’t work Tuesdays either except on rare occasions. I absolutely love my job. It’s my dream job. But it’s not worth killing myself over. We have one life to live and I’m going to fucking love it.


I think I might be a couple years behind you but I found your msg inspirational


That wakeup from 6 years of stress to >


It takes time to find the right fit. Biggest thing is, when looking for a new job instead of negotiating the best salary, negotiate the right hours. 9/10 places will say “no thank you” if you say you must be allowed to typically work 25-30 hours a week. The place that says okay is a place that won’t push you. Consider the open source world. They will appreciate paying a lower annual salary and still having a dev focused on their work, and they don’t need all the extra overhead (meetings, etc) of a 40 hour week. Also working in open source (as I do) feels really good. You’re not making some rich asshole richer, you’re focused on helping the users.


>9/10 places will say “no thank you” if you say you must be allowed to typically work 25-30 hours a week. The place that says okay is a place that won’t push you.

How do you find such places? I've been very curious about part time software work but knowledge online seems to suggest that freelancing is the only route there.

Funnily enough, I wanted to find such a job precisely so I could make my own stuff on the side, which will inevitably involve some signifigant open source contributions due to my tech stack. I've thought about simply being a paid member and essentially double dipping, but that route seems even rarer.



I think finding this kind of work involves sharing your goals with a lot of people.

In my case I started writing stories of automated farming communes, compiled my writing in to a zine about a better world, had 260 copies printed and handed them all out, got my then dream job at Google X robotics, then ended up handing a copy of the zine to a robotics engineer and philanthropist who now funds my open source work as we push towards continuous crowd funding as our long term model.

Your story will go differently (lol) but what I can say is that defining your vision, building the appropriate skills, and telling everyone that you can what you’d like to do probably helps a lot. You may have to stick with the unfulfilling job for now, but you can try to build an exit strategy.



> when I am supposed to fix tech debt?

Try to lie about how long will it take. Just today I finished* 1-month almost total rewrite of firmware for one of devices at my work. It started as a 1-week small rewrite of part of communication module for a small bug and was scheduled as that. But I've got chill PM and coworkers who will appreciate that now we can actually fix some 8yr old bugs in legacy parts of that code.

* well, now some testing of edge cases and another round of fixes but at least remote code updating works so we can ship those devices...

Edit: "Lie" is call to action here, there were some misunderstanding in comments. Previous start of my comment was "Lie. ..."



In the same vein, don't tell your boss that you're going to refactor something, add tests, or write documentation. These are implementation details that you bake into your estimates and are part of doing software development. Your boss likely has no visibility into the tech debt in your codebase. Talking about refactoring, tests, and documentation gives the boss the opportunity to say "No, don't waste your time on that".

It's not lying to your boss, it's part of doing quality work.

Of course you shouldn't let perfect be the enemy of the good. You do still need to ship. I'm just suggesting that you don't let your boss know the ways in which you can increase your tech debt by cutting corners.



What we did is to explicitly list bringing any touched modules up to current coding standards as an explicit item on the definition of done. That way team members were expected to include any necessary refactoring and test coverage expansion in their story point estimates.


This is a great way to increase the compliance to coding standards and test coverage. If you can automate enforcement of this, it's even better. For example, your CI build could fail (or just send out notifications) if it detects that a modified file doesn't pass current coding standards.

Of course, it sounds like you have buy-in from management for these quality standards. For people who don't have this kind of buy-in for the whole team, they'll have to work individually to maintain quality.



I rewrote something from scratch, now we can finally fix all of the old bugs.

Let me tell you the tale of a man named Sisyphus...



Yeah, but that rewrite actually fixed a lot of other old bugs which we had to circumvent on server side. Before rewrite the code was just ugly spaghetti mess (interrupt routine of usart port was longer than main).


The problem is you most likely introduced new bugs, created new build/test toolchains, and your team knew the previous codebase, probably quite well.

I have never in my professional career seen a solo developer rewrite something from scratch successfully in isolation. It almost always turns into the developer leaving, either because they became burnt out being the sole SME, or it fluffed their resume enough for them to find a new job. Everyone else on the team is left holding the bag.

I'm actually more surprised your manager/PM let you do this. Most of the time this happens as a skunkworks thing.

Rewrites should always be incremental, never big bang, and never in isolation.



I agree with all of your comment. This was indeed pretty unique case. No one in my small company (including me) actually knew that codebase, it was total mess written by original EE (who sayed himself he was not a programmer), it was pretty small (32kb of rom puts a limit on your codebase) by "team of programmers" standards and currently we have no one else who could actually do anything with that code, one coworker is learning to write firmware and new version is already much more readable and reasonable. It was TOTALLY in need of rewrite, but not all code is a good candidate for something like this.

> I'm actually more surprised your manager/PM let you do this. Most of the time this happens as a skunkworks thing.

I didn't know it will take so long, delving into this was like a frctal of bad code. When I've tried to fix something, it required fixes in other places which required fixes in another places. I could make several TDWTF posts from that code.

> Rewrites should always be incremental, never big bang, and never in isolation.

Yeah, but that codebase was not that big, so it was medium size bang. Never in isolation - there was no one other at my company who could actually do it and it was tested functionally by others once it was stable enough.



I saw this scenario happen. Startup, one person wrote an insanely complex engine that did a lot of stuff; allowed them to scale up, get funding, etc. But... it became a complexity nightmare. The answer was... hire a new single expert, and let them rebuild a bunch of stuff, and... there were now 2 insanely complex layers, one of which sort of knew how to interact with the other one. The first person had gone, and the second person ... just didn't come in the office much (2-3x/month), and... was 'above' all the 'day to day' needs.

First phase was about 4 years. Second phase started, and I was there in year 2 of that. 6 month contract on my part. Took me months just to figure everything out.

Background - the core engine was PHP. The 'rewrite' was also PHP.

I left, and got some updates from a few folks later. They hired some python and JS people ("we can't find/hire any PHP people!"). And... they gave the python and JS people greenfield "rebuild chunks of this system". And months later, this was all spun as "PHP sucks, node rocks". Because.. well... look what was getting done. They couldn't hire many PHP folks because... they weren't paying terribly well compared to the level of skill required to deal with the core engine.

This was far less about tech as it was management. Giving a team of JS people who are all colocated, have a working system to inspect and emulate, can choose their own tools, and are given a long time frame... it's not all that surprising they had some success compared to "let one guy go off on his own and don't talk to him for weeks at a time".

Looking back, the second guy was trying to recreate much of the flexibility of the first system, but in a 'modern' way, which was very much not a great idea (the complexity and flexibility were the core problems, from what I could tell). The node and python teams avoided implementing much of the flexibility, and they could get away with it a bit more because by that time the business was more established, and had a better understanding of what they needed and what was not.

Part of how I viewed it was "it took 12 people 8 months to recreate 20% of what one person did in PHP in a couple of years". But that's certainly putting an overly pro-PHP spin on it. ;). By all means, though, having just one person be the sole person who knows 90% of the system, with no time given to train others... huge red flag. Took me a few months to suss out just how precarious that was, and I understand the business need to spread out the risk. Was just very annoyed that the "rebuild" decision was spun as "php sucks" instead of "solo-expert-working-in-isolation" sucks.



Read your comments later about the specifics of what you rewrote.

I've been in a similar situation and our approach was to make a business case for the rewrite.

* Original programmer who was the team lead was gone and had no interest in consulting for us

* Code was thousands of lines of completely uncommented 8051 assembly language

* Code had known bugs

* Bug fixing and documenting/understanding would likely go on for months

* We could not integrate the rest of the system functionality without a complete understanding of that undocumented code

* We were confident that one person could rewrite it in less than six weeks since we had complete knowledge of what it needed to do.

And then left it up to management as to what was the best approach. They were making a completely informed decision, but phrased the way we did, no reasonable person would have told us to continue with buggy, undocumented code that was at the heart of the system we were building.

I'm often on the receiving end of completely unrealistic estimates. It would piss me off to no end to find out that someone lied about how long they expected something to take.



> But I've got chill PM ...

Have you considered that perhaps your personal perspective is not exactly representative of large swathes of the industry and that many (if not most) workers do not have the agency and/or leeway to place place themselves in a comparable situation?

I wouldn't be so cut-and-dry with your assertion that the parent post is "lying".



I didn't call him a liar, I told him that he should lie about what he does. Sometimes you need a little lie about how long will it take and ship good code a little later than bad code on time.

> Have you considered that perhaps your personal perspective is not exactly representative of large swathes of the industry

Yes. HN is place for ALL kinds of people, sometimes they are not even programmers. Many tips are not applicable to everyone here.



Oh, my bad. Thanks for the clarification.

In that case, I would heavily disagree with your suggestion. Your "chill" PM is likely actively running interference on your behalf in order to allow you to spend time on such endeavors. It's a great thing when you can have such a partner, but most PMs (in my experience) are not willing to put themselves on the line like that.



I've seen these people called "shit umbrellas". If your life as a developer is relatively chill and drama-free, in all likelihood you have a hero PM, PjM and/or EngM using themselves as the shit umbrella to shield you from all the madness being spewed from up above. Those are the best teams to work on.


I just replied to /u/yetihehe. That is a perfect description of the PM we had on the project I was talking about. She was amazing!


Staying in a place where everything is stacked against your excellency will mean you will not gain excellency. Whether just bringing some money home is enough for you is only up to you, but then don't complain that you can't do anything nice, it's just whining at that point. Saying all that I don't condemn people for working in boring shitty places. At least typically they try their best anyway and make world a better place bit by bit.


> I wouldn't be so cut-and-dry with your assertion that the parent post is "lying".

yetihehe is not accusing the parent poster of lying, they're telling them to lie. To claim the work will be X (just the feature, perhaps), and then slip in the extra work (tackling tech debt and other issues), and letting the work schedule "slip" (which they can do because they have a "chill PM").



Exactly, thanks for putting it so clearly.


>Have you considered that perhaps your personal perspective is not exactly representative of large swathes of the industry

Do most software engineering jobs not have good PM's? Asking since I started my first real software engineering job last year, it doesn't pay the best but the PM is great and very hands off. I wonder if that itself is worth holding onto the job a while.



PM quality varies a lot and is hard to judge when interviewing for most IC roles. (As in, you often don't get to talk to those folks directly. You can ask probing questions of other folks, but feedback is a bit of a crapshoot.)

If you have management that you like working with, and the work is pretty good, yes, that in and of itself is a pretty good reason to stay for a while.



Where is the lie exactly?


I though he was suggesting OP should lie in order to look better?


Being not-lazy in your work is not the same as working lots of hours.


> Being not-lazy in your work is not the same as working lots of hours.

You've just provides your personal assertion on a non-definition. Do you actually have an alternative definition that does not imply working lots of hours?



From the article

> I routinely come across developers who are the real deal: they’re conscientious and judicious in an unwavering way. They set a standard for themselves and do not compromise on it. Whether that’s a deliberate thing or whether they’re just built that way, it’s humbling to witness. If there’s a flaky test, they investigate it and fix it. If there’s a bug they spot in the wild, they make a ticket, and maybe even fix it then-and-there. If a new feature doesn’t gel well with the existing code, they refactor the code first rather than hacking the feature in. They’ll dive as far down the stack as necessary to get to the bottom of something. None of these things are necessary but great developers know that if they don’t address a problem early, and properly, it will only cost them more time in the long run. [... and more.]

This sounds like a great definition of not-lazy, and it does not mention long hours anywhere. My anecdotal experience is that I usually only have 20-35 not-lazy hours to give per week; any further hours per week are much less potent. Right now I'm working 24 hours per week and I think my employer is getting a great bargain: they don't have to pay me for hours that would likely be lazy.



> This sounds like a great definition of not-lazy, and it does not mention long hours anywhere.

Your definition of "not-lazy" by it's very nature relies on systematically working overtime.

Investigating and fixing flaky tests is either explicitly covered by a ticket, and thus a part of run-of-the-mill tasks, or something a developer does in unscheduled tasks by going above-and-beyond including in work hours.

Finding a bug, creating a ticket, and working on it is not proof of non-laziness as that's a part of the basic job description.

Refactoring a feature is either tracked by a ticket and covered in normal ticket-assignment processes, thus not a demonstration of lack of laziness, or it's something you do in your own time.

You have to clarify where you find the time to do all that "above-and-beyond" stuff because it's either normal work done on normal company time, which surely doing the normal/bare minimum is not proof of not being lazy, or it's going the extra mile, which is certainly not done during normal office hours.



I guess I've been lucky to work for companies that don't try to squeeze their developers so much. In my career, there has usually been time available to do things "the right way" (up to reasonable constraints of course).

> You have to clarify where you find the time to do all that "above-and-beyond" stuff because it's either normal work done on normal company time, which surely doing the normal/bare minimum is not proof of not being lazy, or it's going the extra mile, which is certainly not done during normal office hours.

At every company I've worked for, I've had time for "above-and-beyond" stuff during normal office hours. That's just how low expectations are in my neck of the woods. Or maybe I'm outrageously talented and I would still excel working on some elite FAANG team... but I doubt it.



Yeah, but that diligence takes time, and now you have to work on extra hours to keep up performance metrics with the rest of the team.


If I worked at a place where I was penalized for "only" putting in 40 hours of solid work per week, I'd be energetically looking for a job elsewhere.


> If I worked at a place where I was penalized for "only" putting in 40 hours of solid work per week, I'd be energetically looking for a job elsewhere.

I think you didn't understood the problem. No one is talking about penalizing people for only doing 40hours. The problem is that code quality is never prioritized or allocated time, so you either live with it or you go above and beyond and you deal it yourself on your own time. If your team is bounded to KPIs which you don't build up by refactoring bad code or diving deep into code issues or tracking weird elusive bugs, either you are forced to pull extra hours to no fall behind your team or your performance will clearly be awful.



> The problem is that code quality is never prioritized or allocated time, so you either live with it or you go above and beyond and you deal it yourself on your own time.

This is not an inevitability, though. It depends on the temperament of the company you work for. A slight majority of the companies I've worked for didn't mind allocating time for that sort of thing at all (but they did expect you to make a business case for it).



Yes, work a normal, reasonable number of hours (let's say 40), but while you're there, give it your best.

The point is that hard work doesn't imply excessive hours. If it did, that would mean anyone who doesn't put in excessive hours is lazy, which isn't true.



Isn't it quite obvious that productivity does not scale linearly with time worked? Consistently, I can work 4-6 hours a day at full productivity, and I have to choose less demanding tasks for the other 8-10 waking hours to maximise my productivity and well-being. This is also what I observe in my peers, and while there might be outliers to this, I think the stretch is far less extreme than propagated by some influencers.


> Isn't it quite obvious that productivity does not scale linearly with time worked?

Irrelevant, and reads as a non-sequitur. OP expressed his personal assertion on laziness, not productivity.



laziness and productivity are intertwined, no? They are both relative, but I find it hard to say someone is "lazy" if they only put 30 hours in but outperform the rest of their team by a decent margin. That only works if you think you can get 33% more productivity out of them personally if you pushed harder.

I think it's a notion worth considering in such a conversation.



I can't speak for the original poster but one thing that I noticed is that from time to time it happens to me that despite not having a tight deadline I tend to not go all the way in avoiding tech debt. One example would be that I had a problem in one of the microservices with a version of a docker image that wouldn't run on an M1 mac. I fixed it in that repo but didn't do the same changes to other services with the same issue. Changing the other services would have taken me less than half an hour. This is the kind of laziness that the article and qup are referring to I believe.


No, this is absolutely not true.

Laziness is not working hard.

What you're talking about is something else.

Sloppy or Careless work maybe?

But not lazy. If you're working 40+ hours a week you're definitely not lazy.



Some people consider themselves to be "working" while browsing HN or reddit while they are "on the clock". That is being lazy while working.


I wonder how you measure balance between being lazy vs. not lazy by this definition? I agree with you, but it's not like it's feasible to remain full-on focused on coding or meetings or documenting for 8 hours straight each day.


Really good point. There's a big difference in checking HN in the 10 minutes between meetings vs spending 4 hours after noon reading and replying to threads.


Most people consider low-effort to be lazy.

You can absolutely put in a lot of hours, but be putting in near-zero effort. This results in sloppy or careless work, but the root cause is the laziness of the person.



> This results in sloppy or careless work, but the root cause is the laziness of the person.

If someone is producing a high volume of low effort work, they are not lazy. What they are is not disciplined, or not skilled.

If someone is producing low volumes of high effort work, they are similarly not lazy, they are highly skilled and maybe a perfectionist

If someone is producing high volumes of high effort work they are a either a one of a kind savant or they are lying about the volume or effort.

If someone is producing low volumes of low effort work, then maybe we can call them lazy.



You forgot the most common case:

Someone skilled produces low volumes of medium-to-high effort work because they are the sort of person who would rather browse social media, or engage in office gossip, or play "call a meeting to discuss" games to avoid having to do the boring work.

If someone is "undisciplined," more often they are just lazy and are engaging in avoidance behaviors. Humans with serious executive function issues are a tiny (super tiny) minority of the workforce.



>Someone skilled produces low volumes of medium-to-high effort work

So based on the table they are skilled, right? Are you suggesting that they are a savant in disguise and that they can produce high volumes of high effort work if they weren't "lazy"?

if the work is considered medium-to-high effort by the organization, your opinion on if it's avoiding "boring" work (which can still be low or high effort) is irrelevant.

>If someone is "undisciplined," more often they are just lazy and are engaging in avoidance behaviors.

IME it's because the employers don't trust nor want them to work on the high effort work. So either the business's most profitable software is the most boring, or the candidate is too junior (alternatively, the position and responsibility is simply filled or not valued)

>Humans with serious executive function issues are a tiny (super tiny) minority of the workforce.

Likewise, humans who can do "productive" creative work for 80 hours a week consistently, for years, is also a super tiny minority.

At the end of the day, "lazy" is relative and we haven't even established a baseline for what is/isn't lazy. So this conversation won't go anywhere. All we established in your lens is that taking breaks or doing non-technical work (meetings, even gossip depending on the line of work) is not productive in your eyes.



I've worked with quite a few people who absolutely can do quality work but who will intentionally avoid actually doing it. People who browse social media most of the day, get lost in their phone frequently, would rather wait 2 weeks to have a meeting to get unblocked when it could be resolved in a short email, etc.

I have literally had (TWO SEPARATE!) people tell me, thinking it was perfectly acceptable, that they often put extra lines in their code so they can go back and clean it up instantly with auto-format while pretending they did real work.

What would you call someone who defaults to this type of behavior if not lazy? Work shy?



What's the difference between "lazy" and "serious executive function issues"?


Emotional vs Medical.

A person struggling with narcolepsy doesn't fall into the same bucket as the person who just wastes time at work so they don't have to do work.



I agree. I see it all the time. Huge amounts of hours being wasted "working hard", and running away from answering the real questions which would double the (positive) output in half the time.

That said, I think "laziness" is only a small part of the answer. It seems to me that it's usually about an emotional response. Kind of like procrastination. The hard questions hit hard. There's a real good-feeling self-satisfaction from putting in hours of sweat.



> I agree. I see it all the time. Huge amounts of hours being wasted "working hard", and running away from answering the real questions which would double the (positive) output in half the time.

I think a lot of times we are put in boxes, and our roles are pretty heavily constrained, such that we do not have the power to "answer the real questions." Raise your hand anyone who's had this conversation with their manager:

Manager: "Dev, I'd like you to take more responsibility, be transformational, be a 'force multiplier' for the team!"

Dev: "OK, let me make major architectural decisions without having to get approval from three levels of managers."

Manager: "Uh, wait..."

Dev: "Let me hire and fire, and build up a team of direct reports."

Manager: "Hold up..."

Dev: "Give me a budget to spend on tools, training, contractors, and so on."

Manager: "Whoa, whoa, whoa.. I didn't mean that transformational..."



Not quite that extreme but yea. I've had those conversations.

> Working on X but Y is a blocker

> Okay, I can do some work with Y to help get unblocked

> No we'll let A (on a different team, maybe a different contracted studio) deal with it, here's tiny widget Z to work on in the meantime

Sometimes it means well, sometimes it feels like they don't value your expertise nor care about fostering growth. And sometimes it's just politics (especially when working with multiple different companies and contractors and all that).



Lazy is a convenient catch all for "This person lacks the emotional fortitude to do the work when the option of not doing the work presents itself."

There are a million reasons/excuses for people to be lazy depending on perspective.

Personally, I view people with this trait to be productivity vampires that I avoid like the plague regardless of their reasons (which in my experience are 99% excuses and 1% genuine hardships).



> Why should I even bother existing?

you should bother existing to push back against economic forces that push us to work too much and feel bad that we aren't working more. you should exist to teach your colleagues that taking the time to consider the broader implications of your work is important. you should exist to contribute your opinions to communities like this one. you should exist to eat chocolate and walk your dog (if applicable). you should exist to listen to Alan Watts lectures on YouTube. You should



This comment inspired me, then made me laugh, then made me very, very sad about the trajectory of human civilization.


Developers are paid handsomely for those 40 hours. Much more than most other professions. I for one am tiring of the laziness of some developers I work with, and I don't even consider myself particularly diligent.


The funny thing is that burnout can still happen regardless of how much compensation somebody gets.


> is extracted to built other's wealth

You are blaming the system S. However we have counter-examples where the problem P occurs outside of the system. If P occurs without S then possibly S is not the cause. Admittedly untangling causation, sufficient and necessary is difficult.

The article itself appears to be a counter-example that is non-commercial: where problem P occurs without system S.

I think it is worthwhile investing time to work out for yourself when to honestly blame commercial constraints, and when to recognise other root causes. Blaming the system by default is unhealthy IMHO.



Some of us really are lazy, though. But we set ourselves up in contracting or solodev where our time isn't being managed by a JIRA jockey between meetings.

Clients and customers see us as efficient, but it's really just a matter of being so lazy that we don't let technical debt pile up on us and make us have to actually work hard later on.

You can get away with it in corpo-coding too, but you need to earn some freedom and have the right team members around you.



But what would the world be if you didn't produce more surplus value for the stakeholders and investors?! I would never understand people who go the extra mile like OPs heroes for some random corpo. You go the extra mile to develop your skills and leverage this new expertise into higher salaries or escape the rat race altogether.


I multiply every estimate by at least 3x and often add an order of magnitude, especially when I haven't done it before. when it takes less than I guessed, I use the time to resolve tech debt (or maybe leave early to enjoy the big blue room).


Have kids. It'll put things in a different perspective what it means to work 40 hrs./week.


You seem to be working at the wrong company.


I suppose you can move to Venice Beach sleep outside and just queue up for the soup kitchen a couple times and shoot up all afternoon.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact



Search:
联系我们 contact @ memedata.com