The solution usually isn't "better people." It's engaging people on the same goals and making sure each of them knows how their part fits with the others. It's also recognizing when hard stuff is worth doing. Yeah you've got a module with 15 years of tech debt that you didn't create, and no-one on the team is confident in touching anymore. Unlike acne, it won't get better if you don't pick at it. Build out what that tech debt is costing the company and the risk it creates. Balance that against other goals, and find a plan that pays it down at the right time and the right speed.
I also think they tend to be the older ones among us who have seen what happens when it all goes wrong, and the stack comes tumbling down, and so want to make sure you don't end up in that position again. Covers all areas of IT from Cyber, DR, not just software.
When I have moved between places, I always try to ensure we have a clear set of guidelines in my initial 90-day plan, but it all comes back to the team.
It's been 50/50: some teams are desperate for any change, and others will do everything possible to destroy what you're trying to do. Or you have a leader above who has no idea and goes with the quickest/cheapest option.
The trick is to work this out VERY quickly!
However, when it does go really wrong, I assume most have followed the UK Post Office saga in the UK around the software bug(s) that sent people to prison, suicides, etc. https://en.wikipedia.org/wiki/British_Post_Office_scandal
I am pretty sure there would have been a small group (or at least one) of tech people in there who knew all of this and tried to get it fixed, but were blocked at every level. No idea - but suspect.
"But what about using a message queue.."
"Candidate did not use microservices.."
"Lacks knowledge of graph databases.." (you know, because I took a training last week ergo it must be the solution).
* Conway's law causing multiple different data science toolchains, different philosophies on model training, data handling, schema and protocol, data retention policies, etc.
* Coming up with tech solutions to try to mitigate the impact of multiple silos insisting on doing things their own way while also insisting that other silos do it their way because they need to access other silos' data.
And the reason standardization won't happen: the feudal lords of each of those branches of the hierarchy strongly believe their way is the only way that can meet their business/tech needs. As someone who gets to see all of those approaches - most of their approaches are both valid and flawed and often not in the way their leaders think. A few are "it's not going to work" levels of flawed as a result of an architect or leadership lacking operating experience.
So yeah, it might look like technical problems on the surface, but it's really people problems.
To play Devil's Advocate here, there's a big, big difference between JavaScript-ecosystem-style framework/library/fad-of-the-month where you are nagged on a daily basis that your libraries and tools are out of date, to building everything in Go on the back of the standard library, deploying to some LTS distribution.
The benefits of technical stability for product agility are real. Yes, it may mean your codebase is in a subset of C++ and is the domain of a 50+-year-old, genuinely-Senior Engineer who's been writing C++ for more than thirty years, who you will need to sit and negotiate with to make product changes. C'est la vie. Calling that tech debt, in and of itself from the outside, is not really fair, that's ageist.
There are precisely two people who can determine whether or not there is technical debt: (a) the lead IC responsible for the codebase, according to their innate understanding of the state of the codebase, (b) the manager who is responsible for the IC who both (1) observes that release agility is at risk and (2) is willing to invest in non-functional work to get future increases to release agility.
"The First Law of Consulting: In spite of what your client may tell you, there’s always a problem.
The Second Law of Consulting: No matter how it looks at first, it’s always a people problem." [0]
Everything he wrote is worth the time to read.
[0] Weinberg, Gerald. "The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully", 1986
They have no idea what's going on technically. But they know where the money is and the words that have to be spoken to certain people to get and defend that money. I have been handed a problem that was estimated to cost $6M and solved it with a text message, in the meeting. Shoulda taken the money. I have also had a project poached from me, watched the new team burn $35M and come out the other end with nothing but bruised egos.
The sponsors with the budget are definitely folks who prioritize politics over everything else. They have generally have bachelor's or master's degrees, rarely doctorates. You look at their career and wonder how they got there. Their goal is not mission success. Their goal is the next job. They've been dressing for the next job their whole career. The financial folks are afraid of them, or at least very wary.
The users are right there, go make friends. Learn what they're doing day to day. And how it fits into the larger picture.
These sessions are lightweight, and auto schedule every three weeks with no required action items and people come out of it amazed every time, lots of little bugs have been fixed, and connections are being made.
The culture of not engaging with the end users when they're so readily available is an odd one to me. And you can really get to say 80% of macro picture understanding and user experience design fundamentals with a fairly low lift.
To do this I created a sign up form and an auto scheduler that interacts with the Slack API. The scheduling and getting folk on board is the hardest part. Also finding time if you do things outside the product road map.
I have only a few people with whom I can discuss something in depth without anybody pushing an agenda. With most people it’s just about pushing through what you want to do.
I am just going through a bunch of sessions where a director has engaged consultants to change our stuff to use a new platform. Nobody who works on the system thinks it makes sense but it can’t be stopped because of the director and a few yes men. Nobody listens.
How to do that? Genuine question.
>Why does technical debt exist? Because requirements weren't properly clarified before work began.
I hate this line of thinking and the expectations that come along with this style of work. The idea that developers need to be spoon fed requirements and only then can they start working because they fundamentally lack an understanding of the desired business outcome and their work output is so valuable that it can’t evolve as their understanding of the problem evolves _is problematic_. To be clear I’m not blaming developers but the style of work that often goes by names like waterfall, agile, SAFE, agile 2.0, transformation, etc. is all hot garbage.
My point is, we have often discovered technical solutions for things that used to be regarded as people problems.
So maybe a lot of things are just problems, which may be solvable through either technical or people means.
1. Solving tech debt is not going to get you promotions and visibility as the article right said there is no visible difference
2. Its going to accrue continuously
3. There is no dedicated role that owns the tech debt so its not really anyones explicit responsibility as a part of job
You list the options, e.g. A combine codebases, B leave as is. Get comments and look at it logically and come to agreed decision.
You have the reason and tradeoffs documented.
The discussion may prompt other wider discussions etc. More senior people may spot patterns. E.g. lets not pay down tech debt X because Y is coming.
Culturally though if no one cares and most people are happy to manually work through the bugs and hate even discussing it then it may be a bad fit for a developer who cant stand working like that.
https://www.amazon.com/Peopleware-Productive-Projects-Tom-De...
Leaders who know that it's a people problem and who have read the Jerry Weinberg book know both sides of the problem.
It comes as no surprise that a worker unit who makes this conscious decision might have problems interfacing with a Homo sapiens unit.
Calling them 'people problem' is a convenient catch-all that lacks enough nuance to be a useful statement. What constitutes good communication? Are there cross purposes?
> Non-technical people do not intuitively understand the level of effort required or the need for tech debt cleanup; it must be communicated effectively by engineering - in both initial estimates & project updates. Unless leadership has an engineering background, the value of the technical debt work likely needs to be quantified and shown as business value.
The engineer will typically say that the communication needed is technical, but in fact the language that leadership works with is usually non-technical, so the translation into this field is essential. We do not need more engineers, we need engineer who know how to translate the details.
I realise that, here on HN, most will probably take the side of the rational technologist, but this is a self-validating cycle that can identify the issue, but cannot solve it.
IMO, we need more generalists that can speak both languages. I have worked hard to try and be that person, but it turns out that almost no-one wants to hire this cross-discipline communicator, so there's a good chance that I'm wrong about all of this.
Someone at some point said: ok we’re going to duplicate code, we’ll have a windows version and a Linux version, and yes it’ll be painful - for a while - but at this stage, it is the better option.
At some point getting shit done might be more important than getting it right.
Whether that is smart or not is a people problem.
Working on large legacy codebase is extremely annoying indeed, but sooner or later, in everyone’s career one has to make those sort of tradeoffs, and when that day comes maybe you’ll forgive those who came before you.
Edit: I want to add this:
Also those tradeoffs are often required because of business problems. It’s difficult to see, 10 years down the road, how shitty the business may have been when those decisions were made. And perhaps, it’s some of those business-driven decisions - like rushing the product out the door no matter what - that kept the company afloat and made it so that you have a job (albeit to fix the mess) today.
One of the companies I’ve worked for did food delivery, and in food delivery during Christmas week everybody works operations - either you’re out in a van with one of the regular drivers helping them carry orders that are three times larger than any other week, or you’re handling phone calls and emails to fix whatever problems arise. Either way without fail January every year would see a flurry of low effort/high value updates to the software those parts of the business used. Anything from changing the order of some interactions to fit the flow of dropping a delivery to putting our phone number in the header of every admin page.
Absolutely nothing beats going out there and doing the job to discover where the tools you’re responsible for fall over. Bonus points if you can do it at the most stressful time of year when if anything is going to fail it probably will.
The amount of improvements to our collective understandings was super valuable. Feature devs got to help fix problems with their tools more directly (while also learning that it's not always as straightforward as it may seem), and we brought back much stronger insights into the experience of actually using our tools day-to-day.
The user, ethically, is another piece of evidence - especially in real time and at huge scale.
So you are so right about the user. The user comes first, the technology second, and when the service of the latter benefits the former, greatly, at scale, the people problems become, well, people solutions - i.e., the user.
I got qualified on our equipment quick and was in a position where I was training my peers who I was ranked against. If I were an asshole, I would have trained them poorly and drug it out. I didn't, but someone who is goal oriented to climb through the ranks as fast a possible, it is a logical action that I could have taken.
If it is only technical debt that is hard to understand or maintain, but otherwise works, you're going to have a tougher time of building a case unless you build a second, better version and show the differences. But you could collect other opinions and present that.
Ultimately you have to convince them to spend the time (aka money) on it and do it without making things worse and that is easiest to do with metrics instead of opinions
The old system assigned work cases out in a plain round robin system - Person 1 got Case 1, Person 2 got Case 2, etc, regardless of what people already had on their plate.
The new system looked at a number of factors and assigned a new case to people who had the least amount of overall work in their queue. So if Person 1 had 2 cases and Person 2 had 10, then Person 1 was getting the next case.
Management in one division came to us after a while and said the method of assigning cases was broken, and cases were not being assigned out "fairly." They wanted us to implement the old system's round-robin assignment method in the new system.
After some investigation I determined that workers had figured out ways to game the system in order to seem more busy than they actually were and therefore receive less new cases. As a result efficient workers who were actually doing their jobs were getting punished with new cases while inefficient workers were getting rewarded.
I, another analyst from that division, and my management laid out a very clear case that if employees were not properly handling their cases, and not being monitored on their progress (by all the new monitoring tools the new system provided) then changing the method of distributing cases wouldn't fix the underlying problem.
We were overruled and forced to implement the technical solution to the human problem.
That describes so many projects that I've seen, over the years.
One of my first programming projects, was maintaining a 100KLoC+ FORTRAN IV email program, circa 1975.
No comments, no subroutines, short, inscrutable, variables, stepped on by dozens of junior programmers, and the big breadwinner for the company.
Joy.
It was probably the single biggest motivation for my uptight coding style, since. I never want to do to others, what was done to me[0].
[0] https://littlegreenviper.com/miscellany/leaving-a-legacy/
This article has a stink of self importance that rubs me the wrong way.
But even in the case of magically fixing people problems - for example, if you are working on a solo project - you will still have technical debt because you will still have lack of knowledge. An abstraction that leaks. A test that doesn't cover all the edge cases. A "simple" function that was not indeed that simple.
The mistake you want to avoid at all costs is believing you don't have a knowledge gap. You will always have a knowledge gap. So plan accordingly, make sure you're ready when you will finally discover that gap.
Outdated may sometimes be a euphemism for one of the above but usually when I see it in a discussion it just means "old" or "out of fashion" instead.
Then the author suggests that senior leadership without a tech background will usually need to be persuaded by a value proposition - the numbers.
I'm seeing these as the same thing - the risks of specific tech debt just needs to be understood before it gets addressed. Senior leaders with a development background might be better predictors of the relationship between tech debt and its impact on company finances. Non technical leaders just require an extra translation step to understand the relationship.
Then considering that some level of risk is tolerated, and some risk is consciously taken on to achieve things, both might ultimately choose to ignore some tech debt while addressing other bits.
The irony is that this is a classic engineer's take on the root cause of technical debt. Engineers are happy to be heads-down building. But when you get to a team size >1, you actually need to communicate - and ideally not just through a kanban board.
I used to be a "stay out of politics" developer. After a few years in the industry and move to a PM role, I have had the benefit of being a bit more detached. What I noticed was that intra-developer politics are sometimes way more entrenched and stubborn than other areas of the business.
Sure, business divisions have infighting and politics but at the end of the day those are tempered by the market. It's far harder to market test Ruby Versus Java in a reasonable manner, especially when you have proponents in both camps singing the praises of their favored technology in a quasi-religious manner. And yes, I have also seen the "Why would I learn anything new, <Technology X> works for me, why would I take the effort to learn a new thing" attitudes in a large number of coworkers, even the younger Gen-Z ones.
> The code was calcified because the developers were also. Personality types who dislike change tend not to design their code with future change in mind.
Reasons vary widely. Code can also get calcified because people lack the vision, tech skills, or time/budget to update it. On the opposite side of the spectrum, personality types who do like change sometimes rip out everything out and start from scratch, effectively destroying well written code, which is no better.
> Why does technical debt exist? Because requirements weren't properly clarified before work began.
Not necessarily: it can also exist because code wasn't well written to begin with, libraries weren't updated to work with OS updates, feature-creep, etc.
> In my opinion, anyone above senior engineer level needs to know how to collaborate cross-functionally, regardless of whether they choose a technical or management track.
Collaboration is a skill everyone needs, and the ability to explain things to people at other levels shouldn't be limited to senior engineers. Even junior devs would do well to be able to explain things to higher-ups.
There are lots of good reasons tech debt exists, and it's worrying that this person seems to think that they all boil down to "I don't know how but someone, somewhere, fucked up"
hence the explosion in communication channels & those channels breaking down.
you don't have communication problems if say max 3 engineers are working on a product line.
I've been on both sides. Having to beg a manager to get permission to fix a thing that I thought needed fixing. And now I'm on both sides where as a CTO it's my responsibility to make sure the company delivers working products to customers that are competitive enough that we actually stand a chance to make money. And I build our product too.
Two realities:
1) Broken stuff can actually slow down a lot of critical feature development. My attitude as a CTO is that making hard things easier is when things can move forward the fastest. Unblocking progress by addressing the hardest things is valuable. Not all technical debt is created equally. There's a difference between messing with whatever subjective esthetics I might have and shit getting delayed because technical problems are complicating our lives.
2) We're a small company. And the idiot that caused the technical debt is usually me. That's not because I'm bad at what I do but I simply don't get it right 100% of the time. Any product that survives long enough will have issues. And my company is nearly six years old now. The challenge is not that there are issues but prioritizing and dealing with them in a sane way.
How I deal with this is very simple. I want to work on new stuff that adds value whenever I can. I'm happy when I can do that and it has a high impact. Whenever some technical debt issue is derailing my plans, I get frustrated and annoyed. And then I sit down and analyze what the worst/hardest thing is that is causing that. And then I fix that. It's ultimately my call. But I can't be doing this all the time.
One important CTO level job is to keep the company ready for strategic goals and make sure we are ready for likely future changes. So I look at blocking issues from the point of view of the type of change that they block that I know I will need to do soon. This is hard, nobody will tell me what this is. It's my job to find out and know. But getting this right is the difference between failing or succeeding as a technology company.
Another perspective here is that barring any technical moat, a well funded VC-funded team could probably re-create whatever you do in no time at all. If your tech is blocking you from moving ahead, it can be sobering to consider how long it would take a team unburdened by technical debt to catch up with you and do it better. Because, if the answer is "it wouldn't be that hard" you should probably start thinking about abandoning whatever you are trying to fix and maybe rebuilding it better. Because eventually somebody else might do that and beat you. Sometimes deleting code is better than fixing it.
Management claims to want to understand and fix the problem, and their "fixes" reveal the real problems. Fix 1 - schedule a lot of group meetings for twice a week. After week 1, management drops off and fails to show up anymore for most of them. The meetings go off track. The answer? More meetings!
We now have that meeting daily. And have even less attendance.
Fix 2 - we don't know what people are doing, let's create dashboards. A slapdash, highly incorrect and problematic dashboard is created. It doesn't matter, because none of the managers ever checks the dashboard. The big boss hears we are still behind, and commandeers a random product person to be his admin assistant and has her maintain several spreadsheets in semi-secret tracking everyone's progress.
This semi-secret spreadsheet becomes non-secret and people find a million and one problems with it (not surprising as the commandeered admin assistant nee product person was pulling the data from all sorts of random areas with little direction with little coordination with others). We then have the spreadsheet war of various managers having their own spreadsheets.
Fix 3 - we are going to have The Source of Truth for product intake and ongoing development, with a number of characteristics (and these are generally not terrible characteristics). These are handed off to a couple of junior people with no experience to implemented with zero feedback. The net result is we still don't have a Source of Truth, but more of an xkcd situation that now we have 4 or 5 sources of truth strung together with scripts, duct tape, bandaids and prayer.
This continues on and on over years. Ideas are put forth, some good, some bad, some indifferent, but none of them matter because the leaders lack the ability to followup or demonstrate even basic understanding of what our group actually does.
It is truly soul crushing, but in this jobs environment, what are you going to do?
The real cost isn't the time lost - it's decision avoidance. Teams stop touching certain modules. New features get built around the problem instead of through it. You end up with architectural scar tissue that shapes every future decision.
I've seen this play out where a 2-week refactor that everyone knows needs to happen gets deferred for years because nobody can attach a dollar figure to "we're scared to change this code." Meanwhile every sprint planning becomes a creative exercise in routing around the scary parts.
The tell is when your estimates have a silent "...assuming we don't have to touch X" attached to them.
As someone who has worked in IT support I have seen users habitually click away clearly formulated error dialogs that told them exactly what the cause of their problem was and how to address it. Only problem? They did not read it, as became clear when I asked them what it said.
I have had people who I repeatedly had to explain the the same thing, made sure they got it by having them do it twice and a week later they would come again with the same question like sheep, not even aware they asked that one before.
Some problems are communication problems. Others are actual people problems that could indeed be solved by getting better people. Anybody who says otherwise is invited to do first level support for a year.
Remember that most communication is non-verbal?
For individual workers, the best thing is to work @ something you love && get good pay. Like a compiler engineer, a kernel engineer, an AI engineer, etc.
Many employers actively discourage people from doing work that they are proud of. You cannot be proud of something that is built as cheaply as possible.
You can get employees to care about customers or the product, you cannot get employees to care about profits and dividends.
Anecdotal, but I used to be proud of the work I produced, and then it got old and repetitive. However, as it was getting old, I was earning more. Now I'm in a place where if I were to quit and find something I could be proud of, I would have to accept a huge reduction in compensation. No thanks.
I'd rather have a much higher "just a paycheck" and find things to be proud of outside of work. Plus no one else cares anymore so why should I? Just pay me a lot and I'll keep showing up.
This leader is not going with the quickest or cheapest option. Doing so would probably be laudable. They are going with the claims made by someone that a certain way is going to be quicker or cheaper. It doesn't matter if it actually is, or ends up being, quicker or cheaper. One plan is classified as meeting the requirements while another plan is classified as being cheaper, the cheaper one will be chosen even though it doesn't meet the requirements.
I work in implementation of large enterprise wide systems. When I do projects that span departments/divisions/agencies what you’re describing is the biggest hurdle. The project always starts with “we’re bringing everyone together into one solution” but as time goes on it starts to diverge. It’s so easy to end up with a project per department vs one project for all. You have to have someone with the authority to force/threaten/manipulate all the players onto the same page. It’s so easy to give in to one groups specific requirements and then you’ve opened Pandora’s box as word spreads. It’s very hard to pull off.
I think public sector (governments) is the hardest because the agencies seem to sincerely hate each other. I’ve been in requirements gathering meetings where people refused to join because someone they didn’t like was on the invite. At least in a for profit company the common denominator for everyone is keeping their job.
The rise of AI actually is also raising (from my observations) the engineer's role to be more of a product owner. I would highly suggest engineers learn basic UI/UX design principles and understand gherkin behavior scenarios as a way to outline or ideate features. It's not too hard to pick up if you've been a developer for awhile, but this is where we are headed.
Build out what that tech debt is costing the company and the risk it creates. Balance that against other goals, and find a plan that pays it down at the right time and the right speed.
Ironically many of the first to be laid-off in a company are those that do this. That's why many companies flail during economic downturns and the problem exacerbates until better economic conditions prevail.That sounds challenging, and very early for email. Would I find it in the timeline or was it internal only?
https://archive.computerhistory.org/resources/access/text/20...
Or a lack of action. Tech breaks and you need to take the action of preparing for that.
I think this is a large factor in the turn towards more authoritarian tendencies in the Silicon Valley elites. They spent the 2000s and 2010s as a bit more utopian and laissez faire and saw it got them almost nowhere because of technology doesn't solve people problems.
If you're trying to pick a development language by committee, something is already very wrong. That something would be a people problem I suppose (because everything is), but it's really a strategic problem of the business.
Yea, software is typically way more flexible and fast moving in the real world.
At start of project: "We need software with A, B, and C"
In middle of project: "Our competitor has released with ABCD and E, and if we don't add at least E we might as well cancel the project"
There is also - Our software works 100% fine with what we expected in the field, problem is (new|old) thing showed up and now we have to work around all the bugs in it.
Then there is Chesterton's fence. That 'broken old crap' was actually doing something highly specific that calcified into how the customers systems work. People love ripping crap up and changing stuff, until they figure out it just broke their enterprise clients workflow, and that client pays their salary.
The more interesting discussion to me is: how do you solve this problem once it exists in a team? I guess there are many approaches, but I tend to think that 'lead by the example' is the best you can do as an engineer, but a top-down approach might work better which is what happened at Microsoft when Satya Nadella became CEO.
> The code was calcified because the developers were also. Personality types who dislike change tend not to design their code with future change in mind.
This line of thinking (we will make it with future change in mind!) is of course exactly the bullshit that is tech debt in the first place.
Peak absurdity, yet you and I have both seen it happen first hand. I wonder how common it is, because it's as ugly as it is mystifying.
When management isn't properly engaged, they need to delegate to someone who is. If neither things happen, it's just chaos and angry, ignorant apes making a lot of noise.
> in this jobs environment, what are you going to do?
I am currently unemployed with a rapidly shrinking cushion, and I'm honestly on the fence as to whether putting up with the above would be better. If there is no hope for improvement, all you're doing is exchanging your mental health for a few more beans.
Thanks for reading!
Companies that sell to other companies .... don't care about the users. It's one bunch of managers sleezing up to another to make a sale. Whether the product is good to use doesn't matter to them because none of them use it.
A "good" company wouldn't allow this to happen but it happens often enough.
Another bad smell is when developers themselves never use the whole product and simply work on their little bit.
And it's such a blind spot in the industry that the people most able to build and estimate features and software are left to be the least equipped to see through the end user's eyes.
As such, when you encourage user oriented engineers, these common and often low effort issues can be avoided at the outset which improves velocity organizationally and results in better software and user experiences for projects now and in the future.
That's of course the obvious way this goes wrong. Bad intentions. The much more insidious version is that you could have just been a terrible teachers, maybe you suck at training your peers, and you don't know.
The end result is the same. You look like the only person who gets it amongst the riff-raff, but in this case you don't even have a choice. The system has produced a poor outcome not because anybody abused it, but because it was a bad system.
Because they want to feel superior as the ‘this was my idea and you executed on my idea’ nonsense. Their answers to most ‘why are we doing this ?’ ‘trust me bro’. I am perhaps generalizing and there are outlier product managers who have earned the ‘trust me bro’ adage, but most haven’t.
This PM behaviour will never change. Engineers have said enough is enough and are now taking over product roles, in essence eliminating the communication gap.
Simple:
1. People lost ownership of the things they work on. In the early 1900s, more than half of the workforce was self-employed. Today, it is 10% in the US, 13% in the EU.
What you produce is not “yours”, it’s “your employer’s”. You don’t have ownership, and very limited to no agency.
2. People lost any tangible connection to the quality and quantity of their output.
Most workers don’t get rewarded for working harder and producing more or better output. On the contrary, they are often penalized with more and/or harder work.
To quote Office Space: “That makes a man work just hard enough not to get fired.”
3. People lost their humanity. They are no longer persons. They are resources. Human resources. And they are treated like it.
They are exploited for gain and dumped when no longer needed.
If anything happens, the company will lay off people without a care for what happens to them.
Even when they do care, such as in a smaller company, their own paycheck is being weighed against the employees, and they will almost always pick themselves, even if they caused the problems.
CEOs making millions while they lay off massive amounts of people is the norm now, and everyone knows it.
You can't blame the employee for not caring. They didn't start it.
Because there's still people doing less work than you do for a bigger paycheck
Because you'd get fired or laid off for someone working for 1/2 to 1/4th of your pay
Because they make you jump through multiple rounds of interviews and technical tests while people above you have a far less barrier to being hired
Because someone stole credit for your work
Because you'd get re-hired and find a mountain of shit code from a company that off shored their dev team
Because companies stopped giving significant raises that didn't keep up with major inflation in the past few years, while your work might have gotten them many multiples more of profits
Idk it's just a mystery we'll never know
My local grocery stores won’t accept pride as payment for food, and working harder doesn’t make my paycheck increase.
I remembered our conversation well, because it left me a little confused. We were talking about handling large volumes of messages. And when I said "well it really depends on the volume, you could be fine with batch processing in many cases" he jumped on it like I had never heard of a queue.
Then I offered as part of my design (and from my XP in more than 10yrs of working in products with petabyte datastores) that dealing with so many services connecting to the Data store directly could run into scale issues. He flat out rejected the claim (because that didn't fit the current system design).
Guess what we're discussing now and have spun up a whole team to complete? Forcing every micro service to use a single API rather than elasticsearch directly, because of scale.
To solve this, one can be an instrument for change. Network, band people together, evangelize better ways forward, all while not angering management by operating transparently.
Sometimes, that can work... up to a point. To broadcast real change, quickly, you really need anyone managing all the stakeholders to lead the charge and/or delegate a person or people to get it done. So the behavior of directors and VPs counts a lot for both the problem and the solution. It's not impossible to manage up into that state with a lot of talking and lobbying, but it's also not easy.
I'll add that technological transformation of the workplace is so hard to do, Amazon published a guide on how to do this for AWS. As a blueprint for doing this insanely hard task, I think it holds up as a way to implement just about any level of tech change. It also hammers home the idea that you need backing and buy-in from key players in the workforce before everyone else will follow. https://docs.aws.amazon.com/prescriptive-guidance/latest/clo...
- Requirements are rarely clear from the beginning;
- We (DE) are not enabling self-service and automation so we are drowned in small requests (add this column for example;
- Upstream rarely notify us about the changes so we only know when downstream alerts us. We end up building expensive pipelines to scan and send alerts. Sometimes the cost of alerts > cost of pipeline itself;
- We have so many ad-hoc requests that sprint is meaningless. If I were the manager I'd abolish sprint completely;
- Shadow knowledge that no one bothered to write down. I tried to write down as much as possible, but there are always more unknowns than knowns;
Working in DE definitely gives me enough motivation to teach myself about lower level CS.
You don't need to be anywhere close to exact, it's just helpful to know whether it costs more like 5 hours a year or 5 weeks a year. Then you can prioritize tech debt along with other projects.
To the great surprise of my younger self I have never seen “it all come crashing down” and I honestly believe this is extremely rare in practice (i.e. the U.K post saga), something that senior devs like to imagine will happen but probably won’t, and is used to scare management and junior devs into doing “something” which may or may not make things better.
Almost universally I’ve seen the software slowly improved via a stream of urgent bug fixes with a sprinkle of targeted rewrites. The ease of these bug fixes and targeted rewrites essentially depends on whether there is a solid software design underneath: Poor designs tend to be unfixable and have complex layers of patches to make the system work well enough most of the time; good designs tend to require less maintenance overall. Both produce working software, just with different “pain” levels.
At a high level nobody works smarter and harder than people working for themselves because they see the direct results in near linear proportion. So basically half the workforce was in that situation vs a tenth. Say nothing about taxation and other things that cost more the higher up you go and serve to fractionally break or dilute the "work harder, make more, live better" feedback loop.
I would hope people would be more responsive to the actions of companies. Earlier in my career I looked for another company when the discrepancy between CEO bonus and employee bonus was larger than what I found reasonable.
And that exactly used to be different and still is in small companies.
I will be held to the standards of billionaires and politicians. Not one micron more.
There's a small but substantial number of engineers out there who haven't operated at the kinds of scales where hyperscalers' limits become normal architectural problems and don't have the humility to imagine that it could be the case. (e.g. blob stores do in fact have limits you can hit, and when you operate at petabyte scales you have to anticipate in the architecture that you can hit them for even trivial operations.) I also work on petabyte datastores and have encountered a bunch of those engineers over time.
To be fair though, that's the small minority of engineers I've encountered, and if it wasn't arguing about the types of scale problems unique to petabyte scales, it'd be about some other nuanced subject matter. It's a humility problem.
I once had an interviewer expected me to answer "message queue", despite all of his answers to my questions pointing to an MQ not solving the issue.
He was getting really frustrated with the "it depends" and the questions, until I answered "Message Queue" and he sighed in relief.
I passed the interview but rejected the job offer.
Honestly failing candidates in an interview put of a sense of superiority is just about saddest thing I've heard. I mean how lonely do you have to be ?
/endrant.
Yup, this is the key issue and what makes it primarily a people problem. Technical solutions don't work if the main problem is getting buy-in to spec/build/adopt one, unless you're willing to build a lot of things you end up throwing out. So instead the bulk of the high risk work is actually negotiation between people.
even without perverse incentive, it seems to be human nature that work expands to fill available time (this is another kind of perverse incentive)
maybe best to frame problems of human nature as technical problems. ex, the preferred path should be the easiest path
sadly, people do not behave like the utopian ideal
Sometimes people make such a big mess you have to burn it down and start over.
Proprietary store-and-forward system, run by a BT subsidiary, named Dialcom. Ran on Prime minicomputers.
I worked there in 1987.
[UPDATED TO ADD] And to add insult to injury, it was all on sub-VGA 300-Baud VT-100 terminals and line printers.
I spent a lot of time, staring at blue-striped paper.
However for pretty much any dev I would hire for a job they can get to grips with a technology that's older pretty quickly. Where it does get dicey is when good dev just refuses to work with it. For those devs, I think, when they hold that opinion it typically means one of those other reasons is behind their refusal.
People talk about how worthless management is, because most management is not good and most "managers" are worthless. Promotion to your level of incompetence is a real thing in tech management circles.
In primary function, a good manager is invisible, so it is understandable that it is seen as being worthless.
But in secondary function only a bad manager keeps themselves invisible. A good manager will stand up at stand up and tell about what they've been working on. If you are not communicating exactly what you are doing to everyone else, you've screwed up horribly.
> way harder than anything I’ve ever faced in software development.
To be fair, you can say that about every job in existence that isn't software development. There is nothing hard about software development.
If you have a system that is big enough and has had enough change over time that it's structure is no longer well suited to the current or near future job-to-be-done, then it doesn't really matter how you got there, you need to explain to non-technical stakeholders that current business requests will take longer than it would intuitively take to build if you just look at the delta of the UX that exists today compared to what they want (ie. the "why can't you just..." conversation). This is a situation where the phrase "technical debt" is a useful metaphor that has crossed the chasm to non-technical business leaders, and can be useful (when used judiciously of course).
It actually undermines the usefulness of the metaphor if you try to pedantically uphold the distinction that tech debt is always intentional, because non-technical stakeholders will wonder why engineering would intentionally put us in this situation. I understand we all get to have our techie pet peeves (hacker != black hat), but this is really not a semantic battle I would fight if I'm dealing with anyone non-technical.
A great company basically opens on its first day and 48 hours later there are a ton of well fed customers who come back, not incidentally, again and again for what they perceive, is great.
But apropos feeding customers, if you can't 'eat your own food' dog or otherwise, why expect the user to want to do it ..
Use it. I agree.
> Their answers to most ‘why are we doing this ?’ ‘trust me bro’.
I've profoundly annoyed so many PMs asking this question, I don't get it. I believe it's because they don't want to admit it's because it's an exec's-idea-of-the-week rather than market/biz/customer research and analysis.
> Engineers have said enough is enough and are now taking over product roles
Fingers crossed. It's about time we up our communication- and managing-upwards skills. I feel many PMs are sustaining their roles just because they're sycophantic yes-men to the execs, because execs got tired of engineers saying "no".
Having read a few criticms of PMs on HN, I can imagine the "your companies just didn't hire the good PMs" comments incoming
A furniture maker builds a chair, ships it out, and they don’t see it again. Pride in their craft is all about joy of mastery and building a good external reputation.
In most software jobs, the thing you build today sticks around and you’ll be dealing with it next month. Pride in your craft can be self serving because building something well makes life easier for future-you
Now of course you I can’t blame people for wanting more money and better standards of living, and that’s always been a thing. But many jobs that used to afford you a middle class life don’t anymore for young people.
I saw my engineering school software engineer department going from the least sought after specialty to the most in one year. The number of people passionate about tech didn’t suddenly jump, but each year we have a report about the last promotion average starting salary and software engineering was at the top for the first time.
It can be annoying to say, but modern factory produced things are in an absurdly higher quality spectrum than most of what proceeded them. This is absolutely no different from when machined parts for things first got started. We still have some odd reverence for "hand crafted" things when we know that computer aided design and manufactured are flat out better. In every way.
As for ownership, I hate to break it to you, but it is very likely that a good many of the master works we ascribe to people were heavily executed by assistants. Not that this is too bad, but would be akin to thinking that Miyazaki did all of the art for the movies. We likely have no idea who did a lot of the work we ascribe to single artists throughout history.
On to the rest of the points, even the ones I somewhat resonate with are just flat out misguided. People were ALWAYS resources. Well before the modern world.
Lololol
Edit: I'm already down one - for people that don't read wikipedia here are the 4 dimensions of alienation of a worker as listed in the wiki:
1. From a worker's product
2. From a worker's productive activity
3. From a worker's Gattungswesen (species-being)
4. From other workers
Edit2: People [in America] will moan about their jobs, their bosses, their dwindling purchasing power, their loss of autonomy, etc etc etc but then come back as champions of capital. You see it all the time - "my job sucks but entrepreneurialism is what makes America great!!!!!!!". I've never seen a more rake->face take than this (and on such an enormous scale). It's absurd. It's delusional.
My dad worked as an engineer in the same firm for 30 years and retired. The company was founded before his father was born, and was publicly listed before he was born.
Substantially every company I have worked for didn't even exist 30 years before I joined, let alone before I or my father were born. Most won't be around in 30 years.
Several employers nearly went out of business, had substantial layoffs, or went thru mergers that materially impacted my department/team/job. The guys at the very top were always fine, because how could the guy in charge be responsible?
Even within the companies I stayed 5 years, I had multiple roles/bosses/teams.
Your housing costs keep going up.
Your food costs keep going up.
Your transport costs keep going up.
Your healthcare costs keep going up.
Your education costs keep going up.
Your family costs keep going up.
And why? Not for any good reason, no. Just because they can. Your landlord isn't content when you pay $2,500 per month for an apartment, no. They need $2,600. $5 isn't enough for a dozen eggs, it needs to be $6. And what if we slapped 10-200% tariffs on random things, depending on the day? Wouldn't that be neat?
The collective delusion it requires to not see what the problem is is astounding. It's actually quite depressing, because it makes me think we're never going to meaningfully solve this problem. Maybe companies have to start executing employees or something, I don't know. Maybe then people will be bold and decide to re-organize society.
But - sometimes drastic measures and hurt feeling are needed to break out of a bad attractor. Just be sure you’re OK with leaving the company/org if your play does not succeed.
And know that as the OP describes, it’s a lot about politics. If you convince management that there is a problem, you have severely undermined your technical leadership. Game out how that could unfold! In a small company maybe you can be the new TL, but probably don’t try to unseat the founder/CTO. In a big company you are unlikely to overturn many layers above you of technical leadership.
Yeah I did that in my last job as a platform engineer, I particularly intented for other teams to be able to work in parallel and also not blocked on me so I have more time to refactor or generally things to make life easier for future-me.
Long story short, I got laid off.
There are real customers that want cost reductions that lead to reduced lifetimes, because they have no intention of using the thing they are buying for decades. It isn't just manufacturers looking to make money through planned obsolescence.
I once worked at a company which had an enormous amount of technical debt - millions of lines of code, no unit tests, based on frameworks that were well over a decade out of date. On one specific project, we had a market need to get some Windows-only modules running on Linux, and rather than cross-compiling, another team had simply copied & pasted a few hundred thousand lines of code, swapping Windows-specific components for Linux-specific.
For the non-technical reader, this is an enormous problem because now two versions of the code exist. So, all features & bug fixes must be solved in two separate codebases that will grow apart over time. When I heard about this, a young & naive version of me set out to fix the situation....
Tech debt projects are always a hard sell to management, because even if everything goes flawlessly, the code just does roughly what it did before. This project was no exception, and the optics weren't great. I did as many engineers do and "ignored the politics", put my head down, and got it done. But, the project went long, and I lost management's trust in the process.
I realized I was essentially trying to solve a people problem with a technical solution. Most of the developers at this company were happy doing the same thing today that they did yesterday...and five years ago. As Andrew Harmel-Law points out, code tends to follow the personalities of the people that wrote it. Personality types who intensely dislike change tend not to design their code with future change in mind.
Most technical problems are really people problems. Think about it. Why does technical debt exist? Because requirements weren't properly clarified before work began. Because a salesperson promised an unrealistic deadline to a customer. Because a developer chose an outdated technology because it was comfortable. Because management was too reactive and cancelled a project mid-flight. Because someone's ego wouldn't let them see a better way of doing things.
The core issue with the project was that admitting the need for refactoring was also to admit that the way the company was building software was broken and that individual skillsets were sorely out of date. My small team was trying to fix one module of many, while other developers were writing code as they had been for decades. I had one developer openly tell me, "I don't want to learn anything new." I realized that you'll never clean up tech debt faster than others create it. It is like triage in an emergency room, you must stop the bleeding first, then you can fix whatever is broken.
The project also disabused me of the engineer's ideal of a world in which engineering problems can be solved in a vacuum - staying out of "politics" and letting the work speak for itself - a world where deadlines don't exist...and let's be honest, neither do customers. This ideal world rarely exists. The vast majority of projects have non-technical stakeholders, and telling them "just trust me; we're working on it" doesn't cut it. I realized that the perception that your team is getting a lot done is just as important as getting a lot done.
Non-technical people do not intuitively understand the level of effort required or the need for tech debt cleanup; it must be communicated effectively by engineering - in both initial estimates & project updates. Unless leadership has an engineering background, the value of the technical debt work likely needs to be quantified and shown as business value.
Perhaps these are the lessons that prep one for more senior positions. In my opinion, anyone above senior engineer level needs to know how to collaborate cross-functionally, regardless of whether they choose a technical or management track. Schools teach Computer Science, not navigating personalities, egos, and personal blindspots.
I have worked with some incredible engineers, better than myself - the type that have deep technical knowledge on just about any technology you bring up. When I was younger, I wanted to be that engineer - the "engineer's engineer". But I realize now, that is not my personality. I'm too ADD to be completely heads down. :)
For all of their (considerable) strengths, more often than not, those engineers shy away from the interpersonal. They can be incredibly productive ICs, but may fail with bigger initiatives because they are only one person - a single processor core can only go so fast. Perhaps equally valuable is the "heads up coder" - the person who is deeply technical, but also able to pick their head up & see project risks coming (technical & otherwise) and steer the team around them.
Everything you said in your post is true, especially about 90% of PMs being presenteeist yes men. Indeed most PMs are at best a waste of time, and at worst a net negative to the company and anything they touch.
However, a good PM is worth their weight in gold. I maintain the cynical view that 80% of the work done at any large company is useless. That's why a good PM is so invaluable
A good PM is the difference between your project aimlessly spinning its wheels and changing directions for 8 quarters (like most projects), or relentless execution with full focus and rewards from higher-ups.
Clarifying what executives want, nudging their worst impulses towards something more productive, maintaining focus and clear communication amongst multiple teams with competing priorities, working with engineers to design features and schedule them realistically on the road map, exploring the company beyond your current team to find impactful projects to work on or to join forces with... All these things are exhausting, painstaking, and take a level of attention to technical details and human affairs which most of us don't have the patience or energy to deal with. It's more than a full time job.
But if a PM does it successfully, you actually ship important stuff, and that stuff is so important that it moves the whole company forward, and improves the bottom line so much that no one can ignore it. And that's why the PM role continues to exist, despite most of its practitioners being useless suckups. The impact just one PM can deliver by shipping a successful and important project at a large company outweighs all the useless baggage that is the rest of their colleagues. And that's why you continue to invest in your PM org, and hope you get a few nuggets of gold amongst all those turds.
Tech workplaces are incredibly ephemeral too. Reorgs, departures, constant hiring - so if you leave today, in 5-10 years, there might be no single person left who still remembers or thinks highly of the heroic all-nighters you pulled off. In fact, your old team probably won't exist in its current shape.
If you build quality furniture for your customers, chances are, it will outlive you. If you work on some frontend piece at Amazon, it won't. I think the amount of pride in your workmanship needs to scale with that.
But, it doesn't. It's not as if you get to sit around doing nothing if you did a great job, you just get some new software project. The company gets to enjoy the benefit of a job well done.
In guitar manufacturing, CNC machines were a revolution. The quality of mid-range guitars improved massively, until there was little difference between them and the premium ones.
In furniture, modern manufacturing techniques drastically worsened the quality of everything. MDF and veneers are inherently worse than hand-crafted wood. The revolution here was making it cheaper.
CNC and other machining techniques raise the high bar for what's possible, and they have the potential to lower costs. That's it. They don't inherently improve quality, that's a factor of market forces.
It says early 1900s, so no. It does largely refer to farming, but farming was insanely lucrative during that time. Look at the farms that have the houses of that era standing on them and you'll soon notice that they are all mansions.
Remember, subsistence farming first had to end before people could start working off the farm. Someone has to feed them too. For 50% of the workforce to be working a job off the farm, the other 50% being subsistence farmers would be impossible.
Advising on where to go from there in an actionable way that produces good results is the hard part. Marx didn't do it. Those attempting implementation of his ideas have an exceptional record and not in a good way. And worse still, some of the worst aspects of those movements are the ones that stuck around to be peddled again and again under different brands.
Worker alienation is perfectly visible on the real world. I don't think anybody disagrees it's common.
But software development is different. There has been many decades where software developers suffered very little alienation. It only changed with the universal adoption of "corporate agile".
As a millennial kid at the time, I remember the 90's movies and sitcoms (Office Space, Friends, the Matrix, Fight Club, etc) where the biggest problem GenX had at the time was, *checks notes*, the lack of purpose from being bored out of their minds by a safe and mundane 9-5 cubicle job that paid the bills to support a family and indulge in mindless consumerism to fill the void.
Oh boy, if only we knew that was as good as it would ever be from then on.
I remember the mass layoffs Yahoo had at the dot com bubble crash, when they had a 5-15 minute 1:1 with every worker they laid off. Now you just wake up one day to find your account locked and you put it together that you got laid off, then you read in the news about mass layoffs happening while they're now hiring the same positions in India and their stock is going up.
No wonder young people now would rather just see the whole system burn to the ground and roast marshmallows on the resulting bonfire, when you're being stack-ranked, min-maxed and farmed like cattle on the altar of shareholder returns.
Also you know what, some code is disposable. Sure, we all want to craft amazing sculptures of metaphorical beautiful wooden chairs that will last a lifetime, but sometimes what the customer needs is a stack of plastic chairs, cheap, and done next week. Who cares if they break after like 1 year.
So, sometimes when I accept that my boss wants something rushed through, I don’t complain about the tech debt it’ll cause, I don’t fight back about how it should’ve designed to have wonderful code… not because I have no pride in my work, but because I understand the businesses needs.
And sometimes the business just wants you to make plastic chairs.
Particularly, furniture benefits greatly from hard wood. At least, the furniture that is old that you are likely to see. It also benefits heavily from being preserved, not used.
TLDR: survivorship
The typically large farms with nice houses were making reasonable money, and in a lot of places, only the house remains of the farm. My old neighborhood was a large farm, subdived into about 1000 postage stamp lots around 1900; the owner's house got a slightly larger lot and stuck around as your mansion.
The small farms that were within the means of more people tended to have shanty houses and those have not persisted. If the farm is still a farm, it's likely been subsumed into a larger plot.
Wrong answers only please.
I'm guessing you're a PM or have been? You did the classic 'opening agree to disarm, then disagree with a long sales pitch' that they're so good at ;)
It seems to me you're vastly overselling the impact of even the 50th percentile of PMs
I think project management is useful (I'm not going to get in the weeds of PM vs PM vs PO etc). But I feel we've over-promoted classic project managers into roles driving product direction without them having the experience or acumen for it.
Generally incorrect, but it depends. Wear can cause mdf/veneer to have "bad optics" compared to solid wood, but mdf/veneer can have more suitable physical properties and enables more consistent visual quality and design possibilities.
Those are usually large plantations, and the people who owned them weren't just farmers but vast landholders with very low paid labor working the farm (at one time usually enslaved). I doubt they were representative of the typical turn of the 20th century farm.
If we're speaking from vibes rather than statistics, I'd argue most 19th century farmhouses I've seen are pretty modest. Not shacks, but nothing gigantic or luxurious.
Also hard to ignore the survivorship bias there. The small/bad/ugly/whatever houses are gone.
That is wildly inaccurate. Do you think people were flocking to cities to flee the "insanely lucrative" jobs they already had?
Farm labor paid significantly less than industrialized labor at the time. I suspect in addition to just making things up, you're looking at a few landowners who were quite wealthy due to their land holdings (and other assets) and what they have left behind while completely ignoring the lives led by the vast majority of farmers at the time.
There was a brief ray of hope in the late 90s, with the startup gold-rush idea that we would all be millionaires soon. Then the I realized the founders had 4000x my equity those companies...
Lol are you really gonna go with "I'm a software developer, fuck all the restaurant workers, teachers, plumbers, janitors!"
This is why Marx's ideas failed in the West - toxic individualism - and flourished in the East.
Lol alienation of labor is not a single "sentiment" - it's a core principle. So like it or not you share a core principle with Marx.
The 80's and 90's saw the beginning of the "fuck you, got mine" mentality that pervades all but the most egalitarian societies. Reagan and Thatcher deregulated and privatized everything, and as a result a select few made a mountain of money and destroyed the middle class. "Shareholder value" and mass layoffs became the order of the day way before the dot com bubble burst. GenX knew we'd never have it as good as our parents - we just didn't know how fucked we were going to end up.
What really killed corporate loyalty for a lot of us was the lack of jobs that have lifetime pensions, if I understand it correctly. Why would I agree to work somewhere til retirement if I would be better jumping somewhere else to make more money now?
This is why I incessantly preach to my coworkers: "you are not your job". Do not attach to it emotionally, it's not your child, it's a contraption to solve a puzzle. It should be easy and relieving to scrap it in favor of a better contraption, or of not having to solve the problem at all.
I agree with everything else you wrote. Especially the bit about over promoted project managers. That's my thinking as well.
This is actually harder for more senior/managerial folks, as often they'll build/buy/create something that's big for their level and now they're committed to this particular approach, which can end up being a real problem, particularly in smaller orgs.
Once upon a time, I worked for a lead who got really frustrated with our codebase and decided to re-write it (over the weekends). This person shipped a POC pretty quickly, and got management buy-in but then it turned out that it would take a lot more work to make it work with everything else.
We persevered, and moved over the code (while still hitting the product requirements) over a two year period. As we were finishing the last part, it became apparent that the problem that we now needed to solve was a different one, and all that work turned out to be pointless.
It's how they get to be the experts that are needed.
Replacing their code IS replacing their expertise and therefore them. How would you expect words to change that?
Just like every league of legends game, it's not possibly your fault!
I mean, one of those reasons is "When I leave this job will I be able to get another job" is a huge deeply life affecting one.
If you want me to work on COBOL from 1988 then you've limited my work prospects to one of a very few employers in the country at a very specific pay range. If I instead tell you to eat a fat one and go with $language_de_jour the number of employers and potential salary range is much, much larger.
There are no plantations around here. This was cattle and grain country in that time. Farmers got rich because all of sudden their manual labour capacity was multiplied by machines. The story is quite similar to those who used software to multiply their output in our time, and similarly many tech fortunes have built mansions just the same.
> Not shacks, but nothing gigantic or luxurious.
Well, they weren't palaces. You're absolutely right that they don't look like mansions by today's standards, but they were considered as such at the time. Many were coming from tiny, one room log cabins (stuffed to the brim with their eight children). They were gigantic, luxurious upgrades at the time. But progress marches forward, as always.
There is more to alienation than equity.
No, I agree. But pulling the ladder from under them is not the biggest issue per se since every generation after them did them same if they could get on the ladder, the big problem with boomers is their immense hypocrisy.
GenX and Millennials knew that the situation was every man for himself grab everything you can while the going is still good, but crucially IMHO they didn't try to gaslight the next generations that this system of gains is somehow fair or the result of hard work and self sacrifice.
But boomers indulged in the period of sexual liberation and drug use, while then preaching about conservative family values and war on drugs when they got older, they enjoyed crazy good housing market and unionized jobs while preaching you should pull yourself by your bootstraps for a job that treats you like a disposable cog and won't buy you a house, they vocally hate socialism while depending on a generous social security system they designed for themselves and costing the taxpayer a huge amount on socialized government healthcare programs paid by the younger generations, etc the examples could go on. You can't hate boomers enough for this. Granted, not all are this hypocritical, but enough for the dots to form a line on the graph.
One of the issues with the system, was it couldn’t generate reliable billing.
One customer had been running the system for free, for years, because we couldn’t send them an accurate bill.
One look at that bowl of spaghetti, and it’s easy to see why.
> There are no plantations around here.
FWIW you haven't really stated where "here" is for you. It's not necessarily going to be the same for everyone, and based on the parent comments, the potential area under discussion could include the entirety of the US and Europe (although the initial comment only mentioned UK specifically, it doesn't seem clear to me that it's explicitly only talking about that). I'm not sure you can categorically state that no one in this conversation could be talking about areas that have plantations.
Few teams other than green-field start-ups have flexibility regarding tools or technology. My first job was COBOL, 'nuff said about that. Even at start-ups the leads / architects choose most of the technology, and many of my ideas were shot down, such as using C++ in the late 90s, and using Scala in 2010.
People seem to think agile has increased alienation, when in fact the pre-agile world was also terrible. What matters is the quality of the team, not the methodology.
I also see survivorship bias keep coming up. Each time it claims to be have been addressed in the original comment, and that's that. Yet I don't see how the existence of surviving mansions today proves anything about the prevalence of wealthy farmers at the time
Similarly, there's no inherent reason subsistence farming should prove or disprove work outside the farm. The existence of farms large enough to grow and sell surplus food, that doesn't mean all farms could do so
This sounds like a semantic disagreement.
I think you are using the word "farmer" to mean "large agricultural landlord". Today, those terms may have a lot of overlap, because most of us don't work in agriculture like we did then, but in the past, it wasn't so much the case.
Back then, the landlord who had the "big house" wasn't called a farmer, but often a "Lord" or "Master".
"Farmers" were mostly people who worked as tenants on their land. The confusion in US history started early as the local feudal lords of the time (the founding fathers) rebranded themselves as farmers in opposition to their British rulers, but the economic structure of the societies was scarcely different.
I don't know how delusional you have to be to look at the conditions behind the Iron Curtain, where nations had to build walls to keep their citizens from leaving and a meaningful number of people were willing to risk death to get out, and say they were flourishing, but I'm glad I don't have what it takes to get there.
...
> theory
these two words aren't interchangeable
> Jean-Jacques Rousseau, Adam Smith, Wilhelm von Ketteler, Louis Blanc
...
> generic cog-in-the-machine critique that is explored by many other people
literally only one of the names you mentioned were writing post industrial revolution - the rest had literally no notion of "cog in the machine"
you're trying so hard to disprove basically an established fact: Marx's critique of exploitation of labor post industrial revolution is certainly original and significant in his own work and those that followed.
Exactly. That's why you can't jump from "people don't feel like they own their labor" and "people bemoan their boss" to Marx's theory of alienation.
> literally only one of the names you mentioned were writing post industrial revolution - the rest had literally no notion of "cog in the machine"
But the very framing that this is an ill that is unique to industrial society is Marxist. Slavery, corveé labor, taxes, poor laborers, marginalisation existed for thousands years in one form or another.
> you're trying so hard to disprove basically an established fact: Marx's critique of exploitation of labor post industrial revolution is certainly original and significant in his own work and those that followed.
I don't dispute that Marx's critique of exploitation of labor post industrial revolution is original or significant. I dispute your claim that people who share similar sentiment have to agree with Marx's theory of alienation.
I know devs like to say they would hire anyone, but they're not the ones hiring. At best you get to interview people already prefiltered by HR which... looks for keywords in CV.
Name the Eastern nations plural that built these walls please. As far as I am aware, the G in GDPR stands for Germany, a country/nation/state which is (and always has been) firmly Western. People on here have such an infantile recollection of actual history.
Anyway, leaving aside debates of where the prime meridian of West vs East falls, it should've been manifestly obvious that in 2025 I was talking about China...
Edit: DPRK counts I guess although I'm not sure how many people would call what they have over there "communism": https://en.wikipedia.org/wiki/On_the_Juche_Idea
I've never found it too difficult to get hired even when the requirements don't list something I've done already.
Yes surely I'm the one concocting things (rolls eyes)
https://en.wikipedia.org/wiki/Chinese_Communist_Party
As Sartre said - it's pointless debating people like you because you're just amusing yourself and it's only my responsibility to use words responsibly.