I’m a self-taught developer, and I successfully taught myself to build web apps. But one thing you can’t teach yourself is how to work with coworkers and how to solve problems with pair programming. I often see members of the self-taught community—myself included—overlook learning good teamwork skills when trying to level up from being a beginner. I believe this is mostly because learners aren’t given clear direction for learning team skills—everyone talks mainly about technology-based resources.
Sparkbox’s Full-Stack Apprenticeship was my first opportunity to be in an office and to work with teammates. So my solo workflow had to change, but how? Along with working on my developer skills, I had to grow my communication and collaboration skills. Here are some tips that helped me grow, and hopefully they can help you as well.
Step 1: Find Support
A lot of learning happens when you get access to actionable feedback from a mentor or team member. Most of the time, this will be something that you have to reach out and ask for, but it will be the most beneficial.
Find a Mentor
Even if you don’t work at a place that assigns mentors or are still learning development, you should still seek them out from your network or from a service that connects you to people looking for mentees like codingcoach.io. Once you find an experienced member of your team or a more experienced friend, ask them to meet with you regularly—at least once a week. This way you can keep track of your progress and context from meeting to meeting. Interacting regularly with this person will help you identify your areas of weakness and grow your teamwork skills.
At Sparkbox, each apprentice is assigned a mentor at the start of the program. The accountability and support that came from this really helped me the most in my goal of learning to be an effective teammate. During weekly check-ins, we would discuss various topics like areas for improvement, goals, and any help needed on a task. For example, early on my mentor and I noticed I wasn’t taking all the opportunities to reach out and pair. We then came up with a plan that helped me identify signs where reaching out to a coworker was beneficial. Then we used some of the weekly check-in time to keep track of my progress in this growth area.
Ask For Feedback
Most companies provide a periodic formal feedback framework that allows you to easily get advice from teammates—but its infrequency might not be enough. Instead, you should actively ask for feedback that’s specific to your work at that specific time.
During the Sparkbox apprenticeship, mentorship was facilitated with monthly apprentice reviews where a mentor would give me feedback based on what they saw as I worked through tasks. These monthly reviews invited more team involvement and conversations, both helping me practice team communication and pointing out more areas for growth. Between the monthly formal reviews, I specifically asked for feedback from my mentor on specific issues. Mentorship gave me the chance to discuss current tasks and how we both thought they were going, which changed the way I reflected on completed work and my areas for improvement.
Step 2: Find a Structured Workflow
Getting into a good workflow makes it easy to stay productive and organized, which is key to learning while working on a project. This also allows you to complete projects while making sure you hit each learning goal you have.
Choose an Approach
You’ll want to have some sort of project tracking to keep yourself aligned with your project and learning goals. This can be as simple as a Trello board, the default GitHub issue tracker, or using an agile framework (such as in tools like Jira) in a more professional setting.
Sparkbox uses an Agile framework called scrum to facilitate all of our projects, even for the apprenticeship. In this framework, we have daily standups, a timeboxed short meeting for teammate updates, retrospectives, and demonstrations at the end of each work cycle. This structure not only gave me practice interacting with the team but also improved my speaking with demonstrations and allowed me to reflect on my learning process with retrospectives.
Learn to Manage Your Time
No matter which workflow structure you choose, being able to use time effectively is important. One way to use time effectively is timeboxing: setting a specific time window to work on a task and asking for help if the task is not done within that time frame. This strategy keeps you from spinning your wheels forever without getting anything done. Pairing for help also opens up a chance for you to get pointers on different aspects of the problem, helping you understand it better.
This was a hard switch for me because I previously had no hard deadlines—I did mostly learning projects and freelance. But in the Sparkbox apprenticeship, my co-apprentices and I got to tackle projects with deadlines as a team using pairing, breaking down tasks in Jira, and daily stand-ups to work through challenges. Weekly check-ins and pair-friendly environments helped me get into a flow where once something was taking too long, I would think “Hey this is taking more time than I thought. I’ll work for 30 more minutes, and I’ll then reach out.”
Step 3: Find a Project for Consistent Practice
Project-based learning allows you to incorporate a project’s end goals with your learning goals. This keeps your learning on track with consistent work, allowing for practice with an end goal. GitHub has active lists of beginner projects to help you choose what to work on, but the main idea of project-based learning is to take a piece of tech you want to learn and use it to make a project. For example, if I wanted to learn JavaScript, I would learn some basics and then make a Twitter clone.
Get into the Project-Based Learning Mindset
I recommend taking your software development to the next level by working with some basic project management tools and teammates. This can be a professional setting like an apprenticeship or working on a small project with some friends.
During the Sparkbox apprenticeship, we were given a project to work on, so we went over requirements and actually broke down tasks as a team. We were able to get a simple project document from the team leads and discuss the project like we would with actual client work. So with that, we were able to apply all of our previous knowledge and use the requirements as a guide to learn more. I grew the most in terms of being a teammate with daily standups and weekly demonstrations because I was interacting with the team frequently.
Demonstrate Your Progress
Communication will become important for collaboration while working on real projects. It opens the floor to specific feedback. One way to facilitate this is through regularly scheduled demonstrations, where you explain your progress at the end of a set of tasks. This will also allow you to get practice with actual demonstrations to a client and get better at explaining your thoughts.
With the Sparkbox Apprenticeship, we did weekly demos of our progress to the whole team. I found that presenting my learnings often (usually at the end of a sprint) helped me get good repetitions for practicing writing outlines, organizing thoughts, and speaking. Even though demos are common in the Agile process, you do not need to use the Agile workflow. Just take some time to present after each increment of work to anyone who will listen, like a mentor or a friend.
Go Forth and Collaborate
I learned a lot from my apprenticeship. During that time, I experienced working in an Agile flow using tools like Jira while learning HTML, CSS, and JavaScript. However, learning to work with a team was one of the more important experiences for me. These skills—especially efficiently pairing with another developer to solve a problem and explaining to the team where I’m blocked and my current progress—are so important to my current professional work, and I’m grateful that I had the opportunity to learn them. There are so many moving parts to working in web development: good teamwork is key to keeping a project moving forward.