Markus’s Substack

Markus’s Substack

Embarking on a Journey of Endless Discovery

The story of the side projects

Markus's avatar
Markus
Nov 20, 2023
∙ Paid
Share

Navigating the maze of technology choices for new projects can be a daunting task for software architects and developers. With a plethora of tools and frameworks vying for attention, the challenge lies in finding the perfect balance between user satisfaction and cost-effectiveness. This quest becomes even more complex when we consider our long-term commitments to single projects, which often limit our exposure to the broader technological landscape.

A striking phenomenon in our industry is "CV Driven Development (CDD)." Martin Jee insightfully points out that CDD prioritizes choices that bolster a programmer's resume, rather than the project's best interests1. This approach, while enhancing short-term job prospects, can lead to long-term inefficiencies and frustrations within development teams.

A developer finding the next shiny thing

So, how do we stay technologically agile and make informed choices? The answer, I've found, lies in embracing pet projects. These personal ventures are not just hobbies; they are strategic tools for exploring new technologies and methodologies, such as Test Driven Development or Domain Driven Design, in a risk-free setting. Through these projects, we tackle real-world problems - like creating a functional ToDo list app with a new framework - gaining valuable experience and adding tangible value.

In my journey, every completed pet project has been a milestone of satisfaction and learning. Documenting these ventures - the implementation challenges, the strengths and weaknesses of each technology - has been invaluable. This documented experience might not have immediate application, but it often becomes crucial in guiding future technology choices and estimates in my career.

Monitoring the lifecycle of the technologies you explore is equally important. Are they still relevant after a year or two? Understanding the patterns of success and failure in technology can help you avoid short-lived tools in the future. I always advocate experimenting with technologies that are new to you but have been on the market for a while.

A key strategy in these explorations is to focus on one new technology per project. My experience has shown that juggling multiple new technologies in one project can create unnecessary complexities. Instead, an incremental approach, building upon a project with successive layers of technology, is more effective. In the concluding section of this article, we delve into practical scenarios, illustrating how real-life problems can be leveraged to effectively approach new technology. We'll also unravel the complexities and challenges encountered when testing multiple tools concurrently, complemented by narratives of successful incremental development in pet projects, showcasing their real-world impact and learning outcomes.

Public repositories like GitHub play a pivotal role in this process. They not only showcase your evolving skills and problem-solving abilities but also act as a dynamic portfolio. Documenting your projects, including their objectives, current status, and the rationale behind your choices, is crucial. This not only aids in future job applications but also provides a clear roadmap when revisiting projects. As Simon Willison notes, good documentation and comprehensive unit tests are essential for picking up a project after a hiatus2.

Document your progress, so you’d know where you left off

To sum up, it's clear that making smart technology choices in software development is about much more than just following trends or boosting a resume. The key takeaways are:

1. Embracing Pet Projects: Pet projects emerge as a powerful tool for learning and experimenting with new technologies. They provide a safe, low-stakes environment to test, learn, and understand new tools and frameworks, without the pressures of a production environment.

2. Balancing Innovation and Pragmatism: While it's tempting to chase the latest technologies for the sake of novelty or resume enhancement, it's crucial to balance this with pragmatic considerations. This means selecting technologies not just for their newness but for their fit and relevance to the project's goals.

3. Continuous Learning and Adaptation: The field of technology is ever-evolving. Staying updated and adaptable is key. Engaging in continuous learning through pet projects and other means ensures we're always ready to make informed decisions about new technologies.

4. Documenting and Reflecting on Experiences: Documenting our experiences with different technologies, their strengths, and weaknesses, provides valuable insights for future projects. This practice turns every project, whether successful or not, into a learning opportunity.

5. Focusing on One Technology at a Time: When experimenting with new tools, it's advisable to focus on one at a time. This approach allows for a deeper understanding of each technology and avoids the complications that can arise from juggling multiple new tools simultaneously.

6. Public Sharing and Documentation: Hosting pet projects on public platforms like GitHub not only showcases our skills and learning journey but also contributes to the broader tech community. Comprehensive documentation and automated testing practices make these projects more accessible and useful, both to ourselves and others.

In conclusion, the path to effective technology selection in software development is multifaceted. It requires a balance of curiosity, pragmatism, continuous learning, and community engagement. By adopting these practices, we position ourselves not just as developers, but as thoughtful, informed, and adaptable architects of technology who are equipped to make decisions that will positively impact our projects and our careers. Let’s embrace this journey with enthusiasm and an open mind. 🚀

Stories of Innovation and Adaptation

In the spirit of exploring the uncharted territories of technology through personal experiences, I'm excited to share stories from my own tech adventures. These narratives are more than just recountings; they're beacons of inspiration, demonstrating the diverse directions technology exploration can take us.

Keep reading with a 7-day free trial

Subscribe to Markus’s Substack to keep reading this post and get 7 days of free access to the full post archives.

Already a paid subscriber? Sign in
© 2025 Markus Karileet
Privacy ∙ Terms ∙ Collection notice
Start writingGet the app
Substack is the home for great culture