Balancing Feature Development and Bug Fixes in High-Pressure Projects: Insights from a Senior Software Engineer

Image Source: depositphotos.com

Software engineering is not only about solving problems but it also about creating lasting value. Engineers constantly judge the demands of developing innovative features with the urgent need to resolve bugs, especially in high-pressure scenarios where deadlines loom large and resources are stretched thin. Maksim Lykov, a Software Engineer with six years of experience leading critical projects in global tech firms, offers valuable insights into these challenges. In this interview, he shares strategies, best practices, and philosophies to help teams not just survive but thrive under pressure.

1. Weighing Features Against Bug

Maksim, in high-pressure environments, swift output is often necessary. With the limited resources, how do you balance developing new features and fixing bugs?


Prioritising tasks requires assessing their immediate and long term impacts. The 3C Assessment - a tried-and-true method - provides a structured approach by encompassing on:

  • Customer Impact:Does this task significantly affect the end-user experience or business-critical functions?
  • Cost of Delay:What are the financial or reputational consequences of postponing this work?
  • Complexity:How much time, risk, and effort are required to complete the task effectively?

For instance, consider a cloud storage platform during a critical product launch. If a new feature promises to attract high-value enterprise clients, while a bug affects only a small percentage of users, prioritising the feature may make strategic sense. However, if the bug involves data loss, even a minor impact could have severe reputational consequences, necessitating immediate attention.

Companies like Intercom and Stripe use tools like RICE (Reach, Impact, Confidence, Effort) to refine prioritisation of tasks and align them with organisational goals.. Such data-driven approaches ensure transparency and strategic decision-making.

Nevertheless, even if a bug affects only a tiny percentage of customers, it’s still important to address it at some point to build and maintain customer loyalty. In my experience, setting aside a dedicated day each month to investigate and clean up accumulated bugs is a great approach. It prevents them from growing into bigger issues that could impact a larger portion of your users. Additionally, having an on-call rotation within the team is quite common. This ensures there's always someone available to preprocess newly created bugs and assess their impact.

2. Mitigating and Handling Cascading Bugs

Interesting! What do you do in cases where a bug fix spins off another bug?

In massive systems, the phenomena of cascading bugs that is also known as the "domino effect" tends to occur becoming quite a difficulty. To aid in the prevention of such, measures need to include:

  • Automated Regression Testing: This is the base for testing out the quality of care. Selenium, Cypress, and Appium assist testers to ensure that new fixes do not impact established areas.
  • Continuous Integration/Continuous Development (CI/CD): Pipelines via the use of Jenkins, Github Actions, CircleCI and others enable developers to run isolated code changes before pushing it to the production.

One interesting case is provided by Netflix, which uses automated chaos testing which is a component of the Simian Army tool. These inject failures into systems randomly and assist the engineer rectify faults that if not dealt with could develop into a critical problem. This technique can be extremely helpful for identifying weak spots in different parts of the system and planning specific recovery strategies for each component.

In case cascading bugs develop even with all such measures, then it is essential that a Root Cause Analysis (RCA) is carried out. An RCA almost invariably results in something being done about the matter, for instance, expanding test coverage or deploying better version control.

3. Increasing Team High-Spirit in High-Pressure Growth

When there are outstanding bugs and feature requests, and the pressure seems to stack, how do you keep the morale of the team up?

Teams in a very high-pressure environment are at risk of being pushed to a breaking point, resulting in the team burning out. In addition to technical processes, it is essential to promote an organisation’s culture where mental health is highly regarded.

Key Strategies:

  • Commemorating Achievements: A company like Shopify, which is a leader in the e-commerce industry, has a habit of thanking not only users but also its employees for the tiniest of achievements, for instance, debugging or completing a sprint. This helps in keeping the morale high even during the hot phases.
  • Helping Others Focus: Most team members hate it when there are no clear defined goals. For example, Atlassian promotes cohesive sprint cycles centered around engineers, to allow them to view their contributed efforts in the greater sense of the business.
  • Nurturing Creativity: In the case of even the greatest of companies like Google, there are times when Google has to force employees to innovate, for example Google's Gmail was a product born within their famous "20% Time" philosophy which allows employees to pursue passion projects. Even when under severe deadlines, the embedding of exploration can provide a team with a sorely needed boost.
  • Empathy and regular follow-ups: An equal measure of aid is empathy and practicing regular check-ins. For example, managers at Spotify have also used so-called health checks, which take place directly on the team’s messengers, where team members anonymously rate their stress levels and workloads to anticipate plans to combat the imbalance.

4. Constantly Managing Quality

How do you attempt to maintain quality during bug fixing and feature creation while working on a strict time frame?


There’s never a single superb way to balance quality against time constraints, and in my experience, high quality is always a combination of some tactical focus, some great tools, and an overwhelming sense of ownership towards the project. Here’s how successful companies do it:

  1. Shift- Left testing: Quality Assurance and checking has transformed immensely and now holds a much stronger presence throughout the development process. Some organisations such as Microsoft have implemented shift left testing which incorporates testing into the design and development process right from the start. This concept is helpful as it identifies potential issues within the test phase which is highly beneficial as it conserves resources and time as stress levels during the final phases rot to an all time low.
  2. Feature Flags: LaunchDarkly is one of the tools which enhances real time management of features by teams. It identifies this risk factor as feature flags where developers can opt to enable or disable features as desired, thereby enabling the feature’s introduction to occur gradually or progressively and enabling for specific area tests. This means that if a feature is broken, it can be turned off without affecting the entire system and solving the major issues will result in an uninterrupted satisfying experience for the end user.
  3. Continuous Monitoring and Feedback Loops: An automated monitoring system and disruption feedback systems are also important. Professional services practitioners also combine this information with relevant data obtained from comprehensive metrics, because leading firms typically establish dashboards for performance and user engagement monitoring after the delivery of new functionalities and before the supplying of new equipment. New Relic or Datadog are examples of tools that provide teams with performance metrics and enable them to respond quickly to problems as they arise.

Case Study:
Tesla’s approach to over-the-air software updates demonstrates how time and quality can be combined respectably. There is no limit on the amount of types of simulations that can be tested prior to a software update as each type is tested regardless of the actual world's conditions or the user’s behaviors. With an established timeframe, integrity of the product is retained, thereby, ensuring that the user is satisfied. As Tesla's vehicle base is global, the use of simulation and phased updates for its entire fleet helps to avoid bugs or performance issues.

Such a combination of practices assures that teams may work efficiently without having product instability or compromising quality thereby causing discomfort for the users.

5. Choosing to Fix the Bugs Rather Than Push Features

Do you remember a time when a bug fix took over the importance of a feature which was supposed to go live? How did you gut it out?


Even though the agile approach of engineering favors feature delivery, there are instances which supersede improvement work. Take industries for instance, look out how AWS faced S3 corruption during July of 2017. No detail was needed and using a minor error line whilst debugging caused many routers to become offline. The business aim was for developers to fix it as it was very damaging for most businesses operating from all parts of the world.

Key Actions:

  1. Stabilisation: Rapidly adopt temporary fixes to the workaround system so end users are not affected too much.
  2. Diagnose: Use diagnostic programs such as New Relic or Datadog to quickly trace the problem.
  3. Resolve: Restructure and make escalation procedures more simple in order to get the matter resolved faster.

In such situations timely and clear communication with decision makers is crucial. The use of Slack and Zoom together with status reports minimizes disconnection and restores confidence when issues arise.

6. Prioritising Managing Technical Debt and Development of Features

What possible suggestions would you give teams regarding the repayment of technical debts and the features developed in the software products?


Technical debt is the new norm in software development but how it is dealt with defines success in the long run. It can be best dealt with by merging it into the product roadmap rather than leaving it as a post-completion issue.

Proven Practices:

  • Dedicating debt sprints: Some organizations like Spotify have fixed sprints whose only goal is to address technical debt to reduce the risks for the future.
  • Qualifying Debt Construction: Offering consideration of budget cost such as by using dashboards in jira or confluence will help key stakeholders within the organization.
  • 70-20-10 Rule: This rule can be employed in other organizations where 70% of the time is utilized for feature building, 20% for management of existing debt and the final 10 percent for building new ideas.

Example:
Whenever a SaaS business faced challenges related to prolonged query time, remodelling of the database structure in the application level to resolve the technical debt was undertaken to allow for better query times. Though this made it impossible to introduce new features, the increased performance and scalability in the long run made the sacrifices in the short run worthwhile.

But in all cases, the decision should be based on the specific team and its goals. For example, in my previous team, we discovered that stepping away from commonly accepted sprint deadlines and planning tasks just one week in advance worked really well for us. It gave us the flexibility to react and reevaluate tasks much faster and allowed us to address technical debt quickly when it became a higher priority.

Trends That Can Solve Existing Problems

The way teams are balancing feature development with bug fixing is changing thanks to advances such as AI and predictive analytics which are now considered a norm in the development field. Testim and Mabl for example, which are AI-based testing tools, automate regression tests and detect vulnerabilities earlier in the development process, thereby greatly increasing the chances of avoiding cumulating bugs. On the other end of the spectrum predictive analytics platforms such as Splunk and DataRobot empower teams to evaluate and lessen risks in advance, as well as enhance their predictions. One such company that truly embraces advancements is Facebook, which employs artificial intelligence models that visually scrutinise code commits and automatically highlight any detected faults before transferring them to production. Such a methodology is not only beneficial to the engineers who will not have to work as hard but it sets a standard on how AI can complement an already existing software development process without compromising on quality.

The Road Ahead

There will always be a conversation of needing to balance between new feature creation and bug fixes, which remains ever so daunting in the field of software engineering. The fabric of products become more sophisticated and complex therefore enhancing the need for various data models to be implemented, effective team cultures built and better tools and frameworks utilized.

On the other hand AI, cloud native structures and further analytics that could enhance workflow will enable the teams to retain stability and strengthen innovation. This way should the businesses adapt to the trends they will be able to keep afloat the harsh realities that come with software engineering and remain successful long term.

This holistic approach guarantees the teams the ability to move around any current problem as well as capitalize on the upcoming one securing their vested interest in the industry.