So first of all, I want to say this is MY BIASED account of the situation. While I do not intend to reveal the employer’s name in the article, I feel it would be only right to say that their interpretation of events is likely different from mine. Also, I am under a NDA and so my descriptions of specifics will be vague in an attempt to uphold the NDA.
So some background before starting. I was initially to be hired to replace a staff-augmented dev that was leaving their position. Unfortunately that quickly fell through and in lieu of the previous arrangement, I was brought on as a contractor to assist a few ongoing projects. One of the projects was a React Native and TypeScript code base. The person who ran this project had interviewed me for the staff augmentation position and had gone over my resume to interview me. We spoke about the project he was running and he only mentioned the fact that the code base was React Native. I told him that I was unfamiliar with React Native but he wasn’t too concerned because I had React experience so I should be fine. There was absolutely no mention of the code base also being in TypeScript and nowhere on my resume did it say I had TypeScript experience so when I eventually saw the code base it blindsided me. I was officially put on the project on Dec 3, was given access to the code base, their jira board and partial mock ups of the project then was left to my own devices.
That was the closest thing to onboarding I experienced there.
Today wasn’t very eventful until our team’s first meeting in the evening. As I said earlier, I was to assist with several projects and I got information on other projects that I wasn’t expecting. The gist of it was that the other project I was expecting to work on got put on hold and two other projects that there was little discussion on suddenly was at the forefront. I spoke to my manager on the React Native project and told him that I would likely have to split my team between the three projects until the previous two were completed. My manager’s reply was “If you are good at what you do, it shouldn’t be a problem that you’re working on multiple projects”. This statement put me off because I didn’t like what potentially could be implied. I noted him saying that but shrugged it off and moved forward. I made arrangements to get clarifications on the other projects that I needed to work on and waited until that evening for our first meeting.
The evening came and I attended the first meeting. They spoke about particular problems they were facing and features they needed to implement. One of the engineers on the team made mention that they were having trouble implementing a feature and all of a sudden I heard “Well Chad has some capacity, he can help you with that.” I honestly froze, my anxiety levels quickly climbing but started taking notes on the feature the best I could (the notes were sparse, mostly because things were very vague). The meeting ends and I’m an absolute nervous-wreck. I now have three projects I need to work on, one in a language I was unfamiliar with and now with deliverables I was responsible for.
There were a few outstanding things from the other two projects and I needed to resolve and so I spent the morning working on that. I had already made up my mind that next week I would split my time between all the projects until I had completed the other two and could focus on the React Native app full time. After that was completed, I spent some more time in the code base looking for the feature that I was supposed to work on. I couldn’t find it, no reference in the code, no name, nothing at all. So I went into Jira to look at any tickets that were describing the feature that I was supposed to be working on. I found one or two things but nothing specific to my feature. I think I was at this for about an hour or two before I decided that it would probably be better if I got a walkthrough of the project. Felt this was going to be significantly faster than ripping the code base apart and guessing. I sent a message to my manager and explained to him the situation about needing a walkthrough of the code base and the project in general.
I spent the rest of the day waiting on his reply but he never responded.
Day 3 was more of the same from the previous day. I had not gotten a reply from my manager about the walkthrough and so I was mostly blocked. I mostly sat there and did nothing while waiting, hoping he’d respond to my message so that at least I could get working. By mid-day, I was feeling really anxious about not doing anything and so I decided to attempt to unblock myself by getting clarity on what I was supposed to be working on. I would do this by speaking to the Scrum Master on the team and hoping she’d magically provide me information I could use to get working. Unfortunately, she couldn’t meet with me until later that day and so I mostly burned the entire day doing nothing. When we finally had the meeting, the information she provided mostly was unhelpful (not her fault, I was grasping at straws at this point) so nothing changed.
We had another team meeting that evening, the intention of the meeting to groom stories for the next sprint. A few stories were brought up, trying to clarify them and sizing them before moving onto the next. We went to size the story and they asked my opinion on how long the story would take. I objected to me sizing any stories because of how inexperienced I was with the code base. My manager got upset, asking me if I had run the code and I told him that I had. My manager’s reply simply was ‘okay’ and they moved forward, more or less ignoring my objection. From then on, I guessed a sizing for each story, mostly going with whatever the group said. I just didn’t want to draw more attention to myself. During some of the clarifications and sizing, I was also assigned more tasks. This was because the feature that needed to be built needed to be delivered that week and was related to what I and my coworker were already doing. At the end of the meeting, I was seriously panicking. I had no idea what I was doing, I was being assigned things and I needed to deliver them in a few days. I still had more or less no TypeScript or React Native experience. There was a bit of light at the end of the tunnel though. In the meeting, my manager had suggested that I and my coworker should get together and go over what needed to be done. I spoke to my coworker right after and asked her when she wanted to meet.
I hoped this meeting would get me the clarification I needed.
I had my meeting with my coworker around mid-day. I remember distinctly that the meeting was 16 minutes long (that’s how long my phone said the phone call was). I had prepared questions for my coworker so that I could get started. Some of the questions were like setting up the project (I had been able to run the project but I wasn’t exactly sure about set up because there was no readme for the project). This is also when I found out that my work needed to be delivered on the next day (giving me only 4 days to deliver in a feature in a new code base). I got what I needed mostly but there were still some things that I had to speak to my manager about. I called him and went over the specifics that I needed and I vividly remember him saying this to me: ‘You are asking too many questions for a person claiming to know what they know.’ I remember wanting to quit on the spot right there. I called all manner of people because I was so distraught at that one statement. Like somehow, not knowing anything about the project from day one made me a bad engineer. A eventually spoke to a friend who really encouraged me to continue and taking his encouragement to heart, I decided to press on..
While it wasn’t the walkthrough of the code base I wanted, it was enough to get started. I spent most of the day ripping the code base up (like I was trying to avoid) and trying to build what I needed. I focused on the look mostly, trying to style things the way I wanted to and just setting up the page so that all I needed to do the next day was work on business logic. I ended the day having done a fair amount of the UI for the feature. In retrospect, it wasn’t much but honestly I was just happy to have been able to get something done.
I went to bed that night much more relieved.
I spent most of the day coding. I still didn’t know too much about the code base or how the back-end worked and what I needed to do exactly. I remember spending 2 hours trying to figure out how I would get a query from a single entity in the database. I ended up messaging my coworker about it and she told me that it would get the single entity automatically. I didn’t need to pass anything else other than an ID I needed to pass to get what I needed. Of course, that wasn’t documented anywhere so the only way I’d have known is by talking to someone. Once I had that information, the rest of the time was wrestling with TypeScript to get what I needed done.
So later that evening after I felt my feature was mostly completed, I got a message from my coworker and my manager about an emergency meeting. My manager mostly wanted to see what we did which I showed him. He then asked me for some feature I never heard about. I stammered out not knowing what he was talking about. It wasn’t a part of my notes, my coworker didn’t talk about it, it might as well have not have existed. My manager didn’t say anything for a while but just said that project couldn’t be delivered in the form it was in and he would work with my coworker to complete the project. He more or less told me to go away but that “We needed to talk”, which is code for “I don’t fucking like you right now.”
I just shrugged my shoulders and tried to replay everything that happened.
I went a full day not hearing anything but manning my phone waiting for my phone call that would either result in my firing or an intense yelling at. I was anxious the entire time and, despite my best efforts, I couldn’t really shake my anxiety. It wasn’t until the next day when I saw a random email in my inbox from Github ‘You were removed from the insert name here group’. I checked my access to the various accounts I was given the week previously. They were all revoked. I went on a deleting spree, removing the code base from my machine and any emails that corresponded to the project. I didn’t want any of it on my machine, partly to ensure I didn’t inadvertently break the NDA in the future but mostly out of a sense of purging the previous week from myself.
Never did get that call from my manager.
There are several Red Flags that I saw during my experience. Unfortunately, I don’t think I would have come across them before starting work. Here are the ones I recognized.
When being introduced on WhatsApp, no dev took the time to welcome me: Didn’t mention this in the story. When I was introduced by my manager, only the Scrum Master said hello. No other person said anything or even acknowledged my presence in the WhatsApp group or in either meeting we had. I might as well have not existed at all.
"If you are good at what you do, it shouldn’t be a problem that you’re working on multiple projects": This is both dismissive of the situation I had as well as implying that if I can’t handle this situation then I’m ‘not good at what I do’. I didn’t appreciate the implication at all.
Assigning a task to an unproven developer with no supervision: I had been on the team for only 4 days before I was given a task with a strict deadline (remember, I only had 4 days to deliver). As far as I can tell, my manager hadn’t seen me write one line of code. This implies two things. My ability to bullshit my way through an interview is high (I don’t think I have that skill) or he failed to ensure that I could deliver before assigning me any task much less a high priority one.
“We don’t try here, we do”: Also not mentioned in the story but was said after I showed a lack of confidence when first accepting the task. This is from hustle porn culture and was just another clue along with the previous statement to my manager’s expectations of engineers on the team.
Ignoring a request for help: This is pretty much where things go from being opinionated to being objectively a red flag. I asked for help fairly early on for help and more than once I was ignored. In the story, I talk about a meeting with my coworker that took 16 minutes. More or less I just needed a 16 minute sit down to unblock myself and proceed. Had I gotten that sit down when I asked for it, delivering would have been significantly easier.
"You're asking too many questions for someone who claims to know what they know.": I tend to be the person known to ask a lot of questions in a group so I took this statement as a personal insult. Despite my own personal feelings about this, it also continues to be dismissive of any issues an engineer could be having. This also was a statement made within the first week of a person starting work to the day. It is unreasonable to chastise anyone for having questions within the first week of their employment.
While I feel that it would be highly unreasonable for me to have to do these things to be successful, in retrospect, I could have done more to improve my position and maybe even actually deliver what I needed to.
Speak to my coworker much sooner: The day I found I had no idea what I was doing, I instinctively reached out to my manager to ask for help. I had no reason to assume what his eventual behaviour was, but at the very least the next day when he hadn’t gotten back to me I could have reached out to my coworker and gotten the information I needed. While this would have only given me an extra day to work, that extra day could have changed the outcome of the whole situation.
Push back against taking on tasks when they were assigned: When being assigned tasks, I could have pushed back on this. I accepted the task without saying much and I should have raised my concerns about being assigned anything. What probably would have happened is the events of the second meeting would have just happened on the first meeting. If that were the case, at the very least I would have had a better idea of what I was dealing with and more time to come up with a better plan.
Honestly I felt that this entire experience could have easily been avoided. While I obviously contributed to this situation, I feel like my manager did not set me up for success at all. The more I think about it, the more I think being put in front of a code base written in tools I didn’t know wasn’t the problem. It was the lack of time given for me to learn the tools, the code base and the project overall. I feel if I had at least a week to learn the code base or was given bug fixes or even just tests to write (something non-critical) to learn the code base, I would have been significantly better off.
In terms of lessons learned, I think these are some of the more important things:
The importance of an onboarding process: Regardless of how young the organization is, I think this is absolutely important.This potentially was a very costly week for that team and could have easily been avoided with at least some defined onboarding process. All they really needed was a one on one with a new engineer, give them a run down of the project or code base and then a quick question and answer session. The session could be maybe an hour and would allow both the new engineer and the manager to understand what each other needed to contribute to each’s success.
Get as much information as an interviewee about a position as possible: While this was an awkward hiring situation, I did not do enough of my due diligence to understand the team I was about to join. Getting this information really informs whether or not YOU should accept an offer or not. If what you learn about the team culture goes against your core values or expectations then likely you’ll not do well in that environment.
Hopefully, in sharing this experience, this will help younger engineers as they are job hunting and help protect themselves from toxic work environments such as this one. Thanks for taking the time to read this and have a good one!