I respect your privacy. Unsubscribe at any time.
As web developers, we're constantly faced with decisions. Whether it's choosing an authentication strategy at the start of a project or figuring out how to migrate to a new feature without data loss, our days are filled with choices that can have far-reaching consequences. It's one of the most exciting — and challenging — aspects of our field.
But how do we make these decisions? What guides us when we're exploring new territories or trying to remain relevant in the face of rapidly advancing AI? Over the years, I've developed a set of principles that help me navigate these waters, and I want to share them with you.
The birth of The Epic Programming Principles
I've been building web applications for over a decade now, and in that time, I've made my fair share of decisions — both good and bad. I've created tools like Testing Library that have become industry standards, and I've also had to deprecate projects like Glamorous when better solutions came along.
Recently, while working on the Epic Stack (a project starter and reference for web applications), I started documenting my decision-making process. I created decision documents explaining why certain choices were made, from using database-based sessions to selecting email services.
As I reflected on these documents and the decisions I've made throughout my career, I realized that there were underlying principles guiding my choices. This led me to create The Epic Programming Principles — a big list of over 50 principles that inform my approach to web development.
Why principles matter
Here's the thing: principles provide a framework for consistent, thoughtful decision-making. They help us:
- Reproduce success
- Avoid repeating mistakes
- Make decisions more efficiently
- Explain our choices to others
Think of principles as your personal guidebook for navigating the complex world of web development. They're not rigid rules, but rather flexible guidelines that evolve with your experience.
A peek into Epic Programming Principles
I've organized the Epic Programming Principles into several categories. Let's take a quick look at some of them:
Core philosophy
These principles underpin everything else. For example:
- Software is built for people by people
- Value in-person connections
- Be the kind of person people want to work with
- Do good in the world
Craft
This category covers how we approach our work:
- Think like a craftsperson
- Choose your tools wisely
- Architect your project thoughtfully
Testing and performance
Principles related to ensuring our code works well and fast.
Developer experience
Guidelines for creating a positive environment for developers.
Career and personal growth
Perhaps the most important category, focusing on your overall development as a professional and person.
The importance of personal principles
While all these principles are valuable, I can't stress enough how crucial the personal principles are. Things like:
- Prioritizing relationships
- Striving for excellence
- Being honest
- Embracing reality
- Taking personal responsibility
These principles extend beyond coding and into every aspect of your life. They're the foundation upon which everything else is built.
Developing your own principles
Now, I'm not saying you should adopt my principles wholesale. What works for me might not work for you. Instead, I encourage you to reflect on your own experiences:
- Think about your past successes and failures
- Try to identify the underlying causes
- Distill these insights into guiding principles
Write them down. Revisit them regularly. Let them evolve as you gain more experience.
Remember, the version of you who lives by principles will likely be happier, more confident, and more successful than the version who wings it all the time.
Wrapping up
Principles-based programming (and living) isn't about restricting yourself. It's about creating a framework that simplifies decision-making, helps you live intentionally, and guides you towards consistent success.
If you're interested in diving deeper into this topic, you can check out the full list of Epic Programming Principles at epicweb.dev/principles. And if you want to learn how to apply these principles in practice, take a look at my courses on Epic Web, Epic React, and Testing JavaScript.
Remember, every decision you make is an opportunity to refine your principles and become a better developer. So, what principles will guide your next decision?