Prior to January of 2020, I had never worked as a professional software developer. I had been involved in quite a lot of development, but only personal projects or solo projects for Boise State University when I was the IT Manager of the Parking department there. In other words, no project that had any visibility on the code outside of my own eyes.
I was offered a position with the development team that serviced my former employer after I had turned in my notice to that employer, and I decided to take the leap. It was not an easy decision. Though I am a pretty smart guy and can pick things up quickly, I knew that being part of a development team would be a much different proposition than simply developing my own applications. For starters, I was aware that my coding style (being self-taught) was not the most refined. And also, this team almost exclusively develops using the Laravel framework, which I had never used. I had never used any coding framework, for that matter.
In fact, prior to this, I had not even done much object-oriented programming (OOP). The entirety of my MyTrax GPS software is created using procedural coding styles. Being a “pretty smart guy” was basically my entire job qualification.
It was a struggle. For the month prior to my first day of work, I spent every free moment on tutorials building Laravel applications, and learning how to use Docker for my development environment. It was the proverbial firehose of information, and by the time I started my first day, I was still only semi-confident I could do the job. I was like a child nervously approaching the turnstile to the roller coaster wondering if I was big enough yet to ride, feeling like maybe this was a huge mistake.
Fortunately, I almost immediately got moved over to part of the team that works on the mature, sprawling enterprise application I had formerly worked with as operations/QA. This application uses a combination of legacy procedural code, standard (non-framework) OOP, and also the Laravel framework, so I got to work my way into things to a degree.
Now, at the end of a year as a full-time developer, I am fairly confident with Laravel. I am very well versed in OOP, though my coding style is still less heavy on abstraction when compared to my peers (I like keeping code in one place, as opposed to making a bunch of tiny, specialized classes). I am not a great developer, but I’m pretty fast, and I also have the ability to grasp use-cases in a way that leads to more functional applications that require less refactoring after user tests.
The first few months were great. I was establishing myself as a guy who gets things done. My productivity was through the roof, to the point where the backlog of tasks to work on had to be enhanced. Things that were previously written off as “wish list” items were getting dusted off and completed. I felt great. I was of value.
Then, COVID happened. The company that pays us for that application had their business severely disrupted, and as a result had to cut their contract with us by 50%. Suddenly, my company had to evaluate who, at minimum, could work on the project to keep it alive. I was not on that list (understandably). I got transferred out of that project, and onto other projects: other projects that did not involve large amounts of legacy code, and thus had stricter coding standards.
Suddenly, I was again the child approaching the roller coaster. “You must be this tall to ride.” I believe the term “imposter syndrome” applies here. I had talked my way into a job, somehow managed to do it for a few months, but now here we are getting to the stage where I would be exposed for the fraud I am.
It was touch and go, I feel. I was paired with two much more senior developers who did not have a lot of patience for my lack of experience. I was frequently told, rather rudely, that they would not have approached a thing the way I did (even though it was functionally the same). I had days where I would stare at the code, sifting through files, having absolutely no clue what any of it did. My productivity suffered. I really wanted to just get back to the project where my comfort level was high and I felt of value every day.
Perhaps that sounds like a lazy attitude. It kind of does to me as well, and I suppose in a way it is. I had made a monumental effort to get to this point, so what was stopping me from making an equal effort to rise to this new challenge? I think, in part, it comes down to burnout. You can push yourself hard for a while, but at some point if you can’t ease back, you’re going to get tired. Add the stress of this new work to the stress of the post-COVID world, and some other personal stuff I won’t get into at the moment, and well… I guess I have to give myself a pass for feeling a little lazy.
That said, I pushed past it, mostly, and managed to keep my footing with the projects I was assigned. I won’t say I out-coded anyone, because I certainly didn’t do that. But I managed to make a meaningful contribution to the project in a way that met the client’s need even if it did not meet the high standard set by the original developers. I learned a lot, including things that had greatly intimidated me. I spent less time staring at code, confused, and more time working on problems.
Now, I have been assigned as the lead developer on a project. I was assigned this project because it is for that same client, the one I used to do Operations for, so I am more familiar with the use-case and details than anyone else. I have been asked to approach the project in a way that I find challenging, but not beyond my capabilities. I put in a few weeks work, and felt really good about it.
But then, everything changed.
It has been decided we will use a couple of technologies on this project that are not just out of my comfort zone, but are foreign concepts to me. Foreign to the point where when my team talks about them, I understand nothing. It’s like showing up for a college course, and when the professor starts speaking you suddenly realize you must have signed up for a class with prerequisites you did not take yet. Oopsie. If this was a college class, I would be checking the syllabus to see if it was too late to drop.
I approach the rollercoaster again. This time, that sign looks suspiciously way too fucking tall.