From Good to Great: How Tight Feedback Loop Can Help You Work Smarter As a Software Engineer
Tags: career, productivity, programming, softwareengineering
Published: 2023-05-12 17:00:34

---
title: From Good to Great: How Tight Feedback Loop Can Help You Work Smarter As a Software Engineer
published: true
date: 2023-05-12 03:15:31 UTC
tags: careers,productivity,programming,softwareengineering
canonical_url: https://pathtosenior.substack.com/p/from-good-to-great-how-tight-feedback
---

![Photo by Steven Wright on Unsplash](https://images.unsplash.com/photo-1547057740-4b18aac8eed2?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80)

Faster feedback loop leads to a rapid development process. 

The only way to know if your assumption is correct in building a product is to receive that feedback loop. So, getting your product or service released as soon as possible, even if it's small, is both financially wise and educational since a quick release can also serve as a perfect learning experience.

I often see good developers think about ways to increase the feedback loop process - be it through implementing automated tasks or scrappy methods.

In this article, I wanted to share with you on:

1. What is the benefit of having a tight feedback loop

2. Why you need to optimize the feedback loop to be a good developer

3. Strategies that you can use right now to create a faster feedback loop

Let's get right into it!


# What is the benefit of having a tight feedback loop?
## Quickly Identify and Address the issue.
A tight feedback loop provides continuous feedback, which enables developers to catch errors early on and make changes quickly, leading to improved software quality and a faster time to market.

The quicker you know something is broken, the sooner you can fix it. The faster you can test your assumptions, the sooner you'll get to the truth.

Solving the bug will be much faster if you can reproduce them locally. That is why functional programming is very popular because it helps reduce the time to solve bugs and increase tight feedback loops.

## High-Quality Software in Less Time
By getting feedback early and often, developers can continuously improve their work, iterate on their designs, and avoid repeating the same mistakes. 

Building a good product is not about how much polish the UI is (though sometimes it is). It is about how to satisfy your customer and if it solves their problem well and leaves them feeling better.

A tight feedback loop also encourages collaboration between developers, testers, and other team members, fostering a culture of continuous improvement and teamwork.

Overall, the benefit of a tight feedback loop is that it helps developers deliver high-quality software in less time, improving the user experience and helping to maintain a competitive edge in the market.

# Why do You need to Optimize Feedback Loop to Be a good developer?
A tight feedback loop can make you work smarter, not harder. Good developers have a tight feedback loop because it helps them to be more efficient and effective in their work.

## A tight feedback Loop makes you work smarter.
A tight feedback loop allows developers to get feedback quickly, so they can identify issues and fix them before they become bigger problems.

They usually iterate their work more rapidly, making small improvements and adjustments. Test your assumption faster and avoid making the same mistakes again.

## Tight Feedback Loop helps you avoid SI (Site Incident)
Because you will be getting feedback often, you can identify any mistakes and errors early and often. 

That is why CI/CD and various automated tests are important. As soon as you get feedback that your change in production is not working, you can quickly roll back and identify the root cause before it propagates to the wider crowd.

Good developers always invest in creating great automation and observability tools around the service that they create because it helps them detect any anomaly. 

# Strategies To Make Faster Feedback Loop
## Work in Small Batch Size
The more time your team spends working on an idea without shipping any product, the longer your feedback cycle becomes. Without feedback, you are just guessing and arguing with each other if the feature works.

Same with submitting a PR. Submitting a huge amount of PR will increase your feedback loop and the time of your development process. Smaller PR doesn't necessarily save reviewers time, as they must review multiple batches. However, this indicates that you are progressing in your project.

Draft PR is very useful for creating a minimum viable version of the feature you are trying to ship. It provides quick feedback for you to figure out whether the approach has a chance of working.

When creating tasks, it is best to create them that will deliver some business value. For instance, creating a protobuf schema for getting user requests may sound like a great task, but it doesn't deliver any business value. Instead, creating a get-user request that includes the schema creation and the implementation is a good task because when it gets shipped into production, the feature delivers business values immediately.

## Get Scrappy
You want to get feedback early from your customer about the business impact before creating a beautiful architecture diagram.

Prototypes are another good way to go because they effectively capture the vision of your product's future and how it will serve customers' needs. 

When given a problem to implement from the product, you want to ask the purpose and "why" of that solution. 

Your goal is to figure out how to create the fastest solution to the problem to test and get that initial feedback.

Sometimes the simplest solution is to create a hardcoded string telling the customer that the feature they are clicking will be coming soon. This is a great way to gather feedback to understand if it is worth going all-in.

## Continuous Testing
Many languages contain a simple monitoring script to help re-run unit tests each time we develop a feature. For instance, nodes JS contains nodemon to help developers get instant feedback on their code. Scala has an sbt-revolver to help developers get a super-fast turnaround for developing Scala applications.

Automated testing is also a subset of continuous testing. For instance, we want to know if the new feature we wrote passes regression testing by running a unit test and an integration test at the end of our development.

Testing means confidence in your code, which is holy and magical for developers.

The test makes you go faster.

## Continuous Integration and Deployment
Although CI/CD is the norm in the software development company, once upon a time developer would spend a few months building a new feature. They'd go through the enormous effort of "integration" to make sure what they developed works with the latest.

In the 1990s, someone had a bright idea of doing integration continuously. This reduced the integration risk substantially by minimizing and frequently eliminating the code drift between a mainline branch and an in-process feature.

Continuous deployment (delivery) concepts emerged in 2009 when authors Jez Humble and Dave Farley in Continuous Delivery book mentioned the concept of deploying every single feature to production was taken from the concept of continuous integration.

CI/CD (a brief of continuous integration and deployment) allows developers to continuously test and deploy their code in a highly automated manner, which helps them catch and fix errors quickly and ensures that the software stays up-to-date with the latest changes.

# Recap
Feedback loops are so critical when shipping product features.

As a software developer, feedback is like a compass that guides you on whether things are running smoothly or need fixing.

To have tight feedback, you have to leverage all the tools that you have. However, a tight loop starts with a mindset. When given a coding task, one of your first questions should be, "How can I get feedback on this feature as fast as possible?"

Working in small batches and getting scrappy when developing a feature prototype is crucial. You can speed up the process by writing unit tests first and re-running them regularly to gain confidence in your progress. 

Automating your software development process using CI/CD tools can tremendously shorten the cycle and allow you to catch any errors early on. 

Implementing these practices will save you time and effort and elevate your final product to the next level.

What are some strategies that you adopt for a tight feedback loop? Please comment on them below!

## 👋 Want to read more articles like this?
I publish one article every week about actionable ideas and advice about software engineering careers, and life at https://pathtosenior.substack.com/

Originally published at https://pathtosenior.substack.com.