The power of personal (side) projects

In the ever-evolving world of technology, staying ahead requires more than just keeping up with the latest tools and trends. For software engineers, especially Site Reliability Engineers (SREs), continuous learning is a cornerstone of success. While formal education and on-the-job experience provide foundational knowledge, personal projects can be a game-changer in honing your craft. In this blog post, I’ll explore how personal projects not only enhance coding skills but also contribute to career growth, creativity, and problem-solving abilities—essential traits for an SRE.

Why personal projects matter

Personal projects are the playground where you get to experiment, fail, and innovate without the constraints of deadlines, organizational priorities, or resource limitations. They offer:

  1. Hands-On Learning: Unlike theoretical learning or guided tutorials, personal projects force you to apply knowledge in practical ways. Whether you’re building a tool to automate a tedious task or experimenting with a new programming language, the experience solidifies your understanding.

  2. Skill Diversification: Personal projects allow you to explore areas beyond your daily responsibilities. As an SRE, you might focus on infrastructure, monitoring, and reliability. A personal project could involve writing a small web app or contributing to an open-source project, broadening your technical repertoire.

  3. Portfolio Building: A portfolio of personal projects showcases your skills, initiative, and passion to potential employers or collaborators. It’s tangible proof of your capabilities beyond your job description.

  4. Problem-Solving Practice: Tackling issues in personal projects prepares you for real-world challenges. The debugging, optimization, and troubleshooting involved mimic the problem-solving aspects of an SRE’s daily tasks.

Coding skills and success

As an SRE, coding isn’t just a “nice-to-have” skill—it’s a critical part of the role. Writing scripts to automate deployments, building custom monitoring solutions, or contributing to infrastructure as code are everyday tasks. Personal projects can sharpen these skills in several ways:

  1. Automating Your World: Creating small utilities for personal use—like a script to organize files or a bot to manage reminders—keeps your programming chops sharp. These projects often involve problem-solving and working with APIs, which are highly relevant to SRE tasks.

  2. Deepening Language Proficiency: Experimenting with different programming languages in personal projects can deepen your expertise and adaptability. For instance, if your work primarily involves Python, trying out Go or Rust might give you fresh perspectives and tools to bring back to your day job.

  3. Learning New Tools and Frameworks: Personal projects provide a low-risk way to explore tools and frameworks. Interested in Kubernetes or Terraform? Start a project to deploy a small application using these technologies.

  4. Scaling Challenges: Building something from scratch, even a small-scale application, can teach you about scalability and reliability—key areas of focus for an SRE.

Examples of Impactful Personal Projects

  1. Monitoring Dashboard: Build a custom dashboard to monitor your home server or personal website. It’s a practical way to learn about monitoring stacks like Prometheus and Grafana.

  2. CI/CD Pipeline: Create a pipeline to automate deployments for a personal application. This could involve tools like Jenkins, GitHub Actions, or GitLab CI/CD. In fact, this blog is being deployed through a CI/CD pipeline.

  3. Infrastructure-as-Code: Use Terraform or another IaC tool to manage personal cloud resources. It’s a direct application of skills critical to modern SRE practices.

  4. Custom Book Tracker: I built a tool for my wife to track her books, allowing her to organize and manage her reading list efficiently. This project enhanced my skills in creating intuitive user interfaces and working with data storage solutions. Wanna see the code? Here it is.

  5. Bitcoin Price Telegram Bot: I developed a Telegram bot that fetches the latest Bitcoin price, offering real-time updates. This project honed my API integration skills and demonstrated the utility of chatbots in delivering dynamic information. Wanna see it live? Here it is and the code is here.

Beyond technical skills

While technical growth is a significant benefit, personal projects also foster creativity by encouraging you to build something for fun or out of curiosity, sparking ideas and approaches that might not arise in your daily work. They also boost confidence through the successful completion of projects, especially after overcoming challenges. Additionally, sharing your projects online can connect you with like-minded professionals, opening doors to collaboration or mentorship.

Finding time for personal projects can be challenging, but it’s possible with the right approach. Start small by focusing on projects that are manageable in scope and can be completed incrementally. Align your projects with your interests to ensure the process is enjoyable rather than a chore. Leverage existing tools like frameworks, libraries, and templates to minimize setup time and maximize learning. Finally, dedicate a specific time each week to work on your project, even if it’s just an hour.