How to start a new project ? What is walking skeleton ?
Building the Foundation of Your Codebase. In the realm of programming, the 'Walking Skeleton' technique serves as a crucial paradigm for crafting robust and scalable software architectures.
Let me ask you something first:
Have you had experience developing a production-ready solution? If so, you could extract insights from that experience to navigate this topic and potentially pave a smoother path for your future projects. If not, no worries—you're about to grasp the significance of crafting a solution for your upcoming application that's geared for production readiness, along with understanding the rationale behind establishing a solid upfront architectural design.
The walking skeleton
The walking skeleton is meant to help us understand the requirements well enough to propose and validate a broad-brush system structure. It doesn’t have to be perfect, it doesn’t mean you can’t change it later but it is important to have a good starting point for your project.
What's the ultimate aim of crafting a walking skeleton?
The primary objective is to establish an automated system that's ready to be built, deployed, and have seamless test cycles.
While this demands substantial upfront effort and clear direction—essential prerequisites before embarking on the walking skeleton concept—it furnishes you and your team with an optimal foundation, equipping you with a potent tool to gather valuable feedback.
I reckon the whole development thing is like a guessing game, and to nail it, you gotta get some feedback rolling in. The more of that, the merrier your skills get. Back in the day, I was all hung up on making my code perfect, but man, that was just messing me up. These days, I'm all about soaking in feedback and even embracing the fails, because that's how I'm leveling up.
“Deploying and testing right from the start of a project forces the team to understand how their system fits into the world. It flushes out the “unknown unknown” technical and organizational risks so they can be addressed while there’s still time.” - Growing Object-Oriented Software, Guided by Tests
How do you initiate the process of setting up the walking skeleton?
The walking skeleton has to start with an E2E test for a minimal implemented use case (e.g: display database fields). Starting with an E2E test will help us to create the infrastructure needed for our first use case to be production-ready (this includes setting up the database for example).
Why is establishing a walking skeleton so crucial?
We want to avoid the common issues we have during the development process like:
Falling into the "It works on my machine" trap."It works on my machine" means that a developer has written code that functions seamlessly on their local workstation but encounters issues downstream, whether in a CI pipeline or, even worse, in the live production environment.
Avoid the late stress of launching. You can avoid this whole walking skeleton and start coding right away, but dealing with this whole process when you want to launch the product is too painful and generates lots of compromises.
Honestly, I don't even see the humor in situations like these. While these occurrences might be common, it's about time we recognize that there's something amiss or that we need to guide fellow developers to steer clear of such pitfalls. It's a genuinely frustrating experience. The aim should be to avoid a painful development process; instead, we should strive for it to be straightforward and boring.
Curious to check out how this plays out in a kick-off project? If you're up for it, just give me a shout in the comments!