I’ve seen a lot of buzz recently about software developers wanting to form unions. I’m particularly interested in this topic while I’m #indiehacking boot.dev, where my goal is to provide a free-to-audit university-quality CS education. I also want to point out that at the time of writing I’m a full-time software developer working for a separate company (not boot.dev). I’m not a manager and boot.dev is just a side-project. As of right now, I’m pretty sure I’m a member of the proletariat.
As I lay out my current thoughts on unions, I want to point out that I’m trying to keep an open mind about this subject as the experiences I’ve had in the job market don’t reflect the experiences of the average developer. Also being based in the USA will mean I have a different perspective than those in other locations. Feel free to reach out on Twitter to share your thoughts with me, especially if you think I’m missing something.
🔗 #1 Salaries aren’t keeping up with inflation and cost of living
One of the articles I’m responding to, Steve Belovarich’s Should We Form a Labor Union makes the claim:
The economy in 50s America enabled a sole breadwinner in the family to provide enough to pay the bills, put food on the table, and even take the family on a vacation… There are some of us in the technology sector who still have a difficult time making ends meet when housing prices are high, employer-provided insurance refuses to cover medical bills, [and] student loans prohibit some of us from obtaining credit.
It’s true that the ’50s were very different from today in terms of who worked, how much they worked, what they did at work, and how much they were compensated, but this take looks through some seriously rose-colored glasses.
In the ’50s, the median inflation-adjusted household income was around $30,000 in 2020 dollars. Today, we make significantly more money, around $60,000 (back of the envelope math from here and here), and yet clearly many families still struggle to make ends meet. To me, it seems this is largely due to the certain “necessities” that simply didn’t exist in the mid-20th century. We have many bills they didn’t have back then; cell phones, prescription medications, internet connections, multiple cars, and much larger houses to name a just few.
While we’ve made advances in technology that make our lives better, they’ve simultaneously made our lives more expensive. You simply must pay an exorbitant hospital bill to have a child in 2021, anything less is irresponsible. Most people can’t walk to the grocery store or work these days with suburban sprawl, so multiple cars per family is a necessity. There were no cell phones in the ’50s, but it’s nearly impossible to function in society without one now.
I think this is a problem, but developers are some of the most highly-paid workers out there. The solution likely resides outside the domain of software specifically, seeing as people of other professions, even highly-unionized professions suffer more.
Pointing out that we need to earn more to live a more comfortable (yet necessary) lifestyle is interesting and may have some political ramifications, but I don’t think it’s a good case for unionizing in software in 2021.
For example, geographic tech hubs (San Francisco, we’re looking at you) have become extremely expensive over the last ten years. This hasn’t just made it harder for developers but has most adversely affected workers in other industries where their salaries have not skyrocketed while housing costs did. Some other potential solutions that more directly deal with the problem could include:
- More remote work. This means workers can move to lower cost-of-living situations, and non-tech workers in Silicon Valley won’t be so aggressively displaced. I don’t think we need unions to make this happen. Covid-19 has made employers realize just how cost-effective remote work can be.
- With retail investment being accessible and cheap to everyone now, we can take part in the spoils of company ownership. That said, there’s clearly more work to be done here so that Wall Street doesn’t get an unfair advantage. Fuck you Robinhood. 💎🤲$GME.
- Wealth inequality is a real problem, but I’d rather see a more simple and targeted solution like a small UBI. It would help workers across all industries without needing to add paperwork, membership, and union dues to our already complicated lives.
- Fewer zoning laws, and better access to public transportation. Americans spend quite a bit on cars, with the average car owner spending roughly $775/month on car-related expenses. If more of us could walk, bike, or catch trains to get around it would help with the environment and our wallets.
🔗 #2 Difficulty proving your worth without having a silver tongue
I’ll be the first to admit that this is a huge problem in the coding industry, and really in any knowledge-based industry where aptitude and impact are hard to measure. There are terrible engineers who make 4x more than seriously talented engineers, simply because they’re better at writing resumes, interviewing, building social profiles, or smooth-talking at the negotiating table.
This is a real problem.
Unions could actually help in this regard. Along with unions, we’d likely get some form of standardized testing, so that our ability to prove how much we should earn would be fairer. For example, level 1 front-end developers might make $50k-60k. Level 2’s make $60k-70k etc. In the current market, it feels like “junior developers” earn anywhere from $20/hr to $80/hour, and “senior developers” earn anywhere from 70k/year to 700k/year.
Standardization and official certifications would likely help those that aren’t good at selling themselves but would be unnecessary for those that already have those soft skills.
I have two main problems with this approach.
- Standardizing testing and certification systems likely wouldn’t be effective in a field as fast-paced as software engineering. Best practices in 2019 can be obsolete in 2020, and I just don’t trust union administrators to keep up.
- We can solve this problem without unions. I think there’s a growing market demand for developer-vetting. Right now this need is mostly filled by service-based recruiting companies, but I think there’s an opportunity for a kind of developer-profile industry to emerge. Ideally, it would make it easy for developers to showcase their knowledge and projects in an effective and streamlined way, and at a fraction of what union dues would cost.
🔗 #3 Discrimination
In addition to the fact that what should be low-impact soft-skills play a disproportionately large role in the salary of a technical person, there’s the ever-present problem of intentional and unintentional discrimination in hiring and compensation practices. For example, while the gap seems to be closing, it isn’t closing fast enough. Dice’s recent study shows that female software engineers still earn $8,559 less than their male counterparts on average.
This is a real problem that doesn’t just deal with gender inequality, but race, age, culture and perhaps religion as well.
Huge problem. Hard to solve. Unions might help, but to be honest I’m not sure.
Unions are basically the strong-arm approach to companies exploiting workers. As far as I can tell, most tech companies nowadays understand that diversity is in their best interest. The problem seems to primarily arise from the implicit or explicit biases of individuals within the organization, and often those near the top. It’s a hard problem to solve, and I’ve there are several ideas that could potentially help, including:
- Scholarships and grants for minorities
- Ensuring diversity among hiring panels
- Anonymizing resumes
I’m not sure which practices could prove to be most effective, but my point is that if the problem truly is bigoted or biased individuals at companies, how will unions make it better? Those unions will be just as prone to having bigoted and biased administrators and members. No, I think the answer here more likely lies in each of us standing up for diversity and making sure that the companies we work for do the same.
I can see unionization being the correct choice if bigoted executives are explicitly refusing to take action, and are blocking managers from doing the same. If this is the case where you work, it may be time to start organizing. Extra care will need to be taken to ensure the union organizers have the worker’s diversity goals in mind.
🔗 #4 Market-value discrepancy between junior and senior developers
Spend a few minutes in /r/learnprogramming or /r/programmerhumor and it will become readily apparent that entry-level developers have a really hard time finding their first job. Who would hire someone with no previous experience? On the flip side, senior developers are constantly complaining about all the recruiters that won’t leave them alone, and they’re among some of the most well-compensated people in the workforce.
This is a real problem.
The junior/senior problem seems to mostly be a supply and demand problem, with perhaps a residual effect of problem #2, junior developers have a harder time proving their worth since they lack experience. If there’s truly a supply/demand problem there are only a couple of potential solutions:
- Improve education systems to help new engineers advance and progress more quickly and recognizably
- Encourage new startups and research investment so that there’s more demand
- If there are just too many engineers (doubtful) then let people know so new learners will know what they’re getting into
In regards to junior developers not being able to prove their skills, I think there are potential cultural improvements and product innovations that have a lot of potential. For example, inexpensive access to online courses and certificates helps students that didn’t go to college prove that they understand certain concepts. The open-source community seems to me to be more inclusive and collaborative, and if you maintain a project you can help by flagging issues with
good first issue or
help wanted which encourages newer devs to get their hands dirty and fill out their open-source portfolio.
🔗 #5 Employees are at the mercy of employers
I think a lot of people assume this to be the case, but software development is one of the fields that has the least of these worries currently. In a fairly free labor market, the employers hold the cards when unemployment is high and there isn’t much investment capital to go around. When capital is cheap (lower interest rates and investors dying for projects to fund) the employees tend to be able to make better demands.
I do think there is a perception problem here that relates to problem #4. Junior developers, and particularly devs with zero experience, and perhaps no formal degree will feel completely at the mercy of potential employers and recruiters. That said after I worked as a developer at a single place for one year I felt liberated and had an easy time applying and getting interviews.
I do want to make a special mention here for workers who require sponsorship via an employment visa. I’ve spoken with several friends and have met others online who have had to deal with being at the complete mercy of their employer due to visa sponsorship.
This is mostly a problem for foreign workers and entry-level developers.
Regarding domestic experienced workers, employers are at their mercy in the current market, not the other way around. Investors are constantly looking for new projects to fund, and capital is cheap with interest rates at record lows. In the future, if the industry takes a turn for the worse we may need to reassess the situation.
Regarding domestic entry-level workers, I think the problem is mitigated by the solutions I discussed for problems #4 and #2.
Regarding foreigners looking for sponsorship, I would much rather fix the immigration situation if possible. Workers shouldn’t need to be sponsored to come here in my opinion, though I understand that’s a controversial idea. Assuming we’re unable to empower foreign employees by fixing the laws, unions might certainly help in this regard.
🔗 Can unions solve our problems, and what’s the cost?
I think unions seriously helped a lot of workers in the 20th century, and there are a time, place, and series of implementation details that can set them up to hugely beneficial to everyone involved. That said, many look at unions as being “for the proletariat” and anti-unioners being “for the bourgeoisie”. I don’t think it’s that simple. Unions provide benefits, but they don’t come for free.
🔗 Pros of unionizing
- Collective bargaining for salary, working conditions, and other benefits
- More structured and standardized systems for compensation
- Legal protections in case of lawsuits
- Empowerment of foreign employees requiring sponsorship
- The ability for workers to strong-arm companies that refuse to promote diversity
🔗 Cons of unionizing
- The overhead cost of employing the union administrators (union dues)
- Gatekeeping and time-wasting via official tests and grooming processes
- Could make it harder for workers to break off and start their own competing companies, leading to the biggest companies monopolizing the workforce
In the end, I tend to think that the majority of us in the development world are better off without unions currently. This might change, and there may be a place for specific sub-industries or geographic areas to band together.
🔗 Special Mention - Pension Benefits
This has come up enough that I want to address it here - pensions are fucking stupid. We have a new solution, they’re called IRAs and they work better for everyone. Pensions assume a few things that I personally don’t want to be the case, or that I don’t trust to be the case:
- The company will be around when you retire to pay your pension
- You won’t be fired or let go over the course of ~25 years working for that company
- You won’t quit your job at the company for ~25 years
Dumb. So dumb. The idea of working for a single company until you die is the dangerous thinking that makes us need the collective bargaining that unions offer. It’s precisely because tech workers move around so much that companies have to pay such a premium to keep us around.
Don’t ask for pensions, you don’t want them.