The Challenge of Practicing and Learning New Skills
As a developer, you may have acquired valuable skills that you don’t often get to practice or explore further due to the limitations of your daily job. Perhaps you’re frustrated with only utilizing a small portion of a framework’s features, or maybe you’ve heard about an exciting new language that aligns perfectly with your aspirations but can’t incorporate it into your current work.
Benefits of Side Projects
Side projects offer an excellent solution to these challenges by enabling you to learn new skills and reinforce existing ones in a practical manner. For instance, as a backend developer, you can venture into front-end development, or as a front-end developer, you can explore mobile development. By undertaking a side project that involves developing an application and implementing both the back-end and front-end aspects, you can broaden your skill set. You may even choose to set up continuous integration and delivery for added experience. Starting with familiar skills instills confidence, while the goal of independently creating a project from start to finish fosters determination.
However, embarking on side projects isn’t solely driven by the desire to acquire technical expertise. They also serve as a means to learn non-technical skills. While your job may involve working on a small part of a larger project, side projects require you to have a comprehensive understanding of the entire undertaking. You’ll consider architectural decisions, publication strategies, and maintenance requirements. Taking charge of your project grants you a holistic perspective, including a deep understanding of your users’ needs.
Two Categories of Side Projects
Side projects fall into two categories. The first category focuses on learning or reinforcing a specific skill, such as mastering a new language or experimenting with a framework. In these cases, the project’s actual utilization may not be a primary concern. The second category revolves around pursuing ideas or addressing problems where technical considerations take a back seat to the overall concept. Here, it’s best to leverage the technical stack you’re most familiar with. Both types of side projects offer valuable learning experiences. Even if you are already proficient in your chosen stack, applying it to a new project presents unique challenges. Additionally, immersing yourself in the user’s perspective can be easily overlooked in professional settings where intermediaries often shield developers from direct user feedback.
Therefore, it’s perfectly acceptable if the technical skill you aim to learn through your side project only represents a small portion of the overall endeavor. For instance, suppose you wish to explore a new state management library for web applications. Although this library may only consume 10% of your time, the experience gained by utilizing it in a real project surpasses that of following a tutorial.
Releasing Your Side Projects
Releasing your side projects is crucial for their ultimate success and usefulness, both in terms of what they teach you and their potential impact on users. Making your projects accessible to at least a few users, such as friends or a select audience, encourages you to prioritize the essential aspects rather than becoming bogged down in details, which can lead to project abandonment. Furthermore, even if your project isn’t overly ambitious, unexpected success can provide significant motivation to continue its development.
Start Small and Focus on Minimal Viable Product (MVP)
When starting a side project, it’s advisable to begin with a small scope. Your initial goal should be to release a usable product, even if it lacks certain features. This concept is known as the Minimal Viable Product (MVP), which focuses on providing a solution to the user’s problem. Once the MVP is ready and available to users, you can devote ample time to adding additional features and enhancing the application’s aesthetics. (It’s worth noting that side projects often suffer from a common pitfall: an excessive focus on user interface design. While important, the main feature or core functionality should take precedence unless revolutionary user experience is the primary competitive advantage of your application.)
Advantages of Side Projects
Side projects possess distinct advantages compared to work projects. They grant you the freedom to pursue your passions without the immediate pressure of earning a living. You determine the timeline and set your own deadlines, and you engage in these projects because you genuinely enjoy them, not because you’re obligated to. This aspect of personal fulfillment sets side projects apart and contributes to our love for programming. Unlike many other professions, programming allows you to utilize your skills and expertise for personal projects, and if circumstances align, even solve everyday problems you encounter. These projects empower you to take risks, work on your own terms, and invest as much passion as you desire.
The Reality of Unfinished Projects
To be transparent, not all side projects I’ve undertaken have been released to the world. The most important aspect of a side project is enjoying the process, and sometimes you realize that your initial idea doesn’t captivate your interest as much as you anticipated. Consequently, I have an extensive list of projects that I initiated but never completed. Occasionally, I discovered that my projects weren’t as impressive, promising, or feasible as I initially thought, while other times, new ideas simply diverted my attention due to time constraints. However, my ultimate goal with every project remains to release it, and fortunately, that goal is still achieved on occasion.