Starting over again: A developer’s (first) year in review

As I hit my one year anniversary as a developer, it seems appropriate to reflect on how far I’ve come. My last year has been alternatingly hectic, slow, confusing, intimidating, tumultuous, and incredibly fulfilling. I went from being unsure where I wanted to focus my efforts — or even if software development was the right field for me — to feeling confident and happy as a backend developer.

Despite how I feel now, things didn’t start out so easy. I spent the first two months feeling largely underwater and extremely tired. I don’t think well when sleep deprived, and I was really nervous about making it as a developer. This was my first job in DC, my first job after having a child, and my first job as a programmer. Trying to get up to speed in a new environment, a new codebase, a new career, and frankly, the workforce in general, was extremely difficult.

After months working at home — working on learning projects while my daughter spent the day in day care — I was surprised at how much harder it was to manage professional work and family. Now, when my daughter was teething or woke up early, I couldn’t “give myself a break” and rest the next day. To combat waking up at 4AM, I drank coffee in the afternoon for the first time in years. It gave me insomnia — making me even more tired. So, instead of more coffee, every afternoon for the first few months, I made bathroom trips for the sole purpose of splashing water on my face and sitting down with my eyes closed for a few minutes.

Getting acclimated as a new developer was also challenging. From what I hear, it’s hard for every junior dev to find their way in their first professional job. I had a little more experience under my belt than a lot of bootcampers, but it was still intimidating.

Here’s where I stood when I started:

Things I knew

  • SQL
  • Basic Ruby
  • Basic Rails (i’d made a few applications)
  • d3
  • Vanilla JavaScript, jQuery, and React

Things I didn’t know

  • Bash / console anything
  • Most git features beyond just branching and pushing
  • TDD, beyond the most basic of tests
  • Ruby class design or anything about rails beyond active record, controllers, and ERB
  • What a rake task was

As one can imagine, those “things I didn’t know” included many skills integral to everyday work as a professional developer.

During my first few weeks, I had to quickly confront my inadequacies at the command line. I got stuck frequently and repeatedly asked for help. I wrote everything down, which kept from asking the same question again. I also heard words and saw methods I’d never seen before. I alternated between mentally noting them or asking questions which revealed how little familiarity I had with Rails conventions.

Our scrum process had devs picking out tickets they’re interested in — not being specifically assigned. I struggled to figure what assignments would work for me and help me get up to speed on the codebase. I picked up many tickets that I eventually abandoned after days of getting nowhere. I spent weekend naptime trying to catch up on reviewing open PRs.

Over time, I started to find my footing. I worked on projects that played to my strengths — like auditing and analysis. These projects increased my confidence by showing I offered something unique to the team. They also forced me to get really deep in the codebase and better understand how everything fit together. I realized it was impractical to review every PR and focused on ones that seemed relevant or I’d been specifically asked to review.

Later, an insightful senior dev — who became my team lead — started trusting me with stretch assignments. My learning and capacity took off. Instead of biting off small, isolated tickets, I was given the space to just do the work. I learned to write tests and service classes and break things down into understandable chunks. All those things I knew nothing about 8 months before started to feel natural.

Around the same time I was leveling up, we had some senior devs leave and some get promoted (i.e less time to code). Shortly thereafter, we also began development on two products. Space really opened up for junior devs to take on more complex work. I started coming up with proposals, organizing discussions, and advocating for my ideas. It felt very empowering.

Designing the data models and discussing the flow of information for these new products was really fun. I always liked manipulating data on the frontend, but I never really connected to my on-the-job adventures in frontend. As I grew more confident in my backend skills, I felt more secure about leaving conventional data analysis and frontend behind (I still use it in teaching others to code).

One year in, I’m now a mid-level backend engineer and feel really good about my trajectory. Of course, loving my job doesn’t mean things are always rosy. Sometimes I get overwhelmed or stymied by delayed code reviews. Sometimes I’m tired or distracted and have trouble focusing (open office plans don’t help). I’m still woefully lacking at the command line. My daughter stopped napping at home about 4 months ago, leaving me with 20 minutes a day for learning new technologies.

I feel constantly awkward about making decisions in the absence of well developed technical skills. Even when putting up PR’s that are 20 files long, there are often suggestions from those with deeper knowledge of Ruby or OOP about more efficient methods or more appropriate ways to structure my code. I’ve learned to mostly get over it and accept constructive feedback. I only know what I’ve already learned; there’s no reason to feel ashamed about a lack of knowledge.

Outside of the work day to day, I also feel left behind by former classmates who are already in leadership roles by this age. Nevertheless, I know I’m happier doing what I’m doing than being a VP of some administrative capacity. After a year under my belt, I know I won’t be a mid-level developer forever.