Bridging the Skills Gap: Empowering Junior Developers Through Apprenticeship Programs

Published:
October 3, 2024
October 3, 2024
Updated:
October 3, 2024

Introduction

Junior developers struggle to land their first jobs due to their lack of experience working on a team and familiarity with all the procedures and methodologies involved. But how can they gain this experience if schools, boot camps, and self-taught programs do not include it in their curriculum?

In this special guest issue, tech industry experts Matt Lawrence and Mike Karan are excited to present insights from the esteemed Shashi Lo, who tackled this conundrum head-on by starting an apprenticeship program!

Topics covered in this article include:

  • The challenges junior developers face in gaining real-world experience
  • The benefits of apprenticeship programs and open-source projects in bridging the skills gap





Article Concept Overview

Problem:

Self-taught, bootcamp, and college graduate web developers often lack experience in critical processes and methodologies, such as working on a team with other developers, stand-ups, Agile practices, version control, code reviews, testing, client communication, and more. This lack of experience makes it hard for them to get their first job.

Solution:

Apprenticeship programs and open-source projects offer hands-on experience and mentorship, helping developers gain practical skills. These programs bridge the gap between theory and practice, ensuring developers are skilled in teamwork, Agile practices, version control, code reviews, testing, client communication, and more. This experience makes it easier for them to get their first job.



About Shashi Lo

Shashi Lo is a Senior UX Engineer at Microsoft and the founder of the Gridiron Survivor project. With extensive experience mentoring junior developers, Shashi focuses on bridging the gap between students' completion of education and landing their first tech job.

Shashi is renowned for his proactive approach to mentoring, which emphasizes code reviews, project communication, and de-risking junior candidates. His dedication to building a community of learners and his efforts to encourage the next generation of developers highlight his commitment to the tech industry.



Where Developers Struggle

As Shashi continues interviewing candidates and reviewing many junior engineers' portfolios, he notices a common thread: a significant skill gap. This gap stems from a lack of real-world team experience, which isn't usually part of a curriculum. As a result, portfolios and projects often do not meet industry standards, and developers find it challenging to adapt to a team if they are fortunate enough to land a job without preexisting team experience.

Key Areas Where Developers Struggle:

  • Real-world Team Experience: Practical exposure to working within a team, which is often missing from educational curriculums.
  • Portfolio Quality: Many portfolios lack industry-standard projects, making it difficult for developers to showcase their skills effectively.
  • Adaptability: Developers struggle to adapt to team environments due to a lack of prior experience working collaboratively.
  • Industry Standards: Projects and portfolios often fall short of the quality employers expect, hindering job prospects.

Having team experience gives you a competitive advantage in the job market. It makes it easier for you to adapt to a company’s workflow and reduces the risk associated with hiring junior developers.

To address these challenges, Shashi has taken proactive steps to provide developers with the guidance and resources they need to succeed.



The Importance of Constructive Feedback

While receiving praise for your work on social media is motivating, it's a disservice if you do not also receive constructive feedback. Shashi noticed a trend on Twitter where people praised others' sub-par works without advising them on their shortcomings and what needs improvement.

This unproductive feedback from the tech community inspired Shashi to start giving portfolio reviews to ensure developers receive proper guidance on where to improve and direct them toward the resources they can use to improve. One such resource is Frontend Mentor, which offers real-world projects and challenges to help developers build their portfolios and receive constructive feedback from the community.

Without proper constructive criticism, you will set yourself up for failure, as hiring managers will not share the same optimistic view of your work as your friends on social media!



Apprenticeship Programs

Apprenticeship programs allow junior developers to work on a team and learn about version control, code reviews, testing, client communication, and more. Participants engage in team projects, practice Agile methods, and receive ongoing feedback. This practical experience makes them more adaptable and better prepared to meet industry standards, increasing their chances of landing their first job in tech.

However, finding and joining an apprenticeship program can be difficult, as not all companies offer them, and many are phasing them out.

Once again, in his efforts to help inexperienced junior developers gain a much-needed competitive advantage, Shashi proactively created an apprenticeship program. The team consists of primarily self-taught and bootcamp developers, and they are currently working together on a SaaS product called Gridiron Survivor.



What is Gridiron Survivor?

Shashi's friend created a spreadsheet for an NFL survivor pool, but the current system could be more efficient. This inspired Shashi to develop an NFL survivor pool as a SaaS product with many features and enhancements, including AI!

Shashi and his team of junior developers in his apprenticeship program are currently working on developing the Gridiron Survivor App. You can follow their journey on Shashi's YouTube Channel.



How to Participate in Gridiron Survivor

A survivor football league is a fantasy football league where participants pick a team they believe will win each week. The twist is that once you choose a team, you cannot select that team again for the rest of the season. This adds a strategic layer to the game, as you must carefully plan your picks to ensure strong teams are available for the later weeks.

In a typical league, players get five entries to make their picks for the games that week. These entries belong to the specific league but are treated as separate instances.

For example, if you pick the New York Jets in League 1, Entry 1, you can still select them again in League 1, Entry 2. However, the following week, you cannot pick the New York Jets in either entry for that league.

To get the most out of the experience, it is recommended that you join two or three leagues. The idea is to make your picks before 8 PM EST before the first games of the weekend begin. On Tuesday mornings, the league will roll over to the next week, allowing you to make your picks again. This cycle continues throughout the football season, providing an engaging and strategic fantasy football experience.

The Gridiron Survivor Project

Here are the links to the project:



How Can I Join an Apprenticeship Program

When Shashi’s apprenticeship program team members are hired, positions become available, and new members are brought in. Be sure to follow along and apply when they’re accepting new team members!

You can also find apprenticeships on company career pages, job sites like LinkedIn, Indeed, and Glassdoor, through coding bootcamps, and by networking at industry events. Be proactive and use multiple resources to find the right program.

Alternatively, you can gain team experience by participating in open-source projects. These projects let you collaborate globally, contribute to real-world software, and practice version control and code reviews. Platforms like GitHub and GitLab host many such projects. Engaging in them helps build your portfolio, improve coding skills, and gain valuable team experience, making you more attractive to employers.



Missing Skills & Experience

What skills and real-world experience are junior developers missing?

Lack of skills and experience include:

  • GitHub (version control)
  • Researching solutions
  • Working on a team

Version control

Surprisingly, Shashi points out junior developers lack GitHub (version control) skills. The inability to clone, fork, pull, push, and resolve merge conflicts professionally becomes evident when they work on a project with a team for the first time.

An excellent resource for getting started with Git is Learn Git Branching. This interactive web-based platform is designed to help users understand and practice Git version control concepts through visualizations and hands-on exercises.

Researching solutions

Another skill junior developers need to gain is researching solutions. Although AI is in its infancy, it is already the primary go-to research tool. The problem is AI is not always accurate and has limitations, especially if you're not permitted to use it. Shashi tells us that if you go to your manager and ask for solutions and receive them, you will keep going to your manager for solutions. However, if you learn to research solutions independently, you will gain independence and will not have to seek assistance continually. Shashi recommends researching the tried and true old-fashioned way: learn to read the docs!

Working on a team

As mentioned earlier, junior developers often lack the necessary skills and knowledge of team procedures and methodologies since most curriculums do not include teamwork.

The upcoming sections will provide insights into teamwork procedures, methodologies, and the cultural adaptation required when joining a new team to better prepare you for the experience you're destined for!



Workflow of The Team

For the Gridiron Survivor project, Shashi’s apprenticeship team is divided into three groups: Back-end Engineers, Functional Front-End Engineers, and UX Engineers, plus an industry designer and Shashi, for a total of five groups.

When a team member gets stuck, Shashi encourages them to reach out to other team members first. In the real world, you will need to be proactive and resourceful. It would help if you shied away from seeking help from your manager as they will be very busy with other work—seeking help from your manager should be a last resort. Reaching out to team members in varying departments also has the added benefit of better understanding how the product works as a whole.

Another factor is the quality of the code written by the team—if it is not up to industry standards, it will not be accepted. Code reviews and testing are performed to help vet the quality. Yes, testing! As a self-taught developer, I understand that testing is a low priority when learning web development. But once you’re in the big leagues, it’s standard procedure, and you will benefit by learning testing procedures early on.

I discussed the Gridiron Survivor workflow with two members, Ryan and Richard. To understand how a tech team works, you must first understand a few key terminologies, which I will cover in the next section.



Understanding Key Terminology

Agile

Agile is a project management ideology that emphasizes flexibility, collaboration, and customer feedback. It ensures the development team continuously releases new features, bug fixes, and updates while incorporating user feedback. Agile methodologies, such as Scrum, focus on iterative development, where work is divided into small, manageable increments called sprints. This approach allows teams to adapt to changes quickly and deliver high-quality products efficiently.

Ticket Assignment

Tickets are tasks or issues that the team needs to address. They are assigned based on the work required and the team member's role and skills. Tickets help organize and prioritize work, ensuring everyone knows what to focus on.

Sprints

A sprint is a set period, typically two weeks, during which a team works to complete specific tasks. It is a core component of Agile project management, allowing teams to deliver work in manageable increments and continuously improve through regular feedback.

Scrum

Scrum is a project management method that includes organizing the backlog, planning sprints, conducting the sprint, async updates, standup meetings, live streams, and retrospectives. To ensure continuous improvement, the development team is separated into cross-functional groups, such as UX Engineers, Frontend Engineers, and Backend Engineers.

Asynchronous Work

Asynchronous work means that team members do not need to be working at the same time. This is particularly useful for teams spread across different time zones or schedules. Communication and updates are often handled through tools like Discord, where availability and progress can be posted and reviewed anytime.

Meetings

Standup meetings are relatively short (15-30 minutes) and include all team members. During the standup, team members discuss what they are currently working on and any pain points they are experiencing and ensure everyone is focused on the most critical tasks. Other meetings may be internal or streamed to showcase new features.

Livestreams

Team livestreams occur every other week to showcase new features, discuss progress, and engage with the community.

Unit Testing

Unit testing involves testing individual components or features to ensure they work as expected. Tools like React Testing Library and Jest are used for this purpose. Unless otherwise directed, every new feature or component must include associated tests.

Code Reviews

Code reviews are a process where team members review each other's code to ensure it meets quality standards. When a ticket is complete, a PR is opened on GitHub, and a thread is created in Discord for review. Each PR requires approval from at least one GIS member and Shashi. All questions must be answered, and comments prefixed with "nit" are optional.






Team Workflow and Procedures

Now that we’ve covered the key terminologies of Agile methodologies let’s examine the junior developers' workflow for the Gridiron Survivor project, outlined by team member Ryan Furrer.

Gridiron Survivor Routine

  • Ticket Assignment: Shashi or Jason assign tickets based on the work required and the team member's role/skills.
  • Sprints: Typically last two weeks and are conducted in an agile scrum environment. Weekly releases are aimed at Tuesdays or Wednesdays.
  • Scrum Updates: Scrum updates are managed through a Forum channel in Discord where members post updates, requests for help, and PR reviews.
  • Asynchronous Work: Due to different time zones and commitments, team members work asynchronously, posting their availability weekly in Discord.
  • Meetings: 1-2 meetings per week. Tuesdays are internal standups, and Thursdays are internal or streamed meetings to showcase new features.
  • Livestreams: Team livestreams occur every other week.

Unit Testing

  • Tools: React Testing Library and Jest are used for unit testing.
  • Workflow: Unless otherwise directed by Shashi, every new feature or component must include associated tests. The project and sprint board on GitHub are used for tracking.

Code Reviews

  • Process: When a ticket is complete, a PR is opened on GitHub, and a thread is created in Discord for review. All GIS members are tagged for review.
  • Approval: Each PR requires approval from at least one GIS member and Shashi. All questions must be answered, and comments prefixed with "nit" are optional.


Challenges of Joining A Tech Team

Now that we have covered the technical aspects of working on a team let's examine the challenges you might face when joining one for the first time.

Properly handing tickets

When assigned a ticket, you are expected to complete it within the agreed-upon time—also allow extra time for your ticket’s review. The code submitted must adhere to best practices and pass testing, if applicable. You should also remove console logs and unnecessary remarks.

You must also strictly adhere to the ticket’s tasks; this is not the time to go above and beyond! Deviating from the ticket’s tasks will result in wasted time, as your additions will not be accepted. Instead, opt to suggest a new ticket for your additional suggestions. This way, all ticket tasks will be handled and documented appropriately.

Sometimes, you and another team member are assigned to work on the same component (React); one team member works on the front-end coding, while the other on the back-end coding. In these situations, communication is imperative for completing the ticket’s tasks.

Properly submitting pull requests (PR)

When you’ve completed your ticket to the best of your ability, submit your pull request. You can submit your PR early or on time. If you know you will need more time to complete your ticket, be sure to communicate with your team as soon as possible. Do not rush and submit a PR that you know does not meet industry standards and/or fails tests. Mistakes happen, but repetitively submitting unready PRs disrupts the project and your team—your reputation is on the line!

Properly communicating with your team

People have different personalities, personal issues, available time, and unique communication styles. It would be best to understand this insight upon joining a team. It will take time, but once you get to know your team members, you will learn how they operate, making it easier to communicate with them.

Daily syncs

Daily syncs are team meetings that allow you to provide updates on what you are working on, your current progress, and an opportunity to ask for help if you are stuck. Quality check-ups to see how everyone is doing allow for the project as a whole that you are working on to stay on schedule.

These meetings are where your people skills will be put to the test! You will need to convey, in a professional manner, any difficulties you are having. This can be especially challenging if one of your team members is not pulling their weight, and it is brought to light during the meeting. You will need to tactfully detail where your teammates are struggling and provide constructive criticism on how you can help them get back on track so the team can complete the project on schedule.

1-on-1s

1-on-1s are precisely what they sound like: one-on-one meetings with your manager. These sessions typically cover professional development, personalized feedback, project management, personal issues, and team culture. They are meant to be a more personal and refined review to see where you need improvement and potentially pivot your career path, as they did with one Gridiron Survivor member, Richard Choi.

Richard expressed how much he enjoyed writing documentation during his 1-on-1, which led to a change in his role on the team and, ultimately, his hiring by Appwrite! At Appwrite, he was tasked with writing the documentation for their exclusive mechanical keyboard, The Appwriter.

🔗 Richard Cho’s keyboard docs link: https://appwrite.io/docs/tooling/appwriter






Apprenticeship Program Members are Being Hired!

Richard Choi was one of many apprentices from Gridiron Survivor who landed a job. Melissa Averinos, Adam Morsa, and Jennifer Tieu were hired by companies thanks to their valuably gained team experience, learning in public exposure that the program provides, and strong endorsement from Shashi.

As current team members are hired off, new members are brought into Shashi’s apprenticeship program. So be sure to follow along with the program’s progress and Livestreams to see when there are openings to join. At the time of this article’s release, there are four openings! ( I applied and was accepted! )

How to apply to join the Gridiron Survivor apprenticeship program:

  1. Direct message Shashi on Twitter.
  2. Tell Shashi about yourself, what you’re currently working on, and what you are passionate about.
  3. Why do you want to join the Gridiron Survivor apprenticeship program.

Additional tips:

Shashi is looking for motivated individuals who want to work in a team environment.



Testimonial

“Thanks to Gridiron Survivor, I was able to be more comfortable and familiar with working at Appwrite because I was already familiar with many of the elements of working in a corporate environment with developers, such as sprint boards, retrospectives, asynchronous and synchronous communication, setting ticket priorities, managing ticket timeline deadlines, etc.

Gridiron Survivor also helped me became more comfortable taking initiative and reaching out to any of my team members, even if they were not in my immediate team, which proved to be useful when joining Appwrite, where I had to reach out to members in the growth team or the sales team.”

- Richard Choi



Alternative Apprenticeship Program Experience

As mentioned earlier, open-source projects are a great alternative if positions in apprenticeship programs are unavailable.

To become a sought-after, low-risk, hirable developer, you need to gain team experience, get plenty of exposure, and seek endorsements from your peers. Participating in open-source projects will help you attain this!



Gridiron Survivor Sponsors



Gridiron Survivor Team Members

The asterisk (*) next to team member’s names implies that they are no longer actively working on Gridiron Survivor but were a part of the core team getting the alpha released to the general public.



Shashi Lo

Founder



Alex Appleget

Functional Engineer



Richard Choi Developer

Relations Engineer



Ryan Furrer

UX Engineer



Walter Furrer

Documentation Engineer

  • X: Walter Furrer (@furrerw)


Carlos Luevano *

Pending clarification

  • X: Carlos L (@clue355)


Corina Murg

Accessibility Specialist

  • X: Corina Murg ! (@CorinaMurg)


Chris Nowicki

Software Engineer



Jayna Sinn

UX Designer



Jennifer Tieu *

Frontend Engineer



Jason Torres *

Technical Program Manager



Mai Vang

Frontend Engineer



Eduardo “Eddie” Vazquez *

Software Engineer



Cody Epstein

UX Engineer



Danielle Lindblom

Frontend Engineer



Michael Larocca

Documentation Engineer



Shashi’s Links

🔗 Twitter

🔗 LinkedIn

🔗 Github

🔗 Development Blog

🔗 YouTube



Be sure to listen to the Podcast episode!

🎙 Mentoring Developers with Shashi Lo

Be sure to check out HTML All The Things on socials!



Learn with Scrimba!

Learn to code using Scrimba with their interactive follow-along code editor.

Join their exclusive discord communities and network to find your first job!

Use our affiliate link for a 10% discount!! (Discount valid until the end of 2024)

  • Click the link and take a look around at the new Scrimba 2.0!
  • Make an account
  • You'll then have the option to upgrade to pro content (and you should see our 20% discount listed!)
  • Discount is for new accounts only

This article contains affiliate links, which means we may receive a commission on any purchases made through these links at no additional cost to you. This helps support our work and allows us to continue providing valuable content. Thank you for your support!



Sponsored content: The original publisher kindly sponsored this article, allowing me to share my expertise and knowledge on this topic.



My other related articles



Key Points

  • Companies hesitate to hire junior developers because they lack team experience, making onboarding challenging.
  • Junior developers often need real-world team experience, making landing their first job difficult.
  • Apprenticeship programs provide hands-on experience and mentorship, ensuring developers are skilled in teamwork, Agile practices, version control, code reviews, testing, client communication, and more.
  • Participating in open-source projects is an alternative way to gain team experience and industry procedures.
  • Joining apprenticeship programs, participating in open-source projects, gaining exposure by learning in public, and receiving endorsements from industry experts will all greatly assist you in landing your first job in tech.


Conclusion

As a junior developer seeking your first job, you may find it difficult to land one due to your lack of real-world team experience and familiarity with industry procedures. Companies favor prospective employees with this experience because they are easier to onboard.

Joining an apprenticeship program is an excellent way to gain experience working on a team that follows industry procedures. In such a program, you will learn about version control, code reviews, testing, client communication, Agile practices, teamwork, and more. This hands-on experience will make you more adaptable and better prepared to meet industry standards, increasing your chances of landing your first tech job.

As an alternative to apprenticeship programs, open-source projects are an excellent way to gain team experience and industry procedures that companies seek in potential employees. Participating in open-source projects also gives you the advantage of learning in public, demonstrating your skills and work ethic, and helping grow your online presence, aiding you in becoming a sought-after and hirable developer.

You can expect to face several challenges once you join a team for the first time. These include adapting to established workflows, effectively communicating with team members, and managing assigned tasks within deadlines. You must also quickly learn to navigate tools in a team environment, like version control systems, participate in daily syncs, and handle code reviews. Additionally, understanding and fitting into the team's culture and methods, like Agile practices, can be challenging but are essential for working well together and finishing projects successfully.

Understandably, apprenticeship programs might be an option for you. So, open-source projects are an excellent alternative to apprenticeship programs. Your goal is to gain team experience, exposure, and peer endorsements, which will reduce the risk for potential employers and give you a competitive edge when applying for junior developer positions!



Let's connect! I'm active on LinkedIn and Twitter.

You can read all of my articles on selftaughttxg.com

Written by...
Michael Larocca

Front-End Web Developer | Writer | Musician

More to Read...