You sit at the desk of your home office with a fresh cup of coffee, ready to start your first day as an engineering manager. You worked hard to earn this promotion, and can’t wait to lead your team to success.
But as you settle in with your new responsibilities, you feel the discomfort of doubt. Your calendar is packed back-to-back with meetings about budgets, timelines, and HR policies. These are things you rarely worry about as an engineer.
After a while, when you finally find time to dive into some code, you freeze up. This complex codebase now seems foreign to you, the nuances lost. Your technical skills feel dull, your instincts fading.
In team meetings, your expertise starts to feel inadequate. You nod as others debate adopting new frameworks and libraries and participate in the decision-making process only at a logical level. The architecture details escape you now, and you have to fully rely on senior team members to design the systems on a grand scale.
During code reviews, you struggle to provide meaningful feedback because you lose familiarity with the codebase, and it’s hard to keep up with new patterns and approaches as they evolve. You feel out of touch on the technical front as engineers discuss the optimizations they’ve implemented. The engineering cutting edge is passing you by.
Your afternoons are consumed with emails and status reports. The hands-on coding you love now barely squeezes into your calendar. You miss the thrill of solving problems and shipping.
The transition was supposed to help you impact engineering efforts on a larger scale. But instead, you feel yourself growing distant from the work you once loved. And all this happens when you feel like a fish out of water because you don’t know what to do next.
Your excitement turns into doubt. Can you lead strategically while also staying connected to engineering? Can you balance management and technical skills?
The answer is yes. This role requires you to wear two hats, and it’s for you to choose which one you wear when. With determination and time management, you can avoid losing the hands-on skills that got you here and do the manager’s job, too.
Maintaining Your Skills
One day, you realize you’re nodding blankly as the team debates on a new library you’ve never heard of. It’s a wake-up call — you must be more intentional about maintaining your technical edge in this role. You have to balance strategy with hands-on skills.
Start small. Block off some time in the mornings every week to learn something new. It could be setting up a Python backend or experimenting with React Native. Read Hacker News and tech subreddits in the evenings to stay in the know.
Talk to the team when you can, and ask them to explain recent features and challenges. People will help you even if they internally roll their eyes at your basic questions.
You don’t have to lose the part of you that geeks out over tech just because you’re a manager now. You just need to make time for learning constantly.
As a result of getting more involved, You’ll be more confident in technical discussions. People can tell you’ve been making an effort.
Improving The Process
Maintaining your skills to stay relevant is one thing, but what’s next? Zoom out and look at the development process as a whole. Search for areas that need improvement. This is the job of an engineering leader because everyone else is inside the process, busy with their day-to-day tasks. Working on the process holistically will also help you maintain your tech expertise from a different angle.
First, brush up on critical patterns like DI, observers, factories, and singletons you don’t know well yet, if any. Based on your project needs, evaluate when and where patterns make the most sense.
Pay close attention to code refactoring. Set aside time each sprint to tidy things up and improve structure. Refactoring helps the code gradually improve over time through small, incremental changes. Lead some refactoring sessions if you have time, or assign someone skilled for this role. It will show the team you take this seriously. No one’s code is perfect from day one.
Insist on clean code, too — meaningful names, modularity, DRY principles. Your team’s codebase should be readable, maintainable, and testable. Set a good example with your own coding practices if you have time to code, or use the code from the best people on your team as an example. When engineers people look up to hold themselves to the highest standards, others will follow.
Finally, use code reviews and refactoring sessions to spread design knowledge across the team. Develop well-rounded engineers who understand what good design looks like.
Getting Things Done As a Team
Ok, great, you’ll dedicate some time to your skills and expertise and work on the overall process. Is that all? Well, you still have one more thing to work on — making sure your team delivers. Worry not. You just need to shift gears a bit to look at the one dimension engineers despise — time. Here’s the project management 101 to get you going.
Start by managing stakeholder expectations. You know how much effort realistic features require. Push back kindly when asks get unreasonable. Break initiatives into phases so you can deliver results without overcommitting.
Next, break bigger features into tasks for your team. You speak their language — you’ll know what jobs should go to who. Watch for potential pitfalls that could slow things down. Spread the work so you don’t overload anyone.
Oversee the workflow from start to finish. Check progress, stay on top of risks, and clear roadblocks quickly. Share plans clearly and touch base regularly to keep projects on track.
Don’t forget about collaboration, too. Make sure everyone — engineers, designers, QA, product folks — communicates well. Clarify goals and prevent silos. Bring alignment between everyone.
Keep quality high by enforcing good practices like code reviews, testing, and documentation. Don’t let urgency undermine maintainability. Support what you know works long-term.
And, importantly, motivate and develop your team. Give engineers autonomy balanced with guidance. Encourage growth. Inspire them to bring their creativity.
Thriving as a Tech Leader
Making the jump to engineering management while keeping your technical skills is tricky. But if you can dedicate time to stay on top of the latest tech and industry trends, brush up on fundamental software development principles and best practices, and stay involved in the entire software development lifecycle, your transition to the management role will be a success.
Of course, the question is always how you do it when you also have meetings back-to-back and many new tasks like hiring, performance reviews, etc. But that’s doable, too, and it gets easier the better you get at managing yourself and delegating.
No one said it would be easy. After all, if managing engineers would be so easy, everyone could do it. The opposite is also true — not every developer is well-suited to manage developers just because he has the engineering skills. It’s a job where you have to live in both worlds — technical and managerial, slowly shifting to the latter.
Originally published on Medium.com