Side projects are a great way to develop teamwork, build culture, and bring a remote team together.
We love remote work at Kohactive. Half of our team works remote full-time and the other half works from home at least one day a week. Working on a remote team has some downsides, though. The most common challenge is fostering camaraderie among teammates who don't work in the same office, city, or even time zone.
The best way we've found to bring everyone together and renew the team's passion for collaboration is by working on an internal side project everyone can contribute to. It has helped us explore new technology and give back to the open source community that we rely on almost every day.
For The Culture
Culture is the best reason to start a side project. This project should be fun and low-risk for the team. There shouldn't be any expectation to monetize or promote the product, as it will detract from the purely cultural benefits of collaborating on something with high excitement and low expectations. It's super important that everyone on the team can be equally involved, especially if you dabble in client work. It can be tough to sync up schedules, but it's worth the extra effort to find a time that works for everyone.
If you do client work, as we do at Kohactive, a huge plus to working on an internal project is the ability to unify teammates around a common project. Often times, members of the team can be spread across multiple projects. Having this one project in common helps us feel that we're working closely as a team, even if we aren't on the same project or in the same office.
Keeping the project low-risk creates opportunities to pair program or work with a mentor/apprentice in an environment with less pressure. Removing external factors like deadlines and client expectations allows us to focus deeply on the project and problems that need to be solved. Even though the work should be low-risk, it's important to use good project management practices. Code reviews and standups help ensure code quality, reinforce good habits, and ensure everyone has time to contribute.
For Exploring New Technology
Some of our best side projects have come to be just because we wanted to test out a new framework or integration before recommending it to a client. One of the most fun things about internal side projects is the ability to branch out from the tools you usually use and evaluate new ones in a safer environment.
New tools that are evaluated in a side project have advantages over one developer using them and then training the team. When used in your internal project, the whole team will be exposed to the tool and the decision to adopt or abandon will be a more democratic process. Implementing a tool in your side project will also allow for more time and experience with that tool than if it were quickly introduced on a new feature.
For Giving Back to Open Source
As software developers, we stand on the shoulders of giants by using popular free open source software. It's important for us to give back to that community when we can. We've found that one of the best ways to dedicate time and resources to that effort is by making it part of our side projects.
The easiest way to give back with your project is to open-source the whole darn thing, but if you're not comfortable with that idea, you can probably find some functionality that can be abstracted and distributed. Recently, when we started a new internal project, we realized that our current method for starting new EmberCLI apps was, in a word, bad. We decided to refactor our "base app" into an addon called ember-kohactivated and publish it to NPM. As we continue to develop the actual application, we will identify opportunities for other abstractions.
Internal side projects also help us give back to each other as well. We grow together as a team, helping our individual skills improve as we learn new things to build things we all can use. We can experiment with changes in our process and collobaration tools. Even if the team is split on different client projects and time zones, side projects provide an opportunity to bring the team together.