Sunday, October 19, 2008

Typical

Software, while wildly successful as a commercial product, is an incredibly young discipline. The tools of the trade are just barely starting to take shape when compared to many other disciplines in medicine, engineering, law, or government. Software has drawn mathematicians and engineers, tinkerers (with their own special name in software, hackers)—even artists. The work itself is a combination of these skills—art and engineering in software design and architecture; detective work, forensics and problem solving in debugging; modules assembled like so many bricks and sticks of a builder. Any one of these fields of work has a tradition of established hierarchy and career path, via fellowships or tenure in academics, apprenticeships in the trades or hierarchical promotion in engineering.

Here is a relatively standard perspective toward “management” from an evolving software professional:

  • Early career: I don’t know what is good or bad about my managers.
  • Intermediate: I know what I like and what I don’t like, but I am not ready to try to do better than the professional managers around me.
  • Midcareer: I could manage better if “they” would put me in charge.
  • Every day after that: I should have tried to be in charge, but I’m too busy.
It is important to distinguish the types of management and make sure the one you are seeking is the one you really want. If you are given a new challenge, determine which role is actually given to you and whether that is a stopping place, a dead end, or the right track:

Working Lead
· Performs the same function as everyone else on the team, with some time allotted to leadership functions
· Handles escalations from within the team and mentors team members
· Responsible for schedule commitments made by everyone on the team

Technical Lead
· Responsible for directing technical decisions for everyone on the team
· Go-to person during design and requirements crises

Manager
· People “report to” you for formal human resources issues (compensation, promotion, etc.)
· Review performance of team members
· Interview new team members
· Report to superiors on entire team’s performance against goals and budgets

The manager’s role is to serve the team by making sure that their needs are met, which includes providing a steady stream of well-formulated tasks, suitable to the skills and experience level of the recipient and prioritized by the business. The job is a continuous stream of decisions and communication that can be intensely exhausting at first, especially if done well. The business pressure comes in the form of large projects, which are often ambiguously defined. The manager’s role is to divide and conquer. How he or she chooses to do this will mean the difference between success and failure.

Thanks for reading this Management Use Case. I'm the co-author of a new book on software development leadership entitled You.next() that features dozzens of other use cases for leadership. Please see more at www.youdotnext.com.

No comments: