As software developers, we put our hearts and souls into writing code that we're proud of. So, when someone provides feedback on our work, it's natural to feel defensive. However, it's essential to recognize that feedback is a vital growth opportunity, not a personal attack.
In this blog, I’ll share some life hacks I use to learn and grow through the feedback I have received so far in my career.
The initial reaction: You get defensive
When it comes to receiving feedback, most of us have an immediate emotional reaction that can be difficult to control. Whether it's a colleague or a senior manager providing their input on our work, our default response may be to feel defensive, dismissed, or even angered by their comments. This is because our brain's automatic response is to protect our ego and self-image.
Imagine you've spent hours writing a new feature for your team's project. However, when you present it to the team, one of your team members points out a few issues with the code. Maybe function names are not descriptive, or maybe the behind-the-scenes logic is not efficient.
The first thought you would probably get is - "But I spent hours on this! It's perfect just the way it is. This person just doesn't understand my vision."
Well, that possibly could be the case but just not most of the time.
Hack 1: The 2-minute rule
Initially, I had the same feeling but then to overcome this what I call the reflex reaction, I tried the 2-Minute Rule. Well now when you receive the feedback, take a 2-minute pause before responding. This is a simple yet very effective hack.
A brief pause allows your emotions to settle which helps you think rationally. Research shows that even short breaks can significantly reduce stress responses.
Taking a step back helps you view the feedback without personal bias, focusing on its content rather than delivery.
It essentially allows you to fully consume the information and assess its value to your growth.
What you essentially do here is create a buffer between your initial reaction and your response. This will allow you to listen carefully which is probably one of the most important skills when it comes to receiving feedback and also can help in responding in a more constructive and open-minded way.
Hack 2: Frame feedback as a question
Let's go back to the previous example. You've just received feedback on your code, and you're feeling defensive. Now to channel your initial reaction, try reframing the feedback as a question. For example:
Instead of "Your code is not efficient" reframe it as "What can I do to improve the efficiency of my code?" “What is the impact it causes?”
Instead of "Your function names are not descriptive," reframe it as "What are the other possible function names that are more descriptive and clear?"
Ask yourself the reframed question, try to come up with a solution and then use the solution as a starting point for your response. This shift in perspective creates the foundation of a growth mindset, encouraging problem-solving over blame.
Try to understand the usefulness of the feedback
Once you've added your initial reaction, it's essential to understand the usefulness of the feedback. Not all feedback is equally helpful. Remember, you're the expert on your work. While others offer valuable perspectives, the ultimate goal is improvement. At the end of the day, you are the one who worked on the code and who essentially understands it the best. The best feedback can be yours.
Let's say you've received feedback on your code from a colleague. They've pointed out a few issues with the logic, and they've suggested some alternative approaches. However, as you review the feedback, you realize that the colleague's suggestions are not relevant to the specific problem you're trying to solve.
In this case, you need to assess the usefulness of the feedback and decide whether to act on it or not.
Hack 3: The 3-Part feedback filter
I use this almost every day. To assess the usefulness of feedback, try using the 3-Part feedback filter. This hack can help you:
Understand the feedback objectively
Identify what is valuable and what is not
Prioritize your work items based on the feedback\
To use the 3-Part feedback filter get answers to the following questions:
Is the feedback specific, clear, and actionable? Does it provide concrete examples or suggestions?
Is the feedback relevant to the specific problem or goal you're trying to achieve? Does it align with your priorities and in some cases values?
Do you have a clear action item based on the feedback? Is it feasible to implement the suggested changes or improvements?
You can use this method to consistently evaluate feedback from colleagues, managers, and mentors. Now for this method to work you will have to be honest with yourself considering some feedback may not be worth acting on.
How I see this is essentially like where feedback is not always right or wrong. It's often a matter of perspective, and you need to use your judgment to decide what to do with it.
Use feedback as a source of constant growth
Let’s consider the previous example where you have received feedback from your colleagues and manager on your code, and you've used it to make significant improvements. As a result, you've become more confident in your abilities and more efficient in your work.
However you realize that you're not getting as much feedback as you used to. Your colleagues and manager are not pointing out as many issues, and you're not sure if you're still improving.
In this case, you can use the Feedback Loop method to drive your growth using continuous feedback.
Hack 4: The feedback loop
Imagine you're driving a car, and you're trying to reach your destination. You're not just looking at the road ahead, but also checking your rearview mirror, side mirrors, and GPS to ensure you're on track. This process of checking, adjusting, and re-checking is similar to a feedback loop.
A Feedback Loop is a cycle of:
Action: You take an action, like driving the car or writing a piece of code.
Feedback: You receive feedback, like a GPS alert or a colleague's comment, that tells you how you're doing.
Adjustment: You use the feedback to adjust your action, like turning the steering wheel or refactoring your code.
Repeat: You repeat the cycle, taking a new action, receiving feedback, and adjusting again.
Now in software engineering let’s understand this using an example where you're working on a new feature and you've written a piece of code, but you're not sure if it's the best solution. You want to make sure it's efficient, scalable, and meets the requirements.
Now in this scenario, the Feedback Loop becomes a cycle of:
Writing Code: You write a piece of code, like a function or a module.
Get Feedback: You receive feedback from your peers, like a code review or a test report, that tells you how your code is performing.
Refactor: You use the feedback to refactor your code, making improvements and optimizations.
Repeat: You repeat the cycle, writing new code, getting feedback, and refactoring again.
Examples of Feedback Loops in Action
A dev team using CI/CD pipelines to automate testing.
A developer using a code review tool such as the Github Copilot to receive feedback from peers and improve the code quality.
A Devops team using monitoring and logging tools to receive feedback on system performance and make adjustments.
To use the method you essentially have to trim down your focus area i.e. you’ll have to identify a specific space where you would want to improve.
Closing thoughts
Receiving feedback can be challenging, but it's essential for the growth of software engineering. Try using the hacks mentioned in this blog and share your experience.
Most importantly remember that affirmations can always help us stay on track, focusing on the type of software engineer we want to be, the thoughts and behaviour we aim to display, and the kind of person we want to be.
So, the next time you receive feedback, take a deep breath, repeat the affirmation, and use it as a growth opportunity. Your future self will thank you!