Agile Zone is brought to you in partnership with:

Mike is currently working as a senior LAMP architect for a San Francisco start-! !up. With over 30-years of exeperience in the programming field, his only comment is "I should know better by now." Micheal is a DZone MVB and is not an employee of DZone and has posted 12 posts at DZone. You can read more from them at their website. View Full User Profile

How to be a Great Tech Manager

07.08.2013
| 4513 views |
  • submit to reddit

manager

Managing a technical team is probably one of the most difficult tasks on the planet.  As a manager, you’re responsible to many masters: your leadership with their requirements for product delivery, your peers for coordinating deliverables and interpreting feature sets into technical specification, and your team of direct-reports who are, in some of your more uncharitable moments, walking poster-children for Asperger’s syndrome.

I’ve been a manager, a director, and a developer so, having sat on both sides of the fence, and having experienced a wide-range of management “styles” over the past few decades, I thought I’d offer some unsolicited opinions on the characteristics that move a manager firmly into the awesome classification — at least from the tech team perspective.

First of all, I feel that this is an important topic because the nature of the tech workplace is so dynamic and under constant change.  In the last twenty years alone we’ve seen radical shifts in the status-quo as it’s applied to software development.  Rapid development cycles coupled with ever-increasing pressures from senior management driven by increasing quarterly profitability or, in the case of start-ups, being first-to-market with a new product, have resulted in a constant stream of changing management practices.

One of the first lessons I was taught, as a new developer, was when my boss asked me: do you know what your contribution means to the company’s bottom line?

Me: Huh?  I, uh, just write code.

Boss: Ok.  Sure.  Let’s go with that and let me phrase the question another way:  Can you tell me how much each line of code you write is worth, in profit, to the company?

Me:  (head exploding…) Uh… no?  I mean, I can’t… I never… uh, … what?

My boss went on to explain to me that the company’s philosophy was that each programmer should have an awareness as to what their bottom-line contribution was.  Certainly not to the scale of individual lines of code, but more to the point — your work directly impacts company profitability and the products you generate, through-out their life-cycle, help the company to save or make money.  If you look at that amount generated, roughly divided by the amount of investment we spent (salary per hour times numbers of hours worked on the project) we can gain a rough estimation as to the viability, the profitability of your project.

Light bulb clicks on.

The point of that was that, in terms of the real “business” world, and I’m talking Michael Douglas in slicked-back black hair spouting euphemisms about the advantages of greed here: everything is about making money as far as the company is concerned.

As developers, we’re focused on the art of our work.  The creativity that results in a piece of code that does “stuff” faster, better, more-elegantly, than we’ve ever managed it before.   We’re painters of the ether-canvas, shoving bits around until they reach the perfect positions creating something from nothing, generating software that’s mind-blowing and terrible in it’s awesomeness.  Profit-what?

Managers are the gatekeepers to our zoo.  Managers (are supposed to) speak our language, appreciate our efforts, understand our problems, and share in our victories.  And, when they’re not doing that, they’re providing us with feedback, with product specification, and representing our cumulative efforts to their leadership and peers, defending budgets, justifying development expenses and headcount, and explaining why the deliverable date was pushed back another week because some teeth-and-hair dude from sales just feature-creeped the spec so that she can make her monthly quota selling an unreleased product.

Managers are the grease for the machine – they are the NCO’s of the corporate army – the ones that know how to get the work done, where the bodies are buried, and how much slack can be cut.

Or, simply put:  the first probability of your success in your job as a developer is directly proportional to the effectiveness and skills of your manager.

Over my career I’ve come to appreciate good managers and I know that truly great managers are as rare as winning lottery tickets.  Here’s how, in my opinion, you can tell if you’ve won the manager-lottery:

1. Managers Connect

A great manager listens to their team and hears their concerns.  A great manager evaluates team feedback within the context of corporate requirements and strives to reach a balance between desire, deadlines and reality of situation.  A great manager will trust that the team is telling them the truth – just the truth – and will be able to emotionlessly separate the wheat from the chaff. A great manager will balance the needs of the team with the requirements of the company and will be able to implement a plan of action that satisfies all parties simply because it’s the right, and often only, way to achieve success.

A great manager makes the effort to remain in-contact with all of his team members on a regular basis both individually and as a group.  A great manager knows the challenges the team is facing and what the team, or the individual, had to do to succeed.  A great manager shares these successes with all the team and, if warranted, with the company providing full credit where due.

You always know where your career stands with a great manager because you receive constant feedback on your performance, your progress towards your goals, and timely suggestions for self-improvement.

2. Managers Manage the Task

A great manager is one that, foremost, has a technical background.  If you explain to your manager how you had to refactor a method because of system-interrupts occurring during non-re-entrant functions, the manager should have some idea of what you’re talking about – enough, at the least, to appreciate your skills dealing with the issue you’re relaying.

A great manager understands the technology base and, while no longer considered an “expert” in current methods, still possesses enough high-level technical skills to contribute to technical discussions, or offer advice on methodologies that can be helpful in difficult situations.  A great manager understands that they hired you because you’re the technical expert — not them — and that it’s your responsibility to provide the solutions to the problems you’ve encountered.  A great manager manages the task and not the technology.

A great manger doesn’t impose technology pot-holes into your project plan because of their experiences with a particular tech set.  A great manager accepts that there exist many paths to a solution and what was acceptable several years prior may not be applicable today.  A great manager never mandates design issues without considering all the proposed solutions.  A great manager never forces technology solutions onto their team simply because it’s what they used to use back in the day.  A great manager accepts that technology solutions continuously evolve and that it’s your responsibility to make proposals that encompass the best solution for a task.

3.  Managers Manage

A great manager is a manager of time, tasks, requirements, specification, resources, and people.  A great manager maintains the view of the forrest while entrusting you to take care of the trees.  To that regard, a great manager passively monitors your progress through your workload by using whatever tools they’ve emplaced.  After all, a great manager, by the definition of being great, will have emplaced the management tools necessary to track team effort and progress.

This means your team is using a reporting tool that tracks your daily activity.  This tool could be something as simple as a trouble-ticket system (Mantis, Bugzilla) or it could be a full-blown Agile-based system like Greenhopper.  Regardless, the tool your team uses allows your manager to passively manage the project and is sufficient in it’s alerting to indicate to your manager exactly when their involvement should become active.

A great manager doesn’t micro-manage your work load, (unless you’re having severe performance issues), and doesn’t constantly ping you though-out the day inquiring as to status on the latest effort, regardless of how sensitive that effort is.  A great manager understands that solving difficult tasks requires your brain to be in a place where interruptions only delay the solution and the great manager knows when you need your “space” to complete your assignment.

If a great manager doesn’t understand why your time estimate for completing a task appears (to them) to be inflated, then a great manager will ask you to provide an analysis of your time estimate and will review your estimate with you.  If there needs to be adjustments in your estimate, you will reach those adjustments by consensus and not by mandate.    Additionally, when unforeseen tasks are placed into your schedule, a great manager will accomodate for the time required for those tasks.

A great manager ensures that you have the resources you need to accomplish your task within the agreed-upon constraints.  However, if you do need new hardware, software, or changes to your work environment, outside of the existing status-quo, a great manager will provide these if you can show how these changes will increase your productivity.  As a tech team member, it’s your responsibility to understand the base concept of ROI – return on investment, so that you can articulate to your manager why an out-of-budget expenditure will make the company more-profitable.

4. Managers Respect

A great manager respects the resources of his team: their skills, time, and requirements.  A great manager provides the tools necessary for the team to complete the tasks assigned within the time constraints that were agreed upon.  A great manager respects your personal life as much as they respect your professional life and is flexible in accommodating the various life crisises that arise both within the office, and without.

A great manager is not a clock-watcher nor do are they overly-concerned about when the work gets done as long as the work does get done within the timeframe established.  Great managers understand that exception events travel both ways and it may be necessary to require that the team provide extra effort and time in order to accomplish a task.  A great manager, however,  recognizes that team contributions that involve late-night, weekend, or holiday sessions are exceptions and not the rule.

A great manager understands that the team who is consistently working 60+ hours per week is doing so because they want to, not because they have to.  And, if they have to, then a great manager should also realize that the problem lies in their ability to manage task deadlines and not the team’s.

5. Manager’s Represent

A great manager represents their team in all aspects.  A great manager is a reflection of a great team and, to that end, a great manager is a great leader.  A great manager should be viewed by their team as a contributor and never a detractor.

A great manager leads by example and makes it clear to every member of the team how they are also an individual contributor to a team’s success.   If a manager expects the team to be working a full eight-hour day, then the manager also works a full eight-hour day.  A great manager is a  ”do as I do” and not a “do as I say” manager.

A great manager recognizes extraordinary effort visibly, and with great enthusiasm, to the team, to the department, and to the company.  A great manager always credits individuals with their contributions publicly and ensures that the reward for the effort are commensurate.

Conversely, a great manager accepts that a team failure is also their failure.  A great manager will analyze, with the team, why a particular task or event failed and will proactively make changes to ensure that the team is safeguarded from failing again in the same manner.  A great manager accepts responsibility for the team’s failure as much as they accept responsibility for the team’s successes.

I’m fully aware that a manager’s responsibilities extend to that beyond the team.  I attempted to write this article from the point of view of a team member and not as a manager, or as a director.  One of the perks of being in the trenches is the ability to criticize your leadership without fully understanding what it is they do.  Trust me, when I tell you, that the manager’s work-day consists of considerably more than just managing the team.  After all, if you think their job is so easy, then why aren’t you doing it if you think you can do it better?  Trust me, too, when I tell you that you’ll not want their job, or the accompanying pressures.

If a team is lucky enough to have drawn a great manager, then the team has to actively protect and even nurture their relationship with their manger.  It’s not at all uncommon for teams to collectively determine ways that they can help their manager succeed — without the manager’s knowledge — through extra effort and response.  A great team takes just as good care of their manager as their manager takes care of the team.  Over time, it becomes sort of a symbiotic relationship where the team and the manager are a single cohesive unit — a juggernaut of unbroken successes that become the ideal for the rest of the organization.

Every individual on a great team should reflect the skills, attitudes, and ethics of their manager.

Published at DZone with permission of Micheal Shallop, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Chris Shayan replied on Sat, 2013/07/13 - 7:57am

interesting post, what do you think about this?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.