I realize that there are similarities between software developers and software managers:
- Developers manage codes, managers manage people;
- Developers resolve bugs in the codes, managers resolve bugs among the people;
- A developer has to make decisions all the time, compromise his solution with different constraints; A manager has to make decision all the time based on people, schedule and budget;
- A professional developer always choose the right framework and right tool for the task, a professional manager choose the right person to do the right thing;
- A professional developer improves his code by keep constantly refactoring and reflection, a professional manager keep improving his team;
- A professional developer always follows the software principles and design patterns to guide his work, deliberately improve his skills, keep finding new tools; A professional manager will follow the agile patterns and other principles and philosophy (ex. The Art Of War) to guide his work, his has the clear picture of his vision, and keep finding the new process to improve the productivity of his team.
But in reality, unfortunately in my career so far I haven't found a manager which I can regard as a professional manager. Most of them I call them "event dispatcher". They care more about passing the command down to developers, focus more on his boss instead of developers, they don't care how developer finish it nor be interested in it. I even could not find his strategy of management. I really want he can show me how he solved a difficult issue creatively and beautifully, just like I saw my coworker solve an issue by using a pattern or a tool, but so far I haven't seen once.
Right now I know the reason why software industry is still primitive, why there are so many unprofessional developers, because most of our managers are unprofessional. If a manger dos not know the principles and rules of software, how can he manage well for his team? If a manager does not care his developer, how can his developer has motivation to become better?
A good manager for a software team just as a good coach for a soccer team. Professional developers do require professional managers.