We make things harder than they need to be. We take a basic concept and then diverge into a sea of complexity. This human behavior burrows deep into our thinking, implementations, and explanations. This drive towards complexity makes us ineffective at the core of our profession. Complexity creates new problems, as you work to solve the original problem. It breeds bugs. It makes our jobs harder.
The web development and software professions are based upon basic fundamentals and principles. Over the decades, we took these basics and turned it into a profession of complexity. We filled books and lectures with design patterns, heuristics, and best practices. But we failed to agree on the approach. As a result, complexity bred more complexity.
In our quest to build perfectly reusable and maintainable code, we failed. Instead, we made it exponentially harder to do our work.
- Reading the code and quickly understanding what is going on and why is harder.
- Sniffing out the root cause of some unexpected behavior is harder.
- Validating all the paths through your codebase is harder.
- Maintaining the codebase is harder.
- Adding a new feature is harder.
- Onboarding new people is harder.
- Finding new talent to join your team is harder.
We made our profession harder. As a result, it takes more time, not less, and we introduce more problems, not less.
All of this complexity weighs me down. I have over 30 years of experience. Imagine the impact it has on someone with only a few years of experience or even new. It’s too much.
Wakeup! Harder is the opposite of what we need. Think and do simple. We need simplicity.
How Did We Get Here?
Part of my journey has been (and still is) to develop individuals and teams. In that process, I’ve come to discover these underlying reasons for how we got to where we are now:
- We want respect.
- We want to be valued and indispensable.
- We think we are supposed to do this way because those we respect do.
All of the above are human nature. But it’s our approach that is failing us.
Simplicity is Better
- Make things so simple that anyone can step into your shoes and do your job. Empower others.
- Make it tell us and you what’s going on and why.
- Build smaller, more focused pieces that have one behavior.
Shifting your focus to simplicity immediately impacts the quality of your code. It drives down costs, bugs, and time. It makes it easier for all of us to do our work.
In my experience, this approach makes you more valuable, marketable, and indispensable.
What do you think? Let’s discuss it.