At least two-thirds of even a historical software engineer manager’s role involves non-technical managerial, administrative, and even HR-related tasks. Most of these tasks are almost as foreign to developers as writing code may be for a non-developer.
There are many other things that non-developers can bring to the table to more than compensate:
- Company and industry knowledge to help UI/UX, internal metrics, prioritize objectives and analyze competitors.
- Best general management practices for scheduling, planning, budgeting, observing company objectives and HR policies.
- Potentially stronger social and interpersonal skills as there’s some truth in that many software developers tend to have more introverted personalities.
- Not knowing all of the technical things can be a plus insomuch as instilling a need to verify the basis for all decisions.
With the skills and experience non-developers do have, it’s possible to sidestep a lot of the technical considerations by focusing on management and leadership skills and learning Agile:
- Learn all you can about the Agile Methodology, and if working with an Enterprise, the Scaled Agile Framework.
- Consider pursuing certification as a Project Manager Professional.
- Learn how to use performance analytics like WayDev or Gitential to identify development issues by individual, team, project, and organization.
- Learn how to effectively use project management and collaborative tools like Jira, Slack, Trello, Wrike, Clickup, Zoom, etc.
- Work with your team to define and document coding standards, work processes (branching strategies), and other essential team resources.
A large part of being a software engineering manager involves developing a relationship with your team members. What are their interests, aspirations, career objectives? What programming languages do they know best and what would they like to learn? What obstacles can you help them clear to become better coders?
The job is also like managing or coaching a sports team – how do they work together? Can your work processes be improved? Are there tasks that can be automated? How can you facilitate knowledge sharing via code review pairing, pull request commenting, mentoring, standups, retrospectives, devising effective continuing education, and career path programs?