There's A LOT to learn and hold in your head as a Software Engineer, especially after industry trends made our job extra bloated with the fictional need to use and work with technologies and patterns copy/pasted from Netflix, Google and other big Tech Companies who worked at massive scale and over-hired when productivity didn't matter.
When this artificial over-bloating of tech companies is going away, we need to fine tune our technical direction and actions to solve real business needs and become viable with the resources at hand.
This is why an adequate Engineering Strategy is more important than it has been for the last 10 years and sets the difference between a tech company achieving nothing versus having a chance for success.
What's an Engineering Strategy
It's the continuous analysis, direction and implementation of engineering solutions to business problems.
Gauges for a "bad" Strategy
It's difficult and uncommon to be good at both engineering AND business, so we usually fall into this common pit.
They have these common traits:
- Don't start with the business need they're tackling.
- Use architectural solutions to problems they don't have.
- Don't include a continuous customer validation cycle.
- Focus on infrastructure and implementing patterns instead of behavior.
Example 1:
We're an established business, we know our customers well but we're starting to have performance issues because some areas of our monolith have a really high demand
- Rewrite everything from scratch in parallel, while our under-performing, error-prone monolith is still live and some engineers spend their time firefighting issues while others build software in a green-field project in isolation for months without real customers using it.
๐ญA more appropriate approach is to start by measuring user journeys and their results to then extract areas of the existing code into services, rolling out the services in phases, making sure your metrics don't get worse.
Example 2:
We're an established business and want to modernize, we want to build a web version of our massive business desktop app in a short time.
- Hire a team in another country to reduce costs, and ask them to rebuild the modernized web version, setting an aggressive deadline and encouraging to cut corners in testing.
Example 3:
We're a startup with no customers, one of our most high-stake problem is to find customers and get ahead of our competitors.
- Use a microservice architecture and split the domain into n-services that will communicate through APIs and Pub/Sub before we have any functionality in place.
- Build for all platforms, any mobile and web.