I spent weeks deliberating whether or not I would write a public statement about what happened to me at my previous company. Then I spent days deliberating what exactly I would write. The time leading up to publishing this post was agonizing as I tried to figure out the balance between saying too much and not saying enough.
What it all came down to is two main things:
The full truth has not been shared with my previous colleagues, many of whom I developed incredible connections with through Accessibility Required, a Neurodiversity and Disability employee-resource group I co-founded in February 2021 and co-chaired for the rest of my tenure at the company. I cannot stand for my truth being misconstrued.
There are countless other marginalized folks actively suffering through the same, similar, and worse situations to what I went through. I hope if any of them come across this post that it helps them to feel less alone and encourages them to come up with a plan for survival as many posts like this one have done for me. We should not have to suffer in silence and isolation.
I worked at All Campus, LLC (headquartered in Chicago, Illinois) from November 18th, 2020 to October 1st, 2021. My offer letter specified that I was joining as a "Front End Developer". There was no level in my title and I was told that levels were not official in the team. If you're not familiar with how levels work in the tech industry, the gist is that they are used to convey the experience and responsibilities within a person’s role. All companies do this differently and the number of levels can range anywhere from a couple to even a dozen.
A person's level has an enormous impact on the salary they are given. Check out levels.fyi to see how level and pay roughly look for technical roles at many companies including Google, Facebook, and Microsoft.
When I joined the company, there were two main developers on the team that I was to work with closely. One of them would not work with me. They were condescending when I asked clarifying questions and would say things like "I think the description is perfectly clear" when all a task’s description contained was a screenshot and non-descriptive words. They would talk over me during calls and force me to make changes to my code without discussion. They often reached out to the second developer to have them take their side in reviewing my code and even called them in from PTO once to review their code as if I was incapable of reviewing very straightforward and minimal code changes. The second developer took the person's side even when they disagreed with them. How do I know? The second developer told me so.
Thankfully, that first developer left not long after I started. They created an extremely hostile work environment and I would not have stayed in my position nearly as long as I did if they had not left. I later found out that they would obsessively complain about my Twitter feed to the second developer, so not only was my work environment unsafe with this person around, so was my personal environment. How do I know about this behavior? Again, the second developer told me so. It’s another example of how my work environment was still unsafe even after the first developer left. The second developer staying silent multiple times about such awful behavior enabled the other person to continue harming me and it conveyed to me that they weren't bothered by me being mistreated.
Things went okay between me and the second developer for a little while, but we were inherently considered to be the same level as far as I knew (even though levels were supposedly unofficial on the team) and there weren't any other experts in our work on the team. When we came to disagreements during code review (which became more and more frequent over time), we did not have someone of expert authority to make a final decision. These weren't petty or personal disagreements. They had to do with the other developer not being receptive to code review feedback I had to repeat over and over, them not writing their code to match specifications given by the design team, and them not wanting me to make some changes to foundational code because they were afraid something would break.
I raised the issue of growing dysfunction to our manager for months in a row but nothing changed. Our manager would chime in on code review when tagged in by one of us, but seemingly did not monitor our correspondence despite knowing there were issues. The manager took the other person’s side in most cases I can think of, even when the other developer was clearly in the wrong. In one situation the other developer said they didn’t build their code to design because “there were no designs,” and despite me linking to the designs that had timestamps pre-dating the developer’s work, they pressured the designer multiple times to accept the code work because it was “already done” despite still being in the code review stage.
In a one-on-one with the manager, I brought up specific behavioral issues that concerned me in code reviews that would spiral into hours of unproductive and unnecessary back and forth. Instead of focusing on the behavior issues I mentioned, they focused specifically on the code in the review and said "I don't see it as that big of an issue," implying that I was the cause of unnecessary hours of back and forth and implying that I should've never made the review comment in question in the first place. I tried to bring the focus back to the behavioral issues, and they said we should have a meeting between the three of us to get the other developer's side. I found that reasonable, and added that I was burning out from the unhealthy dynamic going on. The manager did not acknowledge this statement at all.
When the meeting about the code review process between the three of us was scheduled, I suggested that we form an agenda for the meeting beforehand to ensure we could all prepare and that we would each have equal time to raise topics or concerns. The manager never reached out to us to build an agenda even though they said they would, they were 20 minutes late to the 50-minute meeting, and as I anticipated I did not get to raise any of the concerns I had raised one-on-one for weeks. The other developer got to raise several concerns, kept diving into technical specifics of past code reviews when the purpose of the discussion was to talk about process, and the manager was quick to blame me for resolutions not being reached fast enough without even looking at timestamps that showed I efficiently facilitated resolutions in just a few hours.
A few days after that meeting would be my last one-on-one with that manager. I expressed my frustration with them not following through on their promise to build an agenda and with me not getting a fair chance to speak on the concerns I'd been telling them about for weeks. My issues were completely unaddressed, and I told them it felt like they didn't take my issues seriously, especially the ones I'd raised 2 weeks prior that prompted the group meeting. Then they became visibly frustrated by that feedback and told me their priorities were the big backend code problems.
I asked them if they saw big human issues as important, and asked them to consider my perspective after being told that code is more important than issues I'd been raising for weeks on end. They told me they couldn't solve all my problems. They actually had solved a very small percentage of issues I'd raised. I told them that I didn't feel like I was being taken seriously, and that they still had yet to acknowledge or validate that I told them I was burning out 2 weeks prior.
After repeating myself several times and them still not acknowledging it, I finally said that I was having a horrible time, to which they said it was "strong language" and that it is a problem when employees "hate their job". I told them not to put words in my mouth, because I never once said I hated my job. I tried to get them to recognize "burnout" as strong language, especially when sharing something so vulnerable to a manager, but I still didn't get the sense that they understood or cared. They mischaracterized what I called burnout as "overwhelmed by too much process" which is never something I said—I said there were specific behavioral issues that were causing frequent problems during code review.
When I listed the behavior issues about the other developer, they angrily told me that the other developer had problems with me too and that it sounded like I just wanted the manager to take my side on everything. Not only was this plain instigative and a dangerous thing for them to do, it also proved that they were very aware of dysfunction and let it fester for weeks. It was clear evidence in multiple ways of how they allowed and perpetuated a hostile environment. They continued to center themselves and claim they were under a ton of pressure from above.
Within hours of this one-on-one, HR became involved and I told my story to them. I told it to the manager's manager the following week. I told both parties that I did not trust the manager to accurately represent me or my work at the company when it came review time, mostly due to their blatant mistreatment of me and also partly due to their poor support and previous efforts to review me (I had an informal review in February 2021 that was poorly researched on the manager's part and I was given no time to review ahead of time or provide feedback). I also requested that we no longer have one-on-ones together. The manager's manager became my and the other developer's manager, to start working on the issues we'd been having for months and the hiring process started for a new person to manage all developers.
Shortly after this, the other developer left and I became the only front end developer and person managed by the skip level. During this time, I asked about what level I was. My expectation was that I was mid-level (AKA the second of three levels in the supposedly unofficial team career ladder) and I wanted to make sure that the situation with my previous manager was not going to affect my efforts towards getting promoted to senior. I told the skip level that despite requesting it numerous times from the person who previously managed me, I never had a session for discussing professional goals in my role and I was never told what they thought my level was according to the supposedly unofficial document.
When the skip level got back to me on that question, they told me that according to the previous manager and HR, they thought I was between a level 1 and a level 2 (which translates to between entry level and mid-level). I expressed my strong disagreement and the skip level effectively threw their hands up and said that the eventual head of engineering would handle figuring out my level. They should not have reached out to the previous manager, especially after I expressly stated I did not trust the person with my career. Many issues I raised to the skip level were being brushed off as culture issues the new head of engineering would have to fix.
These issues include:
- Not being invited to group coding sessions to solve problems I spent hours researching and reporting on
- The same people who excluded me from the coding sessions constantly dismissing my input and telling me I was wrong before actually digging into what I was sharing
- Being called a micromanager by a teammate after trying to collaborate with them on about a task they both misread and then didn't test their code for two days in a row
When the head of engineering finally started in late-mid August 2021, I was at the start of a two-week period of PTO. I was mentally, emotionally, and physically drained and feeling defeated, unwelcome, and very undervalued. Even still, I was optimistic about the new manager. I was casually interviewing with companies at the time (meaning I was only talking with a couple at once since that's what I had the capacity for). I wanted to make sure I had a contingency plan in place. I'd spent months being patient, but I needed to prioritize my health.
I was still the only front end developer and the only person working on that codebase. I took on paring down technical debt, writing tests and documentation, planning and scoping features, coming up with strategies for getting years-out-of-date dependencies fixed, and was involved in decision making for the rest of the year's roadmap. I was the expert on the codebase and invested a great amount of time and energy into things that were often neglected in previous years despite being the only person working on it. In my last week at the company, I wrote an extensive 22-page document transferring all of the knowledge I had about almost every folder and file in the codebase and all in-progress and planned initiatives. I gave everything I had to give for my entire tenure.
The new manager proved to be a great hire for the team from my perspective. They were receptive to hearing about how I felt unsupported previously, clearly cared about my opinions and ideas, and were prioritizing fixing major pain points in the development process that caused a lot of unhappiness even beyond developers. I felt valued by them in my work and empowered by their leadership. In the end, they were a huge advocate for me and truly tried to turn the entire situation around.
Towards the end of September 2021, I was entering sick time in the payment system and because it was the first time I'd done that since the new manager started, I checked the organization chart to make sure it'd been updated in the system that I reported to them. What I found there was completely unexpected. Other developers had levels in their titles and my title was Software Engineer (AKA level 1, AKA entry level). I was speechless. How did we have levels if levels were supposedly unofficial on the team? How was I hired at entry level when this was my fourth full-time job post-college, I had a degree in software engineering from an incredible program, and had worked 3 summer internships during college?
What I found out is that I was given different information than other people on my team. They were actually aware of their levels whereas I was told levels weren't official. Even someone hired at essentially the same time as me was treated differently despite us having the same job responsibilities and at the very least, the same amount of prior working experience. Because I found out people were aware of their levels and that was clearly something I was being treated differently on, I dug deeper and found out that they were being paid nearly 18% more than me despite having the same responsibilities and past experience. I also proved time and time again that I was absolutely not an entry level developer in any sense, so there were endless opportunities for this disparity to be corrected. I collected extensive data on the work I’d completed up to that point and tried to present that and the pay disparity to HR but was met with no sense of urgency despite my claims that I was significantly underpaid for going on 10 months. I was told to speak with my new manager about it, which implied to me that they disagreed with my claims.
Not getting similar pay when doing similar work is the definition of pay discrimination. Treating one person differently than everyone else is the definition of bias. Treating someone differently based on sex to the extent that it creates a hostile environment and preventing them from progressing in their career is the definition of sexual harassment. I did not leave for personal reasons. I left because I was discriminated against and traumatized by a biased manager and psychologically unsafe environment for months. I could no longer trust leadership to value or protect me after endlessly prioritizing a hostile employee and manager over any of the people that person traumatized for years. When that person directly harmed me, they were eventually replaced as a manager and given a promotion and new job title.
People directly involved in this incident were able to remain part of the Accessibility Required employee-resource group for months, contributing to feelings of uneasiness and anxiety within the ERG. All the while I was left to carry the work of several people as a lone front end developer with no real recognition—just empty words with no action behind them.