Software engineers are a special breed. They are architects and builders of the digital world which it is the center of the modern world reality. They not only tend to be smart but have immense passion for what they do and strong opinions about how they do it. You will struggle to support them if they do not trust what you do and respect how you do it.
This is my top 5 guidelines that had helped me create effective organizations:
Absorb blame and redirect the spotlight.
Praise is a currency that you will want to spend on your whole team. When a customer or executive celebrates work done by your team, it is important that your engineers feel that recognition is for them. Do not be shy to bring those that make a difference to the center and spotlight.
When the feedback does not include clapping, then you are in front holding yourself accountable. Do not throw engineers under the bus to deflect blame. Apply correction internally after you had taken responsibility in front of your executives.
Keep it clean.
I have known exactly zero engineers that love meetings, status reports and tracking spreadsheets. Yes, some of those are important and needed but it is our job to keep them to a highly effective bare minimum. Interruptions and distractions are a heavy burden for engineers.
Focus on the why.
Context is critical. Goals are drivers. An engineer working on an assigned task is rarely happy. An engineer solving a problem that he understands where it comes from and what will be the impact when a solution is in place will most likely be very motivated. Your job is to set up environments that let them be co-creators and keep them empowered with information.
It is frustrating for engineers when they cannot find in their leaders understanding of what they do, what is hard and what is not. Effective communication cannot be achieved if you and the engineer do not speak the same language equally fluent. That is why is important to involve them early in the problems we are aiming to solve. This not only provides them with context, but you with enough time to understand the specifics of what is going to be done and where the challenges are.
Setting expectations is a group effort.
When it comes to committing to deadlines, your job is not to make assurances out of thin air but instead be the communicator of what your team is willing to commit. You are the leader: it is up to you push them as far as possible while keeping it real and respecting their opinions. Arbitrary deadlines are a recipe for disaster and the fastest path for engineers to start looking for a new job.