Technology leaders have more influence on a company’s trajectory than ever before. I haven’t seen anything like it in my 25+ years in the technology industry.
We have the combined responsibilities of charting a path to the future, adjusting course through choppy seas, while getting the right crew on the ship to keep it pushing ever onwards, upgrading our engine, navigation and much more as we go.
There is a paradox with developer tools and utilities becoming more and more powerful resulting in shorter development/build phases and enabling solving for very complex and large-scale business cases we couldn’t even fathom only a few years ago.
It really puts the lens on the importance of a “Design First”-approach.
The ability to understand the business needs (not “wants”) and "translate" these into written specifications and user experience designs is more important than ever with the added complexity. There are plenty of tools and methodologies to assist, but it boils down to having and fostering this skill set in the technology team with prominent and dedicated roles such as business analysts and product owners.
Technical design goals are then formulated and clearly stated before moving into the build phase.
These goals are both feature specific and overarching principles, summed up as CREW:
- Creating reusable components and software infrastructure in order to achieve the least possible build effort, reduce defects and a lower maintenance overhead
- Reduce the scope to an MVP following the “You Ain’t Gonna Need It” (YAGNI) principle.
- Evaluating requirements and striving to reduce complexity where possible
- Writing clean and minimalist code that is maintainable and scalable
When we are adding new software infrastructure, we are already thinking of how we are going to re-use it in the future. Good developers hate wasted effort. When we reuse components and frameworks, it means we are not developing from scratch and the components are already proven and scalable in a production environment, helping us move faster in hitting our goals.
Being agile doesn’t mean "no need to plan, document requirements and design, jump straight into coding". Nothing could be further from the truth.
A “Design First”-approach reduces the risk of project delays and cost overrun by anticipating pitfalls, design flaws and successfully avoiding them. It doesn’t contradict an agile approach, rather when an agile approach is most efficient. A solid platform, design principles followed, and core features implemented allow for an agile approach evolving the solution.
“The ability to understand the business needs (not ‘wants’) and ‘translate’ these into written specifications and user experience designs is more important than ever with the added complexity.”
You’ve still got a map of where you need to go, you just need to use it while regularly adjusting with market and team feedback from your business analysts and product owners. Avoiding icebergs of technical debt while maximizing the abilities of your own motley crew of designers, architects and developers.
The goal of a “Design First”-approach is to “build once and build right” which not only means higher productivity and therefore relatively fewer tech resources. It creates an environment where developers can focus on feature and platform development, rather than context switching and “firefighting” with one quick fix on top of another. It also means less functional domain knowledge is required for developers to be productive, helping you get new people onboard quickly and rowing in the right direction. This creates harmony in a team, an environment where people want to stay, making it easier to attract new talent.
No doubt we need skilled architects and developers to design and build, but to foster a successful team and environment, make sure to recruit skilled business analysts and product owners too. They’ll keep the focus on designing the right products and features, helping you steer the ship to the promised land of growth and innovation that has a real impact for your business and customers.