Crisis-Driven Development: How to Use Instability for Growth
When dealing with uncertainty, a knee-jerk reaction for companies is to make cuts, especially in R&D and innovation. If the last global crisis has taught us anything, it’s that this kind of reaction stunts growth and opportunities in the long run. While developers seem to be only on the receiving end of those changes, I’d argue they are the ones who can use instability to fuel innovation and growth.
While unavoidably challenging for all involved, times of crisis also present opportunities to:
- Assess current processes and systems;
- Eliminate entrenched orthodoxies;
- Implement a sense of urgency, fostering a more collaborative and agile approach.
If It Works – You May Still Want to Fix It
In the spirit of crisis-driven development, we recently analyzed the chain of services used to send RCS (rich communications services) and MMS (multimedia messaging service) messages in Infobip. We found additional proxy services in the chain that adapt traffic to a specific operator.
Incidentally, the service we use for sending SMS (short message service) and other types of messages already provides extensive functionality for customizing HTTP requests for various protocols. We unified the process with SMS connections, which our integrations and solutions engineers were already well familiar with.
In doing so, we reduced the number of moving elements, the number of resources required to maintain RCS and MMS connections, and, most importantly, the time required to create new connections from several weeks to a few days. This, in turn, enabled us to introduce new solutions to the market rapidly.
We’d probably never revise the existing solution had we not gone into the crisis-leveraging mode, as it generally functioned well, and the process was thoroughly fine-tuned.
I was amazed at how seamlessly this initiative aligned with the company’s operations and how timely it was. Other teams readily embraced the changes, enabling them to concentrate on developing customer-facing features.
The example illustrates crisis-driven development where existing systems are reevaluated, traditions removed and urgency instilled to foster an agile and collaborative environment.
This approach values refactoring and pragmatic new development, with an emphasis on economic impact.
Refactoring the Right Thing
Refactoring is a powerful method for achieving better design curves and enhanced performance. Instead of centering the argument around quality, clean code or doing the right thing, in crisis-driven development developers should emphasize the economic impact.
It’s essential to determine whether refactoring makes a difference in delivering new features and can help accelerate development.
When deciding what to refactor, prioritize hot spots:
- Code that exhibits obvious smells and has frequent changes;
- Multiple developers are working on it;
- There is just one main contributor to specific code sections.
Focusing on the fast-changing parts of the code first is important because these sections are often the most complex and prone to errors. By refactoring them, developers can simplify the code, making it easier to understand, maintain and modify. Since these areas are frequently updated, any improvements will have a more immediate and significant impact, leading to enhanced productivity and software quality over time.
Adopt a simple approach when refactoring, reducing moving parts and revealing intentions. You want the code to read like a coherent story, not of a complicated detective narrative.
Adhere to the Single Level of Abstraction principle by ensuring that each method consists of instructions at the appropriate level of detail or abstraction. This promotes single responsibility and a single reason for the change. Additionally, aim for high cohesion and loose coupling in the code. This way, the code serves one function exceptionally well and relies on fewer stable components.
Pragmatic New Development
New development is crucial but should be done pragmatically, seeking fast feedback and focusing on practical solutions that can be implemented quickly and effectively. Prioritize actions and results to address immediate needs.
For instance, we use a hybrid cloud infrastructure. This popular approach combines our own infrastructure with cloud-based solutions for prototyping and launching new products, particularly those using AI.
The hybrid scheme allows for both flexibility and control, making it an ideal choice for organizations seeking to adapt and innovate rapidly while keeping costs under control.
To navigate new development successfully:
- Use tools that enable you to deliver value quickly.
- Be conscious of the various trade-offs involved in your decisions.
- Make costs visible, ensuring all stakeholders understand the financial implications.
This means you should carefully consider what you spend time and resources building in-house and what you source from outside vendors. If you’re a startup looking to boost your support, you can use the communication platform as a service (CPaaS) to integrate these services rather than spending time building these features from scratch. That leaves your developing capacities available to build functionalities relating to your core business. Using developer tools rather than building them in-house also has its trade-offs to consider — you are, after all, relying on a third-party service.
Weigh well whether the trade-off is worth the value it gives in return, in this case, manpower to focus on your core business. And lastly, since a third-party solution is a financial cost, ensure all stakeholders are aware of and comfortable with it, and that there is a transparent and simple way to track costs at all times.
If the cost-benefit analysis in all three categories turns in favor of building in-house, that’s by all means a pragmatic new development. If not, consider alternatives to building from scratch.
Don’t Survive — Adapt and Thrive
The ability to quickly adapt and find innovative solutions is critical in times like these, but it is equally important to remain grounded in the key principles of software development.
I believe that with a deliberate and structured approach, software developers can navigate the challenges of a crisis with confidence and deliver impactful solutions that truly meet the needs of their users.
As former GitHub CEO Nat Friedman once said, “Pessimists sound smart. Optimists make money.” Embrace optimism and use crisis as an opportunity for growth and innovation in software development.