This doesn’t really work in practice.
You’d think that forcing the company to pay more to hit a deadline would be a disincentive, but instead it makes crunch time forgivable because the company is paying extra for it. “What are you complaining about? You’re getting time and a half to work those extra 20 hours!”
It also does nothing to address the core problem of overwork leading to burnout. If anything, it lures people deeper into burnout because for many people it’s hard to turn down extra money.
Finally, I haven’t seen good results from offering crunch time pay incentives for many reasons, but the most unexpected is that the incentives are very lopsided across the team. An experienced developer who has young kids at home may not be able to stay late, but an inexperienced junior straight of college with nearly zero external obligations may be able to put in 80 hours of poking around the codebase while racking up huge paychecks for contributing very little. Worst case, the seniors end up with even more work because they have to go back and rework a project that was done by juniors working crunch time while their usual senior/mentor peers were unavailable. The incentives of extra hourly crunch time payouts get weird very quickly.
Treat software engineers like they actually know something.
If an engineer thinks something is a bad idea, actually listen to them instead of pretending to listen. It amazes me how many companies see software engineers as extremely low tier, but I think a lot of that stems from most engineers lacking direct involvement with decision makers and other personnel.
This is why I am pessimistic about the concept of having project managers act as an interface between engineering and the rest of the company. On one hand, it relieves engineers of a certain amount of responsibility but the tradeoff is that now one or two individuals have an incentive to do things to please both parties at once. The result is that no one really knows what that engineer guy Al actually does around here.
Perhaps a lot of problems around engineering morale would go away if we eliminated the middle men and only engineers themselves to interface with the rest of the company and advocate what they think makes sense rather than what makes sense to a project manager who will only do what results in the least amount of hassle for them. It would be up to the engineers themselves to make sure they aren't culturally segregated and made low tier.
If you're an engineer and your company gives the sales people their own desks while you have to share a desk, consider how much that company actually values you.
My problem with your solution is that, practically speaking, engineering managers often end up being glorified vice project managers because of the number of meetings they end up in. As a result, they can be significantly disconnected from the actual technology being used and the perils they are fraught with that can cause complications when implementing even simple features.
At least an EM knows something about engineering. And an EM is a role that indeed should exist in some capacity, whether or not that's the exact title they are given.
What I believe would be better is for engineering teams to be involved in the early to middle stages of planning and pre-development, and for either an EM or team lead to have the authority to prevent product owners and other departments from applying undue pressure on individual engineers. That should be the primary role of a lead, and they should otherwise step out of the way and let engineers speak for themselves since they are the ones working directly with the software and APIs being used.
Otherwise, we end up with a similar problem to the one I witness, which is that the EM in your approach would end up being incentivized towards diplomacy more so than serving the needs of either side. A leader-as-an-interface shields both parties from each other but also facilitates alienation. An EM that works in tandem with the engineering team can make sense, but standing between engineering and other company operations to me is an anti-pattern. Middle men are better off not existing at all even if it means having no EM or PM. All they do is remove power from both sides rather than become involved on an as-needed basis.
Let's put aside for a second that there are many lackluster programmers who happen to also be expensive.
The idea that there's "tech companies" and then there's the rest of the economy doesn't make sense, and probably has always been a false dichotomy. Small companies to BigCo fundamentally run on technology. Small hiccups in that technology cause gigantic interruptions. Until we are automated out of existence, they can't get away from us engineers.
One might say that software engineers are glorified digital plumbers. While there's a lick of truth to that statement, this is ignoring the fact that you wouldn't necessarily hire a plumber rather than a structural engineer when designing and constructing a building. Just as a structural or civic engineer must do research and calculations for every single job they are tasked with, software engineers necessarily must research and solve unique problems 99.9% of the time. You can't train a software engineer to do one thing repetitiously as what could have been done with a Ford assembly line worker. In software, there is simply no equivalent to being trained to turn the same bolt hundreds of times a day and that becoming your only job.
This isn't to say that there aren't repetitious aspects of the software developer's job. Many projects share certain qualities (ex. CRUD apps), and some repetition results from the role of a developer being overloaded.
I believe you are mistaken in suggesting there are no "rockstar" programmers. While I would shy away from such a cringe term, though rare they are, I've encountered a few "rockstars" in my time. They tend to do at least 80% of the work, perhaps 90%, by virtue of their cognitive capacity and ability to adapt. Do they make proportionally more than most other developers? Of course not. At best they are viewed as liaisons for their respective teams.
I am by no means saying that developers should be the backbone of a company. Although that can and does happen, and my have benefits, developers aren't necessarily qualified to manage or make high-level decisions that will take the business in different directions. Arguably, the hierarchs of companies are of a higher tier than developers because, while the developers are navigating, ultimately those hierarchs are the ones at the steering wheel, to use a somewhat flawed metaphor.
On the other hand, developers aren't of equal value to the janitorial staff. They aren't equal value to sales or customer service. They aren't even equal to design teams, since design teams usually can't ship a product themselves, and a product with poor design that does its job well is far better than a Figma document, which on its own is essentially nothing.
And yet many companies privilege these other departments over engineering, sometimes even when their core product is software. To put it bluntly, while there certainly are some excellent companies out there that treat engineers properly, too many companies mistakenly view software engineering as a necessary evil and as something that can and should do anything that is thrown at it because they themselves often aren't of the engineering mindset themselves. Most people get educated, "finish" those educations, and thus fail to understand that engineering can't possibly work the way they've treated their own specialties.
There is simply no reason why mid to senior level software developers can't be more closely involved with in pre-development and actually be listened to. My hypothesis is that having engineers sectioned off while a project manager or team lead acts as the sole interface with the rest of the company simply doesn't cut it, and it results in the demoralization of engineers because their voice is rarely heard or respected. Engineers think they don't want to be involved with the rest of the business, and while there's a benefit to avoiding possible distractions from coding, this non-involvement comes at an unseen cost.
> In command and control structures value is given by position not by contribution.
While that is true, and to a large respect is inevitable, that doesn't mean that its logical extreme should play out.
No matter what, power politics always emerges. It even emerges among engineers themselves. I'd go as far as to say it's a law of the universe.
Yet what happens when that law is amplified to such an extent that one party loses too often? They become alienated and demoralized. Not across the board, mind you. I am not suggesting that all or even most software developers experience these mental health issues because of where they fall in typical corporate structures. But when the problem exaggerates itself, even reaching its logical conclusion (which I have experienced myself), enough people can lose their sense of self worth that no amount of money can compensate for it. In the worst case, the personnel that companies lose are the rockstars, so to speak.
To expand on that last point, I myself have experienced being taken to the far end of the spectrum. I once worked for a team that went from having their own offices to a room with their own desks, to a bigger room with shared desks, and finally to a supply closet in the center of a building with no windows. All the while, sales and HR all got their own desks and cubes and were given frequent recognition even though this company's business was selling software. We went from being treated like experts to being sectioned off from the rest of the company and not being consulted for anything. This all happened within a year, and the first people to go were the ones with the most talent (fortunately one of them ended up at Apple and has been there for years now).
Yes, that's an extreme example, but this plays out to a lesser degree at many companies. Those whom are solving fundamental problems are often viewed as less than they actually are. By no means am I trying to glorify software development, because there's a banality to it at the same time. But it's not nothing. In fact it's the closest thing to reality that exists in companies that sell digital products. Without solving problems with logic and mathematics, everything else is just fantasy.
Businesses will have a better chance at achieving excellence and adapting to problems if they cut out the monkeys in the middle and allow engineers to be involved earlier in processes. Though sadly the vast majority of businesses are actually disinterested in excellence of any kind since excellence conflicts with the traversal of power structures through politics.
If businesses fail to hold on to software developers and struggle to hire new ones, it shouldn't be a mystery to them why they are facing that struggle. Maybe developers are more important than some of the traditional roles that they venerate.
So no, I don't agree that we deserve to be treated as low tier as we often are.
It was obviously bad in 2004 with public exposes, and it is still the same today: https://ea-spouse.livejournal.com/274.html
Game development will improve its working conditions when nobody wants to work for a game company, until then they will be underpaid and overworked compared other software development types. There is a crazy hot hiring market elsewhere in the industry, do your part by walking away.
People in charge should be in charge, communicate well and strong, if they fail they compensate for it a bit, and acknowledge people's effort when things are harder.
these sort of “leaders” best quality is that their management style dies with their generation, if we try hard as a group to kill it.
I don't actually believe this is natural anymore. This must be orchestrated. Somewhere, some group is cynically pushing this narrative. Are they luring eyeballs by pushing divisive articles? Are they distracting from bigger problems? I don't know, but this feels fabricated.
Any business looks for results. Media companies will do whatever brings in results. What brings in results? Sowing discord and division because that’s what keeps people coming back. How do we sow division? By making strawmen of anything we don’t understand. When a millennial says “boomer” and when a boomer hears “boomer”, they are talking about completely different things. But the word “boomer” gives us the illusion that we’re all talking about the same thing and that the other person truly is out to “get us”.
These are unfortunate tricks of the mind that are being used to serve our short term ego-gratifying needs. If any progress is to be made, we need to rise above these petty squabbles by focusing on what’s important and not what someone else tells us is important.
We should be very thankful for a lot of the stuff they did for us.
Also, I'd rather work with the average "boomer" than most people who deride "boomers".
Can we please not point the finger at whole categories of people simply based on their age?
- Eliminate crunch time due to management's bad planning
- If crunch time is "unavoidable," apologize and pay me for it. 1.5x for every hour over 40 would go a long way towards making me not resent the blundering middle managers that got us into the "we have to release yesterday" situation
- Know what's important; when everything is "top priority," nothing is, and your developers have no idea what they should work on next
- Weekly team meetings are for positive reinforcement, not "things are looking fine but we gotta keep pushing." That kind of "motivation" is extremely heavy on the mind
- Remind us that sick days are for both physical and mental health and encourage us to use them if we need them