From Apprentice to Full-Time Engineer

Chislaine Cruz
6 min readFeb 2, 2023

This follows my initial post about my experience after graduating a coding bootcamp and starting my first tech job as a software engineering apprentice. Go here to read it.

The final months of my apprenticeship program left me with a wealth of experiences and insights. It was an incredible journey, filled with both challenges and triumphs, and I am grateful for the opportunities it provided me. In this article, I would like to share some of the key takeaways from my last months as an apprentice and my transition to a full-time engineer.

Culminating the apprenticeship

For the last two months, I was given achievable goals that included working on tasks more independently and reporting on my progress. My team was always available to answer questions and provide support, which allowed me to feel comfortable asking for help when needed. Despite the long and often challenging process of revising my code to make it better, I realized it was crucial for my development.

For the final month, I was given the opportunity to take ownership of a small feature from start to finish. This included scoping the project, gathering requirements, creating tickets, and working on them one by one. With the guidance of my mentor, I was able to break down the project into manageable pieces and successfully complete a full-stack form project. The project involved updating the UI design, adding field-level validation in both the front-end and back-end, migrating the database to include a new column, and backfilling existing records. It was the perfect size and scope for my skill level, challenging enough to push me out of my comfort zone, relevant to my team’s daily work, and made a real impact for our end-users. I was also responsible for testing and deploying to production, which was a daunting but ultimately rewarding task to see your code live!

At the end of my apprenticeship, I received a thorough end-of-program review and was overjoyed to hear that the company wanted to keep me on as a full-time engineer. This project marked the culmination of my journey as an apprentice and solidified my growth as an engineer.

After being offered a full-time engineer position following my apprenticeship, I was faced with a new challenge: working more independently. Without a formal mentor, I had to find new ways to grow and continue learning on my own. At first, I felt uncertain about how to create my own work, but with encouragement from my team, I began to see the opportunities available to me. I made a point to delve deeper into our codebase, researching and understanding how different components worked together. I started exploring the backlog of tickets in our project management tool and identifying tasks that sparked my interest and matched my skillset. During weekly check-ins with my tech lead, I brought up my chosen tasks to ensure I had a clear understanding of the work involved and to get approval before taking it on. This newfound sense of ownership not only helped me further my technical skills but also allowed me to take pride in the impact I was making on the team’s projects.

Working with Impostor Syndrome

I often failed to acknowledge my small victories as I gained a better understanding of my responsibilities and answers to my questions. I viewed these accomplishments as just fulfilling my duties as an engineer. When faced with a difficult task, self-doubt, frustration, comparisons, and impostor syndrome would all creep in. I often measured my progress by how many days it took to complete a task, compared to the estimate given, and felt discouraged when I realized it sometimes took me double the estimate. However, I later realized that this was not a good way to look at my progress as I acknowledge one of the reasons that it took me longer to complete tickets was due to the learning process happening behind-the-scenes.

As a remote worker, I had to rely on my own research to understand the task at hand and figure out the best way to make the change. I often felt overwhelmed by the big codebase and my limited knowledge of how the systems were designed and connected. Finding where a function or variable was defined felt like a scavenger hunt, and realizing there were many layers to keep code modular and organized, felt like a burden. It wasn’t until I continued to pair program with my teammates that I picked up on the keyboard shortcuts that would make my life much easier. I remember when I wrote on a sticky note on my desk all the common keyboard shortcuts for looking up things in the code editor. This is one example of a skill I could have picked up quicker if I had the opportunity to go into an office and watch my teammates work, but it is the fact that we all work remote that forced me to improve my communication skills and learn when to reach out for help.

I was undervaluing my progress by not acknowledging the intangible benefits I was gaining. Thankfully, my team saw my growth and never made me feel like I was falling behind, which showed that my perception of my work differed from others’. This highlights the importance of taking feedback into account. It’s essential to shift focus from the speed of completing tasks to the learning process, and to strike a balance between challenging oneself and allowing adequate time for growth and development.

Enhancing Skills and Taking Ownership

The following are my most valuable insights from my first year as a software engineer. While technical knowledge is certainly important, I believe it’s crucial to also develop the soft skills that can enhance your career growth and facilitate teamwork.

  1. How to learn: One of the best ways to learn is to spend time exploring the codebase. This means taking the time to understand the different parts of the code and how they work together. Additionally, participating in code reviews, even if it is just to ask questions, can be incredibly beneficial. It is also a good idea to read other engineers’ code reviews, as this can provide valuable insight into different approaches and strategies.
  2. Utilize all resources: There are many resources available to help you when you are learning a new skill or working on a new project. These can include internal documentation, team chats in Slack, and your own research. Don’t be afraid to use these resources to find help and support when you need it.
  3. Keep communication flowing: Communication is key when it comes to working on a team. It is important to always communicate your progress, especially when you are struggling or expect to take longer than anticipated to complete a task. A good time to do this is during daily stand-up meetings or on your weekly meetings with your tech lead. By keeping the lines of communication open, you can avoid misunderstandings, ensure everyone is on the same page, and obtain extra support if needed.
  4. Demonstrate growth: Another important aspect of learning is to demonstrate your growth. Talk about what you have learned and show excitement for taking on new projects. Question how things are currently built and don’t be afraid to ask questions when you are stuck. By doing this, you can demonstrate your commitment to learning and build credibility with your team.
  5. Ask for feedback: Asking for feedback can help you identify areas for improvement and give you a better understanding of your strengths and opportunities for growth. Additionally, ask other engineers about any tools they use to be more productive, as this can help you find new and better ways to work.
  6. Overcome impostor syndrome: It is common to experience impostor syndrome, especially when you are just starting out in a new role. To help overcome this, it is important to celebrate small wins and trust that you will figure things out when they’re challenging. Chat with senior engineers about their tech journey and how they started learning as this can be inspiring and motivating.

As a junior software engineer, the journey of growth can be both challenging and rewarding. The steep learning curve, vast codebases, and seemingly endless technical terms can be overwhelming, but it is these very challenges that provide the opportunities for growth and development. Overcoming impostor syndrome is an important part of this journey, as it is common for new engineers to feel like they are not up to the task or not as competent as their peers. However, by taking advantage of all available resources, continuously asking questions, receiving feedback, and celebrating small wins, one can not only overcome these obstacles but also grow into a confident and skilled engineer. As you navigate your way through the exciting world of software engineering, remember to trust yourself and always keep learning, your journey is what you make of it. So embrace the challenges, find inspiration in your peers, and never stop growing!

--

--

Chislaine Cruz

👩🏽‍💻 Software engineer with a passion for solving problems and mentoring engineers. Founder of www.careerpathy.com