Nobody ever gets credit for fixing problems that never happened (2001) [pdf]
web.mit.edu
web.mit.edu
At one place, there was some important order processing taking place. As is fairly typical, couldn't rely on getting all the required info. Or critically, getting all the required info correctly. Some extra data, slightly missing pieces but enough to work, etc. etc. Some could be pretty gross. We built validation to massage some inputs, modify processing, what have you to address as many of those as we could think of. The team put in some metrics to identify which validations were "triggered" for each order. Neat. If we'd add more, we'd add a date to it.
It was great. We reported those stats so anyone could see anytime, but we'd also send out some comms about it every now and then. It also helped tremendously when a coworker or customer or whoever would say "Oh no! What happens if XYZ?" and we'd say no worries, we already addressed it, and we prevented #### orders from getting stuck for XYZ.
It showed that the team was thoughtful, that we were invested in making this work, that work needed to continue to keep things running smoothly, and we had data to back that up.
Really helped switch the conversation in the org because folks could see it. If someone pointed out that we hadn't thought of something, it honestly was more about what do we do vs. why didn't we think of this. (Yes, there is a comment here about poor org thinking or blame culture, but some of that exists everywhere.) More proactive. Recognition of preventive quality. People gave us accolades and it bubbled up to some good and real recognition at higher levels too.
I'm mangling the words here a bit but I hope you get the idea.
Thanks for sharing! Shamelessly stealing and applying this concept at work next week!
I hope it helps!
Fast forward a few months – I was on vacation and shit blew up. There was a sev 1 escalation, several customers were pissed, the CEO/CTO were involved. The team in question – the same one that wrote the shoddy code and ignored all warnings bells – worked round the clock and got the service back up. Now they are heroes for their effort and the same manager I mentioned has a great reputation at the company for being so active and communicative and showcasing his leadership during the outage.
Feature on time + risk, feature late + no risk (and anything in between), it's in the end an engineering and business decision and either choice might be the right one depending on the circumstances.
I build something that depends on many systems that others have created and that uses data from probably about every dataset we have. What I build also has very high customer visibility. So whenever something breaks upstream, the first place customers notice the problem is in the system I maintain. Psychologically, people begin to develop a mental association around your system being a “problem” if it keeps getting brought up as the starting point of SEV discussions and customer tickets.
As a result, a lot of what I do now is defensive. I investigate and reverse engineer upstream codebases to identify likely failure modes, and I spend hours analyzing datasets of questionable origin for data quality issues and inconsistencies. I document and date stamp all of the problems that I find, file bug reports and assign them to the relevant teams, and write proposals describing potential solutions to what I see as large architectural design flaws that will come back to haunt us at some point.
All of this work is promptly ignored with “not enough bandwidth right now” or “not a priority compared to feature development”. Which is fine. I document all of those responses too.
Then eventually, something breaks in a big way that is again first noticed by customers within the system I am responsible for. In the past, I would immediately drop what I was doing and scramble into investigation mode for a few days to prove I wasn’t the root cause of the X hundred thousand dollar issue, er... I mean the blameless SEV review & postmortem... but more recently my preemption seems to be paying off, and lately I just reply to the panic with a bunch of links to old Slack threads (where we already discussed the issue), the documents and proposals I created (that no one read), or the bug reports I filed (that were never followed up on).
Perhaps it does come across as a bit petty, but I try to be as polite as I can, and from my perspective it’s an improvement over the previous situation. The only downside is that all of this preventative work takes away time from the primary work that I was hired to do.
I also find it more impressive when someone fixes someone else’s problem. I’m not one to shower praise on someone for fixing their own mistake, nor do I expect any praise if I fix my own mistake. I would be apologizing to everyone for screwing up in the first place.
Of course it doesn’t change anything about the people that work there, but the people at the top now clearly have a better idea of how it works than the last ones :P
What you do though is, you leave a very obscure edge case unhandled, make note of it, then just don't tell anyone. Invariably someone will hit it exactly one day before you're scheduled to go live. Then just apply the fix (make sure to procrastinate long enough to simulate working on it) and voila! The longest I've seen an edge case go unfixed in this manner has been three years.
Though truth be told I'm not smart enough to add bugs on purpose, I just sometimes notice I've failed to address an edge case and ... leave it. If it turns out to be important - I can fix it when the fix's value is maximum. Half my day is spent fixing others' unhandled edge cases, so it's nice to have one tucked away for a rainy day that you know you can fix easily.
Is the problem the incentive itself, eg. if they didn't reward fixed bugs would you write better (even just better communicated) code?
However, I’ve also had managers who pushed back against nice-to-have cleanups as the product matured (especially close to a release). They had cause as the product became overly complex, where issues were tedious to root cause and fix.
I tended to queue up a lot of improvements and then unleash them at the beginning of a release cycle.
Later QA would find a problem in the previous release but couldn’t reproduce in the later one… because I had already fixed it.
I didn’t introduce bugs intentionally, and the fixes were visible as we had to backport them for point releases, etc.
Moral points don’t pay my mortgage.
The company that makes it also has a generator they use when they're contracted to make more code in their awful language. It's bad, the code has to be manually cleaned up and sometimes is delivered broken. Then they get the money on the support contract to fix their problems. (It's not their only product/service, but it's key to many of their services, a way of hooking customers.)
Their generator did not using the looping constructs, and several of their "senior" engineers actively discouraged it because "You can't be sure a loop will do what you want it to do." (Wish that weren't an actual quote.)
From my limited experience with "proprietary bullshit languages that only exist to hook customers", there's ways to mess up how loops work in the language. So maybe those senior engineers actually know what they're talking about.
I've seen "languages" that treat variables differently based on whether they have uppercase letters and underscores. Before I saw this in action, I believed the seniors telling me to "never use uppercase letters ever" were insane...
Or. Dev hacks a fix up, sends to prod. Sees another bug and fixes immediately. No loss in revenue/customers/favorite vanity metric/whatever. Dev creates ticket to refactor/fix code properly and adds to next sprint. PM removes from next sprint to get capacity for further resume driven management projects. Issue crops up again due to hack. Original dev is now able to do ticket originally removed from sprint.
I have seen that this is one of the most efficient ways to advance your career especially in larger consultancy companies with hundreds or thousands of different customers.
Spend Q1 each crashing your respective project; spend Q2 as a fixer undoing that damage using his knowledge of his own work.
You’re both cutting edge and a proven fixer!
Tuco is a wanted man, Blondie brings him in and gets the reward money. Then just as Tuco is about to hang, Blondie shoots the rope and they both escape to another state ... where Tuco is also a wanted man.
Never point to the possible issues at the code reviews, retirement refinements etc.
Let your junior colleagues fail on a schedule within the margin of error on your planning, but keep a close enough eye on them so you know how to bail it out if they can’t pull it together with a little extra time/guidance.
Okay — still give good code reviews, but if you let them face-plant a little on design, etc, then they get experience. And you don’t look dumb when it turns out they were right. But you do look like a hero when they’re struggling to get across the line, and you whisk in to fix it.
In reality that I live, there is never enough time, if you have 3-4 team mates pumping features out, it is already impossible to prevent every problem and review every piece of code.
I don't have to be cynical about it, it just happens that issues will crop up over time and I am there to fix them and there is never enough time to prevent them up-front, because if you will try then you will never deliver anything. Ship fast and break things is maybe too far - but still shipping something beats not shipping ideal state.
Those 100 users took performance to a crawl but we never seen it earlier because it was never used that way in that capacity.
Frequently I end up having to do one more PR to get the tool to correct the exact problem the team experienced, so in practical terms is much less of a 'witholding' and more of a 'burning in' situation. But the final product does end up getting written in hours instead of days so while I don't get the credit I feel entitled to for foresight, I get mis-attributed with being able to solve difficult problems quickly.
Which is kinda true. I hate being caught flat footed so I'm always squirreling away fragments of a Plan C.
https://en.wikipedia.org/wiki/Time_bomb_(software)
Usually only works if you're the only dev, unless you get creative with counters like the original devs that made some nice cash fixing it all for y2k
(officially: don't do this)
I'm dumbfounded about all this, you spend years learning and reading books about the craft but the only topic which will matter is how you can con the game ?.. weird.
Much happier when I can fix something quickly because I have some tools or logic in the codebase already that lets me do something quickly by being covered with sanity checks so I can zip along without driving us off a cliff.
He's one of my favorite pranksters. But needless to say, the football team was not very good.
This only works in time limited sports though. Most real world situations are not time limited like that and so the advice doesn't apply.
This does work ok for long distance competitive running, since the factors at play are time and metabolic rate and is missing the strategy present in team based ball sports like football, soccer, basketball, etc.
I usually write my best code to show others it's possible to write good code and ship on time, with exceptions of course (and I usually document in code why its half assed)
By the end of the day he would plug back something and come out the "servers room" saying he fixed that and get everybody's praise. Even got him two raises in the span of 18 months.
That's how crazy it is.
I know a variation of this sort of story, where a good sysadmin/DevOps team was halved and then the problems started. The company didn't have those issues exactly because they had a good surplus of eyes to handle everything.
They realized only later the mistake.
Neither does it imply that it never happened.
They shared a story.
That being I highly believe that stuff like this has and is happening right now.
I've worked in consultancy enough to know that many job's securities revolve around solving specific issues, and if the issues don't exist job security gets lower.
The ones who are honest and actually disagree are banished and their lives are made difficult. They are called all sorts of names the most important being "not a team player".
The opposite is the lemons market. It is why getting some wet building work done that is actually waterproof is a fucking dark art. Even the pros hiring pros get fucked because the “is waterproof” part is invisible.
Doing this effectively requires tact. Try to mostly bring up your silent efforts casually, and be judicious about how often and in what situation you mention it. If it gets interpreted as an "I told you so," an excuse, self-importance, etc, then it will probably do more harm than good in terms of your standing with others.
Might be helpful to some degree. But won't save you if your organization's culture simply doesn't value your work or more generally doesn't care about proactive, methodical improvements that have no flash or immediate payoff.
In the context of one's effort valuation it seem to be a very bad advice. Unfortunately.
So in small teams where visibility is clear those things are obvious.
It's in larger orgs where you want to climb the ladder that you get bonus points for the problems fixed but not those you prevented.
At a big company you should be able to turn that into a number - 'this kind of issue was costing us $X/quarter, and thanks to my work, it is now costing us $(X-N)/quarter, in line with my estimates.'
It's performance season so I've been giving a lot of thought to how you quantify and attribute impact especially for folks in lower-visibility roles.
Not every company is going to see it this way but that's kind of a truism. Not every company sees any one kind of impact the same way, and you have to think about that relative to your career goals. I think aligning with your manager at the start, quantifying your impact and showing your results is going to get you the recognition you deserve at any company worth working at.
The intelligent, optimistic and genuinely good, helpful people who don't learn this (or refuse to compromise their good nature) end up burning out, getting performance managed or with PTSD
Some people don't want to give up the job at High Status High Pay Corp. That's the trade-off they are choosing. (Not every HSHP Corp. has to be a bad place to work, however.)
Well thought and expressed. Thanks.
> numerous daily examples of people just trying to do the right thing
And most people reading HN can do that.
That's such good advice.
On the same note, it's so discouraging when someone who is not/neither takes over, those people leave (one way or another), and you have to start the search again.
Or when someone is intelligent enough you don't figure out they're not honest until it's too late. <shiver>
Anyone who's been around the block a time or two will accumulate those experiences. I hope I've not been jaded by mine.
> Work is with honest, intelligent people
Yes.
Very true, and it may not even be malicious on their end, just avoidance and their brain rationalizing/minimizing without them realizing it.
This is good advice that’s well intentioned, but (sorry), it can be interpreted as elitist, and in a way that’s detrimental to the reader.
I am no way suggesting that this is the intention or belief of the parent, but while I’ve got more miles on my odometer than I’d prefer, they’ve informed me that “reasonable” is better than “intelligent.”
My god how I’ve found that working with reasonable people is so much healthier, more productive and rewarding than working with the unreasonable* intelligent folks.
*I fully grant to my current and former colleagues, friends and associates that I have been irredeemably unreasonable any number of times. Consider this a small thanks :).
Being reasonable is part of being intelligent. Surrounding yourself with intelligent people doesn't necessarily mean "surround yourself with the highest IQ individuals you can find." (not saying you're saying that explicitly, just that i think you're just using a definition of intelligence that's narrower than the parent) Working well with others, understanding when one has made mistakes and being able to admit to it, understanding both the known unknowns and the unknown unknowns of a problem...these are a better mark of intelligence than a mensa membership.
Not in the slightest, those two are quite separate.
I happen to believe that reasonableness is part of being intelligent, by the following criteria:
1. when you are reasonable you do not make unreasonable demands that will just be troublesome and cause workflow issues because in the end they are unachievable.
2. a reasonable person will be able to determine what other people are capable of in given situations, and be able to structure things in such a way that other people can perform to best meet expectations.
3. the root of reasonable is reason, a reasonable person can be reasoned with because they possess the quality of reason, in most of the history of philosophy if you do not possess the ability to reason you are an idiot.
Moreover, being able to admit mistakes (specific thing mentioned by parent) is oftentimes detrimental for you. People who do not admit them are typically rewarded, people who easily admit them punished. So, what you are looking at is "ethics even if it does not benefits me".
Being reasonable, is being someone with a strong genuine value for collaboration. They actively advocate for and work with others to optimize situations taking everyone's needs into account. Encourage give and take, constructive debates, and appreciate feedback. Etc.
An intelligent person can be all those things. Or none of them - but manifest them enough that, with some spin, they seem reasonable, while actually optimizing the environment primarily for their own long term benefit.
Very intelligent unreasonable people are disasters to work with.
> it can be interpreted as elitist
If "intelligent" is taken as 'naturally superior intelligence', then I can see what you mean (and I think that idea is a egomaniacal delusion). What I mean is people who choose to act intelligently; that's quite democratic.
It’s life goals to be smart, kind, and down to earth. It really comes from a LOT of experience though.
There's nothing wrong with elitism as long as it leads to initiation rather than gatekeeping.
> My god how I’ve found that working with reasonable people is so much healthier.
Could not agree more. Most people can be trained well to do any job required of them. What cannot be trained, and certainly at the behest of the employer is interpersonal skills.
The one situation where I would prefer someone who is intelligent at the expense of being personable is if I intended to hire 2-3 absolute weapons to be the core of a startup.
I think that those can be trained as well. The fact is that just acknowledging the issue requires a level of self-awareness that not everyone has, and training THAT as well requires being aware of it. External input and help from a specialist or a dear friend can get the ball rolling.
I really wish this were true, but especially in programming I don’t think this is the case.
I’ve spent years as a programming teacher. Some of my students have been among the most wonderful, enthusiastic, hard working students you can find. And yet, despite both of us working hard for a year or more, some never develop any talent whatsoever for programming. Statements like “everyone can code” can easily turn into a rod for their backs. - “Therefore if I’m not succeeding like many of the other students, it must be because I’m not trying hard enough, or there’s something wrong with me”. I don’t think this is anyone’s fault. Perpetuating the lie that all our brains have an equal capacity to program is a terribly cruel injustice. Some students would be much better served by finding another career that they can excel at. The faster they figure this out, the better.
Programming isn’t for everyone. It’s hard. Not everyone has the same capacity for it. I believe accepting that is an act of kindness.
I should have made my prior assumptions clear. The "most people" I'm referring to are CS graduates or people with IT diplomas and the percentage among those who are trainable to a capacity of competence in most companies are roughly 70%.
> Perpetuating the lie that all our brains have an equal capacity to program is a terribly cruel injustice. Some students would be much better served by finding another career that they can excel at.
When I was still a uni student I used to be a CS tutor in a help desk setting and I especially remember one guy who used to come in a lot. He had a really great attitude despite being humbled by the fundamentals. He used to repeat to me: "Sometimes you have to ask for help when you need it." After that semester I didn't see him again. I also remember a particularly annoying guy who used to come in and waste my time and the other tutor's by bringing in a problem and then solving it himself within seconds of sitting down just so he could talk about how he solved it and how much he knew. The world is not a fair place.
Yep. Those two stories are in some amount of conflict. I agree that anyone who has passed a decent hiring bar can be trained to some baseline level of competence. But the difference in capacity between that baseline level and someone brilliant can be huge. And it matters. This is the difference between something being an ongoing issue for the team for months, and it just quietly never seeming like it was ever a problem in the first place. As you say, it’s totally unfair.
People known for being purely highly intelligent people often think they know it all and are often a net drain.
Both honesty/reasonableness and intelligence are required. A family memebr is tearing her hair out about having to work with some assistants who are honest, well-intentioned, and pleasant, but who are just mentally incapable of keeping things straight — they literally screw things up and make more disorganization than they fix (fortunately, better help is supposedly on the way).
Overall, in hiring and working with people, most of the time, a warm body is definitely NOT better than nobody.
I'll let you know when I find this communist utopia.
If you start micro-optimizing - especially on other people, whose behaviour you can rarely change. It may leave you with lots of frustration and completely missing the grand picture.
I've personally been fortunate to have been able to form a network of a bunch of different well-connected folks so I can always choose who I get to work with in the event that companies shut down or get acquired or such and such. I feel the value of such a network does not get touted often enough.
Finally, I accepted the solution was long-term. I made a long-term plan - to do what I really loved - and focused my attention on that, and slowly built up the resources, skills, etc. for that plan. One wonderful side effect was that the dead-end part diminished in my mind; sure, I still had to do it, it still sucked and there were some awful days, but it would pass. I didn't matter so much; those people didn't matter; it was like one of those movies where the kid knows that someday they will leave the depressing, dead-end town they are stuck in today.
I hope that helps a little in your situation! Good luck!
Not too many of them around, are there? You can have either honesty or intelligence but not both.
Think that it is the management's fault if they misjudge you. They have the chance to judge you correctly, yet they misjudge you. Their fault entirely.
1.) Create a spreadsheet with all of the features of your group's/company's products(s) listed in rows.
2.) Create a column for every team member in the group and highlight the lead developers for each feature.
3.) Then ask each team member to add a checkmark in their column for every feature for which they would be willing to be on hook for 24x7 triage pager duty.
Over the long term - the most valuable contributor(s) on the team will be the one(s) with the most checkmarks next to the features they led development on (i.e. they write understandable code and document well) combined with the most checkmarked rows in their column (i.e. they proactively seek to understand other peoples codebases).
What if the table in fact shows which people are best at dodging the hard work
Combined with showing who has the most friends in the office (giving checkmarks to features built by one's friends)
This is kinda a well known phenomena in medicine[0]. Same with lawyers. I'm just reminded of this scene from Silicon Valley[1]. It's messed up and why everyone needs to be very careful with metrics and remember that metrics are only guides, not targets.
[0] https://www.theguardian.com/society/2016/jan/29/doctors-avoi...
In general though even if some developers are gravitating to only projects that are simple/trivial, those wouldn't necessarily be differentiators because such projects would have checkmarks by other developers as well.
Also it can help to have the Product Management team rank the features in terms of strategic importance and criticality to the functioning of the company.
I'd say the biggest benefit of such a spreadsheet is to provide visibility to leadership about the bus factor of the team. Too often the critical projects are really only maintained by a few team members. There's no incentive for new team members to learn the "legacy" projects versus creating their own pet projec. Then the inevitable RIF or transition happens and the lack of long term support becomes an issue.
These bosses tend to be competent ICs who became team leads, they are best positioned to judge the ICs they manage because they themselves are masters at the craft.
In the end people ended up simply inflating the value of stories.
In my previous team I had to argue with a person that 2 story points to add translation keys were ridiculous.
To which the EM argued that 2 was okay because he also needed to write few accompanying tests.
I have nightmares thinking about this stuff. It was literally quicker to add the translation keys and that pointless test than to even discuss and vote the story and debate the points..
And large companies will probably never learn, because at some critical mass it becomes less important to ship than it does to tell people how cool the product you want to ship is. Devs don't get paid for shipping outside of a short surge of stocks (which they proceed to not be able to take advantadge of because potential insider trading). Heck, some industries just let you go after you ship.
"learn how to be better at self promotion"
Do you have another solution to this issue?
If you are an IC, you play it up with the right people. Those right people fight for you instead of the other way around. When the “we need to cut the fat” talks come around, suddenly you are not on the chopping block. But that also assumes the people fighting for you are not on the chopping block.
Soft skills across the industry is highly under valued. Knowing when to pick a fight or hold your tongue is also important (ie, reading the room).
I hate it but you got to do what you got to do to get that cheddar
which is why one should not self-sacrifice. It garners no reward for one. Secondly, if the boss doesn't realize how much of an enabler you are, then it's time to start looking for a new job before the layoffs even starts as a thought in the boss' head.
They eventually acquire enough experience to be able to produce something that sort-of works around the 3rd attempt.
But thanks to how good they are at communicating, are considered by management to be good engineers.
While doing a working project at the 1st try, without using this week's new framework and so on isn't as valued.
Unfortunately, this can cut the other way as well where you can have someone incompetent override competence or not even involved people further down which is common during large layoffs
This is in fact known in management literature: assign your best people to the least important project. That way the second best can grow to become the best, while the best are always free to help out if your fourth most important project has issues - it isn't a big deal if your least important project doesn't get done on time and if they manage to finish it so much the better. (your best are also free should sales discover a short window where a quick feature can bring in a large sale - though this is obviously easy to abuse)
Also, can you describe the problem? It sounds interesting.
The UI had options to check some categories and exclude others, this was mapped to sql with a nested query IN (…) and not in (…). I noticed that there were less than 64 categories and always will be so I figured pack the category membership into a 64bit ints and use bitwise operations. The UI query generation would map to use bitmasks instead. They didn’t even let me implement it, just agreed that it would work and took it from there. I think they were quite embarrassed by it. It ended up being 10K faster.
If they were ready to have you on for 6 months, You'd still probably be one of the most honest contractors if you stretched that out to a week, or even month. It's a shame honestly isn't always rewarded proportionately to suggesting an entire rework of their infrastructure.
Don't waste your time and clients money on pretending to do work that you don't. Its ethically wrong (maybe even criminal) and it sounds like you would be bored to death wasting your talent.
Don't blame the company for not wasting its money either. It did pay for the whole day and gave you good recommendations.
You could do fixed price. Or split the difference (on both sides of the estimate), which provides good incentives for both parties.
The hardest part of getting into contracting was the guilt of feeling "I'm charging too much for a simple fix!". If the fix was so simple and the client didn't find it in those six months then maybe your assumption that the fix was simple and obvious was incorrect. Regardless, your fix provided value, and you should be compensated for the value that you provided, not just the number of hours worked.
The psychology of workplace is quite subtle and almost backward. There's a motto "squeaky wheel gets the grease" .. to the point I'm thinking of trying some games. Like designers who produce crappy options and one good to toy with higher ups thinking they decide. There are some ideas in that vein so you flip the relationship and benefit from it instead of bleeding.
If your solutions tend to be more stable from the get-go, it will get noticed at most places. There are always going to be that odd company where that's not true, but in my experience, simply doing higher quality work gets appreciated.
Good leaders. Or, worse: Consultants. That is, it takes either an outsider or a self-critical leader to affect change? Those doing the planning are always optimistic [0] about their decisions, processes, evaluations, and progress. https://en.wikipedia.org/wiki/Planning_fallacy
[0] not always bad: https://en.wikipedia.org/wiki/Hiding_hand_principle
Having a boss that loves to sell his team's work to his boss also works wonders.
If your boss is male, let shit fail. You'll get hero points for responding to incidents.
A female boss will quickly suspect incompetence if things keep breaking (i.e. see how far half-assed DIY home repairs get you with your wife before she loses patience with you). Your hero points will come from mitigation.
This paradox comes up a lot in security. IME in this particular field the gender stuff is less relevant since everyone is paranoid. But when we run stuff up to C-levels, it's only the female execs and lawyers that really stop to consider possible issues-- the men just dismiss everything until it happens.
A mature organization respects the process that prevents getting stuck for 3 months. But… they may be more stable and less nimble. Boring orgs don’t like heroes.
A Sr eng who spends 6 months coaching a junior engineer has much lower value/hour.
Assuming you are doing other things make sure that is visible.
Also why did your colleague wait 3 months to ask you for help? A couple days would be OK, a month would be crazy. You should poll them and not wait for an interrupt.
Up until that point I knew my value but I don’t think anyone else quite got it.
The above seems to be how the top billing agencies on Upwork function, with fewer staff you can grift more people because the hours being billed aren't honest, and so you can have more clients and reach the "top" earnings position faster and more easily; with the same practices existing at least on one of the two prior platforms before oDesk and Elance merged.
However, often leads just need something in order to know what you are doing, especially managers that don't really closely work together with their team. It can help to just mention it to your lead. Because it is easy to see what you done, but not how you have helped somebody. Just mention it in whatever recurrent meeting you have. And if helping out takes more time, I'd say it is only fair to have whoever is responsible for delivery involved in prioritization, because then it is at the detriment of whatever you are working on, which might be more important.
Often, it takes less than 15-30 minutes to help somebody get unstuck. I wouldn't enjoy working at a place where people would refuse to help me with something like that, or I would be so pressed to achieve things that I can't spare 30 minutes out of my day to help someone out.
Your value will emerge with time.
Just keep calm and carry on.
Good and bad times will do their usual sinusoidal dance but your slope will be pointing up if you zoom out.
There will be unfair promotions outside of your team, reductions or freezes in yours (companies have tendency to throw people at problems = inflate dysfunctional parts; if you have well performing team - they won’t let you grow short term; just wait it out, they will eventually).
Value and opportunity are chaotic processes in effort and time.
All we can do is to try to maintain the levels of workload such that we have clarity of mind to seize opportunities when they reveal themselves. Honest and balanced colleagues help there, but that is ultimately a missions for yourself only.
Agree with your point, solving problems gets you points, avoiding them doesn't. My cynical view of the headline is, that a lot of people do get credit for solving problems that never really existed, simply either fabricating (intentionally or not) easy to solve problems or vastly overblowing problems they just happen to have a "solution" for.
If ypu successfully fight a fire, you are a hero, if you prevent fires it is just normal and nothing special.
You can phrase it as "I help teams deliver on time by making sure they don't get stuck." Or "I increase a team's velocity by preventing mistakes that stop work."
It's how you sell yourself and then, how you tell the story of what happened. Being able to tell a compelling story is important.
It is easy enough to 'measure', a good lead would value how you benefit the team and enhance your co-workers productivity and seek to understand this part of your contribution. He or she could just ask your peers, it is not science.
If this does not apply to your situation at all, then leave because no amount of evidence will ever force your superiors to accept it, it will only antagonize them. You do need to make your case sometimes, but the level of proof should not be that high, you need some trust in order to function as an org even if it is exploited sometimes.
If you don’t have such a manager, perhaps find them. Or become them.
And great engineers are consistently good at this type of passive, keeping the lights on work, but it does not reflect on their quantifiable work, so orgs do not include this in performance reviews. It is up to your manager to recognize this and advocate for you.
Especially with many organizations focused on data or metrics for performance reviews or promotions being able to say you fixed an outage that was costing $X million per hour comes across much better than a vague counterfactual notion that your high code quality prevented Y such outages in the first place.
However it is clear that noone is improving and that the process IS me.
What I've been trying to do is make sure that my scope and role is fully clarified, and any "extra" activity that I perform is documented and flagged. Anything that becomes a "common" activity implies a missing part of the process - be it a role that is missing, or a skillset that is lacking.
Before you start thinking that it is pretentious or self serving, it's perhaps the opposite - you owe it to the process and the team/business/organisation to make them see what you're putting in, else they fail to find the gap.
It's not paid off yet, but hopefully it will yield results within the next 6 months.
One piece of advice, I found myself this person once - it’s the road to burn out city to be the critical path answer to everyone on the team’s challenges. You sound like someone who is very generous with your time and support. In my experience once people have found a critical path there is no point at which they “stop.” This isn’t because they’re trying to hurt you, they’ve just found the answer so to them it doesn’t seem wrong.
It will take even more of your time, but you ought to consider practicing giving less answers and asking more questions of those who seek your help to try to help them unpack the issues themselves. It will feel more tiring at first, but you’ll gradually help the others learn and also create a small bit of friction that will encourage them to try their own solution or two before seeking you.
Management asks are separate/ they can actually reward you with compensation and promotions for this extra work. But the team asking for help won’t stop when you get more comp unless you start teaching that you’re not the answer.
Well, a problem that hasn't happened yet is a risk, right? So you can apply risk assessment math to it:
Value = Estimated risk of the problem occurring * Cost if it happens
This is a management problem, because no-one wants to be accountable for a repeat incident even if it was rational to be working on something else more important.
1) We must do something.
2) This is something.
3) Therefore, we must do this.
Politicians, the media, corporations, and the public all have a part in this.
Sure, that's why the politicians want to be seen doing it. But the legislative focus is often on getting something passed now while it's a hot issue rather than on eventually getting a good bill passed (let alone deciding that we actually already have the correct amount of legislation on the topic).
Like many other problems in politics, the root of the problem is the other voters.
Waiting for something to actually happen before allocating resources to preventing it is (to some degree) a rational policy.
I've heard this called "institutional scarring" in a blog post somewhere. The idea is a small wound can be replaced with tough inflexible tissue. The jist of the blog post was that just because something happened, doesn't mean you have to change things to ensure it never happens again because that can be an over-reaction that really burdens your future. Accept that loss and that it just might happen again, but that may be better than onerously preventing it with certainty.
Surprised you found it despite my butchery!
e.g., You were tasked with working on a ball of mud and it was miserable, so the next system you get the chance to build has to be the most scalable, modular, and cutting-edge thing ever, just to be safe.
I spent a miserable year trying to convince people that they were over-reacting to an outage and there was a very simple solution to the exact problem that occurred. But when senior managers see their jobs at risk because of a repeat, they'll mandate that the entire department review their code for similar issues and remediate. They'll also listen to the loudest voices who somehow come up with massively over-engineered solutions.
Another example, we had a password expire which caused an outage on our trading stack. The amount of effort that went into stupidly convoluted hand-crafted solutions ensuring this "didn't happen again" was laughable. And in the end, after more than a year of work, the whole thing was abandoned in favour of a much simpler centralised solution that should have been done from the start.
Agile was literally about doing things quickly and quick cycles of capability improvement. But Scrum is a worse version of the planning processes it meant to replace!
If anything, the way scrum lays out the work into immediate problems exacerbates the cycle. In the long run it just turns into a ticketing system where fires get pushed up and technical debt gets pushed down.
It even spits out a super easy-to-track, meaningless set of efficiency numbers for consultants/executives to min-max!
I always thought this just meant to scrumble every week to get things done with a weekly standup?
The unit of work is even called a sprint because the idea is specifically to commit to very intense units of work.
I'm an engineer type, most of this makes very little sense to me.
Everything else, world-class, public, private, consultants or not... was a joke.
I don't think cross-team collaboration works in agile. Either one plans ahead, or everything becomes an unpredictable mess.
"b-b-but other teams need visibility of your sprint!" no they don't. I don't think I've looked at other board other than by accident.
You say this as if it was a coincidence.
I'm allowed to say such things. Some of my best friends are scrum masters.
I went to all the same meetings, and was still supposed to actually develop software in between them all.
Adding a bunch of processes because you want to add processes doesn't provide value.
You can see why. These people have to decide what will be worked on out of all the potential things that can be worked on. Someone has to make that decision. Will this feature make us money? What about that bit of work that doesn't add a feature but reduces resource costs? What about tech debt that I'm told is building up and slowing the ability to deliver features?
I'm not a senior manager, but ultimately someone up the chain is responsible for the company surviving and making money and paying our salaries. They are just like you and I, trying to make decisions based on what little information that can glean. So part of that is "what will this cost and how much will it be worth" vs "what will that other thing cost and how much will it be worth".
To that end, they need some way to estimate this. They latched on to agile as it was being promoted by tech as a way to do this. Whose fault is that?
And so with that came all the frequent estimations, are we on track, rituals, etc. Some people don't believe this should naturally follow. I agree. But somehow all those rituals have become part of the cult.
We abondanded scrum. We abandoned refinements and estimation of stories and story points etc. Now we meet with a PM once a month formally and as a team perform a t-shirt size estimate on where we are. Otherwise we update her as frequently as she asks (which isn't often) or we want. This gives power to us but because of that we're conscientious and make sure to inform her timeously when things are looking sketchy or whatever. Yes, we still have to give "estimates", because ultimately, senior management want to make decisions, but it is otherwise quite lightweight.
It is so liberating.
This is why in many corporate cultures it pays not to proactively stop a problem that you know how to fix if the problem is not in your immediate problem area. Let it be noticed, let it become someone else's emergency, then fix it. Much better path to a reward that way. Of course, you should also be planning to leave said organization, in the long run it won't do well.
"wow, last week we had such nasty bug, impossible to track down, also caused production reliability issues. Tom stayed up all night, and finally pushed the fix at 3 in the morning."
Now, if you then say that it wouldn't have happened if 1. Tom didn't overcomplicate the system, 2. Tom learned our tools properly, 3. Tom actually understood the requirements and at least tested his changes at least once manually, 4. Wrote good code so that it's easy to troubleshoot 5. Wouldn't have forced a rushed PR review together with the product owner.
You'll just sound like a bitter, know it all.
I'm reminded of this every time I see some YouTuber or other social media click bait claiming that the Y2K bug was no big deal.
The reason it was no big deal is because thousands of graybeards, like myself, stayed up many long nights for months ahead of time making sure things would work.
I still remember the tension during the countdown to midnight UTC. Then the tension rising again during the countdown to Eastern time. Then once more at local time.
Only when it was 2000 in Pacific did we unclench our cheeks.
Guess we'll find out in 2038.
https://en.wikipedia.org/wiki/Year_2000_problem#On_1_January...
Lots of stuff didn't care about the day, too, like you'd get 0997 and that meant September 1st 1997 because the first (or last) of the month was inferred, and you'd get goofy logic around year++ where you add 100 years whenever you want to increment the month, and the whole thing is written as a modulo 1200 but whenever the date is about to be 0000 you look at what's stored in year instead and add one to it instead of 100, because that way you have less variables to allocate and every "little bit" counts.
Everyone knows now, but lots of people writing programs didn't have any prior art, they were just good at messing with computers and sort of fell into programming by accident.
"we were all worried about the ozone and nothing happened, this is just a repeat and people will stop talking about it any time now"
and my response is "'Nothing' happened because the governments acted fast and turned it around so now it's mostly just boring stuff like catching some factoryy that decides to go cheap and use banned chemicals to save a buck"
There were a few jokes about it in the newspapers but by and large the public just ignored it.
I work on climate and hope / hoped that the same would happen, but it's looking like it will soon get everybody's attention regardless.
Unfortunately those fixes are slated for Humanity 2.0, Homo extinctus.
Climate change will impact companies in different ways at different times. Oil companies, for instance, are incentivized to ramp up production as much as possible while also diversifying.
The way to get all companies to take appropriate actions is to not allow them to externalize costs. That means a significant carbon tax.
People ask why they don't hear about it anymore -- oh, it's because we listened and banned CFCs and fixed the hole.
Some countries have not heard the call yet it seems (ones that like their role as perpetual victims and blame everyone else but themselves), but even just five years down the road, the world will already look very different for all the effort that's being made.
You guys are all in your Y2K underground bunkers still, right?
Disclaimer: I was part of that effort. The funny thing was that I was brought back to a previous client to fix something that my previous efforts had literally caused. Took me 20 minutes to fix it once I saw what the problem was. And then there was a "while you're here, can you take a look at this ..." That lasted about two years until they closed the department and moved it to NY, NY.
At least I got credit in terms of billable hours.
If you are prepared, nothing interesting happens, life moves on, people opened a notebook and pressed a few buttons.
If you are not prepared, the texas grid freezes, people die, people lose their savings, and "nobody could have imagined it would be this bad".
In strategic sysadmin and cybersecurity this is staple thinking, and a useful part of what I teach now.
Problem for vigilant thinkers is the rewards, as explained in TFA, are perverse.
People are content with technology to be magical. They don't see the millions of people quietly repairing it and planning to keep it all going smoothly.
To "bosses" cybersecurity only bring them problems, and cost them money apparently doing nothing. The same for any defence force, until you need it.
Did some nice interviews for international sysadmin day last summer [1].
[0] https://www.goodreads.com/book/show/22663095-left-of-bang
But it is a great example. I still run into people who recall Y2K as an example of much ado about nothing. No, no!! It wasn't an issue for you because many people worked hard to prevent the problems.
Those problems were not terribly complex just pervasive and critical, requiring a high LOE. It wasn't like a huge moon-landing engineering problem to be held up as some accomplishment of humanity, more akin fixing a lot of dumb Challenger o-ring problems before a blow-up.
I worked for years in the late 90's on Y2K projects, helping to stop the UK's critical infrastructure from just stopping at midnight. Wales would not have water or gas without our efforts, for example.
But I've heard people since say things like "why did we spend all that money on Y2K, when it clearly wasn't a problem since nothing happened?" and even "Y2K was a hoax invented by the IT industry".
We won. We successfully stopped the Y2K bug, and it was hard work, and it wasn't obvious that we had caught it all by midnight. Yet rather than celebrating, some people saw it as evidence that we had been ripping them off. People are weird.
The thing that annoys me is that this is best case scenario when it comes to climate change. If we do in fact manage to avoid the apocalypse, all the "climate deniers" are going to feel vindicated.
The only "credit" you'd get is "This guy cost the airlines god-know-how-much money, and for what? An imaginary threat!"
- Problems that never happened.
- Problems that people don't realize are happening (where people cannot relate visible symptoms to their root causes). You only get credit for addressing visible symptoms. Though, disturbingly, you will get credit even if the fix is only temporary... This creates an incentive to only address symptoms since not solving the root problem allows you to get credit over and over again for fixing the (recurring) symptoms... In fact, people will praise you even more as a 'Relentless hero who dedicated their entire life to the problem' LOL.
Also, nobody gets punished for creating new problems if the visible symptoms cannot be traced back to the root cause. That's why I oppose complexity in all matters - It obscures root causes and sends everyone off on a wild goose chase addressing symptoms... Complexity turns everything into a frustrating game of whac-a-mole.
The person causing a problem can even get the credit for solving symptoms of that problem.
Human Resources departments often run into this exact scenario. Many of the tasks that fall into HR are hard or impossible to quantify, and if done well they're also solving problems before they manifest.
I once worked with a test manager that was effectively judged by how many bugs were found and how many tests were written. He was actually a nice guy just trying to play the game given to him, but if you didn't know this you would think he was doing exactly as you described.
There will always be a few bad eggs in the mix, but I'd check the incentives forced on them before judging too harshly.
Pre-outage improvements, reliability defense in depth, eliminated scalability bottlenecks before they are hit, are all ignored by leadership and the company: it is just human nature that even though they understand you have to prepare for possible issues, if it hasn't happen yet, you won't take it seriously. I've seen this in many internal performance reviews and promotion committees. People who haven't ever got bitten badly by an outage may call these premature optimizations.
Granted, in my time working for a major 3 letter tech company on account with a major finance company my highest exposure to VP/C*O types was fixing the fallout from a whole chain of corporate culture related mistakes. If I hadn't already had a job lined up elsewhere I probably could have gotten a good bump out of it. I doubt that would have happened if I'd identified and fixed the problems. Part of that busted corporate culture. We didn't have metrics around uptime/SLAs there though which considering the clients business was pretty ridiculous.
Everything is working => "What are we even paying you for?"
Everything breaks => "What are we even paying you for?"
Respect. Engineers and management respect line workers. They have a word for the expert line workers, ("craftsmen"), Takumi. https://www.allaboutlean.com/toyotas-takumi/ and Takumi have a valued place in the company.
Without that basic level of respect... i dunno.. seems like it wont work
There's two choices, you either don't give a flying fuck and deal with it, or you go as loud as you can to make yourself visible beforehand and try to get credit for your work, your choice.
https://news.ycombinator.com/item?id=8940820 - Jan 24, 2015 (50 comments)
Now we have something akin to a "person that prevents problems" award. It's a nice gesture, but, even though I received one, I think it's mostly nonsense. You don't get the face time/experience presenting with the higher level managers. It's almost impossible to prove that you prevented catastrophes, by working extra hours, or doing the right thing. Nobody likes a "Hey look, I told you so!" sort of perspective, no matter how it's framed.
To me, this is the most gratification-limiting aspect of being a software engineer: time is required to test quality of foresight/design. Rewarding retroactively, for great past decisions, doesn't happen. There are systems I designed, when making a pittance for compensation, that's still being used a decade later, across multiple companies, almost entirely unmodified. That, now objectively, good work wasn't seen or recognized by anyone paying me at the time, and can't be seen by anyone now. I burned good time for a "good job me!" as a reward. As I get older, that mental masturbation seems less desirable, since it's usually at the expense of the surprisingly limited life credits that we spend on those tasks. But along with most other nerds, I can hardly stop myself because it's an innate obsession.
My manager just told me I got a 3/5 on my eval yet again because in the past six months
- I did everything that was asked of me and
- I did a lot of things that weren't asked of me and
- I didn't catch anything on fire and
- I put out someone else's fire and
- I prevented several fires from ever being started in the first place,
but that's not good enough. The person who started the fire that I put out is getting promoted because they showed initiative in starting the fire. I didn't show enough initiative putting it out for them or preventing fires on multiple other projects. Apparently creating two of my own projects that never caught on fire also didn't demonstrate enough initiative. From now on I'm applying for one new job per day on company time.
1. incomplete
2. wrong
3. missing
My goal is to write code that is so clear it doesn't need documentation.
I don't want to read the code of your function to figure out what its doing. I want to read the function signature, and if that's not clear enough a comment explaining its purpose and parameters. Code explains how it does something, but often does not clearly explain what that something is.
For example, having the parameter to a function declared `const` means the function cannot alter it, and this is checked by the compiler. It won't be necessary to mention that in the function documentation.
P.S. This doesn't work in C and C++, despite them having a `const` type qualifier. This is because the `const` is not transitive, and can be legitimately cast away. Therefore, it's useless as a guarantee. D's `const` is transitive, and although you can cast it away in @system code, you're on your own with that.
Actually you should mention it in the documentation. There's 2 types of documentation, so it's easier to just do the one: documentation for users, documentation for developers. Unless you work absolutely alone on all your projects and you don't open source them, someone else is going to be reading your code.
>> someone else is going to be reading your code.
Someone else is going to {read,edit,write,maintain} your code. Which means __anything__ the code does should be explained. Before you were suggesting documentation is only for the user. Documentation is also important for the developer. Whoever takes over your code later or works on it with you.
i += 2; // add 2 to i
const(int)* p; // p will not change what it points to
No value is added by such comments. Hence, the more expressive a language is, the fewer comments are needed.Of course, a precondition is that the person reading the code knows the language reasonably well, and I'm not writing a language tutorial.
But you should write summarize your abstractions. So that's your classes and functions. I agree with the other commenter that what is of most concern is the method's signature. Also, a naming might be obvious, but I assure you it is not. What is obvious to some is not obvious to others. In addition to this, the code changes over time. What once might have been obvious no longer is later down the line. Expect this to happen because you want to handle failure in your "system" (in this case, the style in which you write code). The more complexity in a method, the more important it is to document.
If you need an example I think both the main article AND the comments here are quite enlightening[0]. In fact, I'd say the comments perfectly prove the author's point. The author writes very clearly how when playing the game you should operate under purely the letter of the law but top comment claims crystal clarity yet mentions "intent." A point explicitly mentioned that one should ignore by the author.
Just think of documentation as information entropy. By adding a few words you increase the information gain for someone who has never before looked at the code. I've also given you reasons as to why you are likely to also benefit, so if you need a purely selfish reason to document, this too exists. But we must differentiate long term utility vs short term to see the reasoning.
I hear this so often but I think it is an excuse. Those 3 points are also true about your code.
> There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors
The difference is there are things the compiler can verify to be correct.
The compiler does not tell you that code is correct. It has no such capability and even LLMs are far away from doing that. The compiler can only tell you that the code is compilable. That means the syntax is correct, but it does not mean the logic is. The logic is much more abstract in terms of correctness.
There are a number of constructs in C that require documentation because they are not expressible in code. More expressivity in the language reduces the documentation required. An ownership/borrowing capability means one doesn't have to document who the "owner" is. And so on.
A compiler only tells you about semantic errors. It has no understanding though. This is true for any language. We can say/write things that are linguistically correct but have no actual meaning and tells us nothing about the "correctness" or efficiency of our usage.
Comments are for the logic, not grammar. The logic is abstract.
Unfortunately the visibility of these non-events means that their heroes go unnoticed. Noticing them would require a fundamental reorganization of how we perceive time and the future.
For example, I’m working on a pay-as-you-go SaaS - so the probability of using the SaaS while your account balance is low is 1-SD away from the happy path.
Figuring out if the user has JavaScript enabled (SaaS is an SPA) would mean the user first signed up with JavaScript enabled, then disabled it. Id put it at 3-SD away from the happy path.
Keep doing this and work on the bugs nearest to the happy path.
Of course, the 1-SD, 3-SD estimates are just hunches.
Does anyone know any great management books on this subject?
Not a management book per se, but Working Backwards popularised an Amazon approach of thinking about the organisation in terms of mechanisms. You might find that useful.
I’ve always wanted to dig into Scarlet Ink, Dave Anderson’s blog, but never have, and I suspect it’ll be quite useful for you too.
This happens in organizations that become over reliant on metrics and indicators of success/failure instead of recognizing that these are fuzzy concepts and indicators are just that... indications, not answers.
The most memorable example was at a hospital, nurses would occasionally pick up the wrong vial. They always noticed before injecting, but there were lots of close calls that didn’t get tracked anywhere. Once they started tracking that as a leading indicator, it became pretty obvious that the vials needed a better design to prevent even the possibility of grabbing the wrong one. Also, if the hospital never realized this problem and someone got hurt, they would’ve ended up with a much worse solution like “double check really close”
The same metric could be applied to "Days Since Last Stuff Up That Cost Us". It would be easy thing to apply to an office door or cubicle wall.
There is extensive writing on this subject http://rachelbythebay.com/w/2021/06/01/count/
You might spend some time making an often called function return in 1 millisecond instead of 2 or 3 and some might notice that things 'seem' snappier; but no one knows why.
[Time Spent on Improvement] is shown having a negative impact on [Time Spent Working].
But [Time Spent Working] should also have a negative impact going back to [Time Spent on Improvement].
This simple mutually negative feedback loop, i.e. a competitive relationship, better explains the bistable situation where either [Time Spent Working] reinforces itself, while holding [Time Spent on Improvement] down, or vice versa.
Feedback loops reinforce themselves, but there is only so much time, so there will be a strong tendency for one feedback loops to dominate the time. (And since the Time Spent Working -> Reduce Performance Gap loop operates much faster, cheaper in the short run, and is much easier to reason about and manage, it usually wins.)
It was a regular-joe IT support job at an eLearning company (if they still exist).
The FD walked past me one day, having just left what was clearly a deeply uncomfortable meeting.
He stopped in his tracks and asked, quite abruptly, why I didn't ever seem to look busy. I replied - with the arrogance of a cocky 20 year old - that it was because, right now, everything is working as it should. Nothing is broken and people are working and productive, which is because of the work of the IT department.
The company later become insolvent and was dissolved. So it turns out it might have been him who should have been busier, and he was just taking it out on me.
But in this case, if those problems were to happen, they wouldn't be stopped by their measures.
Those who decided they were up for it usually did a great job, about half opted out at the end of the conversation and were put in roles more suited to their ability to handle stress.
I've worked in both heavy industry (mining /metals production) as well as my own startup for the last 7 years
I definitely empathize with the view that diligently investing in people, and taking time to build sustainable processes that focus on the mid to long term is the ideal way to go... But when your runway is weeks, not months, and it's ship or die, seems hard to justify such a Rosy ideal
Let the debate begin!
But the consultants will not be out of work. Also a way to push customers to upgrade.
Artificial problem.
On a side note, I there is in my opinion a place for a new ERP disruptor. However making it is hard. Still even those small fish often manage to get money.
Repetitive manufacturing operations which capture many metrics about what a steady production process is doing may capture such info. Non steady state systems have a real problem.
However, if the number of tickets gets too low over some period of time, well, management gets ideas that you have free capacity. ;)
However the problem is quite real in large companies where promo driven development takes over and the incentives are shifted from building what is valuable to customers to building what is valuable to get a promo.
One could frame the entire US military budget as preventative spend.
A decent percentage of the population thinks the country should reduce military spending, because they are undervaluing the preventative spend.
https://player.oration.app/c3feabfb-d437-4545-ae17-235d50d61...
It was supposed to be banks with lots of COBOL code being impacted, right?
Banks issue 30-year mortgages.
So, why weren't banks being impacted in the early 1970s with mortgages due to be retired in the early 1900s?
Roll ahead a couple decades, and now you have even more code with lots of interconnected assumptions and the guy who originally wrote it retired to the beach at Margaritaville with zero interest in going back to Cleveland to talk about date math. If you’re lucky, a pile of cash could change that. If you weren’t, they passed in a boating accident last month.
My first tech job was working for a COBOL vendor in the mid 90s and heard a lot from customers and other people in the industry. Much of it was cosmetic (rolling from 1999 to 1900 on a display, etc.) but a lot of it would have had real consequences: not accepting credit cards with dates in the new millennium, calculating interest incorrectly, sending people incorrect notices or failing to send correct ones, etc. I remember a someone at Mastercard saying they wouldn’t have been able to processed credit card transactions at all after midnight if they hadn’t done several years of careful work.
The two things which helped were that it got enough attention to get the business people to pay for remediation, and there were enough dates in the future that people got wake-up calls in different industries. Mortgages were the earliest but closer in you had things like credit card expiration dates which caused enough problems that people got serious about deploying updates.
These days, I’m wondering how 2038 will go. We have a LOT more devices floating around and there are still plenty of new devices shipping with 32-bit embedded Linux which may never get updated. Hopefully most of that cheap IoT stuff won’t last another decade but I’m kind of something like an automotive company getting publicly outed for skimping on technical debt management and some people getting locked out of their smart houses.
If everyone is vaccinated and the disease disappears (and kills few people) anti-vaxxers think: “why do we vaccinate everyone? The disease didn't kill anyone... and it disappeared."
But when it comes to vaccination, due to the time needed for everything to take effect (many people need to be vaccinated, it takes time) anti-vaccines are unable to link the vaccine to a cure for the disease.
For humans, time changes everything, even the ability to make a connection between illness and cure.
We live in a world where everyone depends on the output Of everyone else - none of us could live without farmers and hauliers, doctors and street cleaners, all of whom Build on a foundation from the past
Assigning value, billionaires collecting rent, that’s the flawed model
It’s not capitalism that makes this world possible (the assumption of I Pencil).
It’s the sharing, the trading, the leaving money on the table because it’s too complex to work out how much Elon Musk’s 3rd Grade Math teacher should get for teaching him the basics of finance.
You don’t get credit - you get to live in the modern world
If there are those who do not get to share equally in that world - that’s a bug not a feature.
We need to fix the bug.
A big scale example of this was the Corona vaccination. After the large vaccination campaign in 2020, hospitalisation numbers stabilised to levels that were also seen sometimes in previous years during some flu epidemic. Which led to criticism from some people, who said that this was evidence that the whole Corona epidemic was a hoax, organised by a conspiracy of medicin manufactories and policitians who wanted to scare people to gain more power ..