Monday, September 17, 2012

Managing Upwards


How do you keep you job as an engineering manager?  Even if you are not in that dire of a situation, you still may be asking yourself, "how do I get promoted?!".  Well, I assume its a bit different at every company, with every realm of higher-ups you get.  Some you may just have to kiss ass to, others, you may actually have to do your job well.  But if you are just taking care of your people, then how do you show it?  Why does upper management care if you are taking care of your people; some may not really care.  But there is a couple of things they do care about that you can work on to prove to your boss you deserve that promotion.

1. Hit Your Dates
Lets back up a second.  First you have to commit to your dates.  If you live in a modern company, you as a manager will have some sort of influence on the dates that the project is committed to and hopefully a lot of control.  The first thing you must recognize is that you should never commit to a date unless your team believes in the date.  In fact, I am now so far removed from the day to day work in the project in my current career, that it would be insane for me to commit to anything that my trusted team first didn't agree to. The teams success is my success, and therefore I believe the teams commitment is then my commitment.  Often times I'll pull the leads of the engineering projects to discuss dates and feasability.  After we decide on something we agree on, we present it to the rest of the engineering team with reasons why we've picked this date.  Look around the room for concerned faces; no one will come right out and say "your crazy" to a semi-realistic date, but concerned faces have something to say that they don't want to say.  Pick on them to say something and see where the conversation goes.  The lead(s) may have forgotten some key factors the other bright minds in the room are picking up on.  You'll probably never get 100% buy in from your team on a date, but if over the majority believes in the date, go with it.

Always commit to dates with a certainty percentage.  At the beginning of the project your cone of uncertainty is large and you should always remind and give visibility to that.  if you say "We'll be done in 6 months" vs. "I'm 45% confident we'll be done in 6 months", people will apply a very different thought process to your estimate.  If that jerk in the room says, "45%, what do you mean?  Why can't you give me more accuracy?", simply look at him and say, "We haven't written any real code yet".  You don't know what problems you'll face, and all the planning in the world won't uncover emerging tasks, although you should estimate you'll have many.

Make sure to look at Company holidays!  Also assume each engineer will take a week off some time during the summer months, and a week off during the winter holiday season.  Being in the US and having a lot of holidays around December, I always remind producers and product managers "Remember, December is only a 2 week month".  This isn't because the holiday the company allows is actually 2 weeks off during December, but a lot of people decide to use their PTO during this time.  And the other who are in the office don't have the support to be as effective with all the missing engineers.

Keep visibility on your dates with early and often updates to your managers.  It much worse to push back the product 1 week before ship instead of 1-2 months before ship.  Regular reports to your managers about the dates and their realism will make you look good, show the team you live in the real world with them, and have your managers discussing timelines in the real world all the time.

Remember that it was going to ship when it was going to ship.  If the product shipped in March, but you estimated it would ship in January, it makes you and your team look bad for shipping late.  But if you ship in March but you committed to shipping in April it makes you and your team look good.  Isn't this a little insane to say the least?  The product really shipped in March in both cases!  It all comes down to perception of you and your team on your estimates at this point.  Don't you want to look good by making your team look good?  If so Under Promise, Over Deliver.  It will still ship when it ships, and this way it will make you look good!

2. Retain Your People
My mentor told me, "There's two ways you will lose your job, Phil; if you keep missing dates, or you can't retain your people".  God knows I don't have any time to do the work; I better damn well keep my people interested, happy, and productive.  The actual methods on how to retain your people will vary from company to company, but I find that gaining your place in leadership through respect from your employees is the first step through retaining your employees.  I've found a great way to lead is leadership through service.  Your position is a place of power, but you need to give that power away to your engineers to let them inform you on the best decisions to make.  Beyond that, read a previous article named Engineering 101 which leads to, what I believe, the best way to retain your employees.  

3. Hire a Good Team
There is no understating that the people you hire need to be able to get the job done, but never forget about the "meta" in your team and workplace.  Usually your team will make it very clear if someone is technically competent or not, but you don't need to worry about that too much, it will fall out in the interview process.  But remember your team is essentially a family, take a look at my previous article on "I Don't Want To Interview Candidates" for more detail.  The best team develops friendship, that last much longer than the job, and friendship are developed because of personal connections.  We're fortunate that we at least all share one common interest, technology, but we probably share many more.  Now granted, this isn't to say that you should not hire someone that won't have huge connection with the team if they can get the job done, but you definitely shouldn't hire someone that will clash with the team's friendship culture and detriment other friendships from being formed.  And also never forget about the cheerleader on your team.  There are some people that may not be the top notch engineer, but HAS such a positive attitude that it brings the rest of the teams morale and productivity up.  These types of people are essential catalysts to any great team to keep spirits high, friendships forming, and after work outings happening.

Wrap-up
Do this, document it, and keep this ammo close to your heart.  When it comes time to go into a review, or even describe why you were valuable at your last company to your new manager in an interview, this ammo will be invaluable.  It will serve you well.

Thursday, September 6, 2012

I Don't Want to Interview Candidates


If I had a nickel every time I heard about engineers complaining in some fashion about interviewing, I could fill a german beer boot with nickels and have enough left over to buy another german beer boot filled with beer.  Its understandable; its just plain awkward to talk to a random person for between 45 minutes and 1.5 hours.  There's not many engineers I know that go out and roam the bars on their own looking to pick up new friends or chicks.  We normally are introverted and would rather talk to someone we know, or that thing we know the best, our computer.  Add on top of that the fact that now you are the one coming up with questions, and testing someone's knowledge on them, and you've got a full scale mutiny on your hands from the engineering team.  Not only do I have to talk to this person i don't know, but I have to come up with questions, and then, some how, assess the successfulness at this company based on those questions all in a short time period?

Admittedly, interviewing is a fairly insane and crazy process that we have.  Your advising your company whether to make a fairly large bet on a person after only a short time span.  I don't care how crazy you are, I know that I could sit at a craps table and talk to the dice for over 45 minutes and still not want to bet 85k on a single roll, but this is what companies in our industry do - except they have 5 engineers talk to the dice.

So how do you, the Engineering Manager get your team to participate in this insane ritual, have valid, accurate feedback, and have the final say on how to advice the company on if they should roll the dice.

The simple answer is, I don't know; the more complicated answer is I have found a couple of techniques that work on engineers that are already in a good team, and like their job.

1. Your teams a team, keep them a team
No one on one in person interviews.  Your team doesn't work in silos, do they?  The interview should reflect as much of the real work environment to the candidate as possible.  Not only does this make the engineering more comfortable being with their peers, but it gives the candidate some insight into how this companies communication and culture based on the interaction between the panel interviewers.

Furthermore one on one interaction is always vastly different than group interaction, and not only is the interview a place to test your candidates technical skills, but how they deal with people, not just a single person.  Although this is all meta-information no one will be cognitively listening or recording, your engineering will bring up if something was…odd.  Trust in that, delve deeper, and find out what really made the interview weird, it may just be that the person is not good at working with people.  There are plenty of jobs for people like that that pay quite well, but there isn't one sitting next to my engineering team.

Billy is terrified of conducting interviews, petrified of talking to people he doesn't know, and actually has never done an interview before in his life, but Billy's interviewed around, and remembers some good questions he was able to pass in his previous interviews before he landed the job with you.  Billy, more than most arguably, needs to be in interviews, but keep it in the team.  Put Billy with 2 other experienced interviewers in a panel interview.  Billy doesn't even need to talk, he can just listen.  Not only is he learning how to interview from some veterans but he's also assessing and obtaining an opinion on the candidate.  Billy will see something completely different than the other interviewers even though they are all in the same room.  For an Engineering manager, Billy is one of the greatest accomplishments because not only do you get feedback from an inexperienced member of the team, but you are letting Billy be naturally mentored by his peers, and add some interviewing experience to his resume and your team.

2. Let me introduce you to your new roommate
Think about it; we don't work 8 hour jobs, but lets assume we did.  Lets also assume a healthy sleeping habit of 8 hours.  Lets also assume 1 hours to get ready in the morning, 1 hour to get to work, 1 hour to get home from work, and 1 hour for lunch.  If I've done my math right that leave you 4 hours every day to your own free time, which includes your breakfast and dinner time.  If your company decides to take a gamble on this person and hire them onto your team, you literally will be spending more time working with this person everyday than you have free time at home when you are awake.  Taking this one step further, friendships often start to bond in great teams, and your about to let this person in.  Not only will you be working with this person for 8 hours everyday, but you'll be going out to beers with them and spending part of your precious 4 hours in their company.  Can you work with that person everyday?  Can you live with that person everyday?  Do you really think they belong in your clique?  Its hard to tell right?  Not only that, but you only have 1 hour face to face with the person to determine your next couple years at the company, so you better take the hour seriously, and you better meet this candidate to know how you would answer the above questions.  The alternative is you don't get to interview them at all and a new member is injected into your team with out you being able to answer the above questions.  Now that seems like a huge gamble be to me.

This is the true story I always tell my engineers about interviewing that makes them turn around full circle from "I don't really want to interview", to "I should interview every candidate":
I dated my wife since high school for 9 years before we got married.  9 years!!! Seems a little ridiculous, but with the divorce rate in this country I wanted to make damn sure I was adult enough and really sure about a commitment I was about to make for the rest of my life.  Now, I see my engineers more than I see my wife.  With my 10 hour work day alone I see my engineers much more than my wife.  Add on to that the parities, beers, and general tomfoolery that goes on after work and you've not just got a team, you have a family.  Probably more than you'll see you own family.  I had 9 years to decide on a commitment for the rest of my life, you, the interviewer, have 1hr to make a decision about a candidate that will join your family for the next couple years, or as long as you decide to be employed here.  

Every time I tell this story, the engineer's eyes open, and they finally realize that interviewing is no small matter, but actually a huge decision they should think on deeply, much further beyond, "can this person get the job done".

3. Lunch is a Good Thing
I try to get every single engineering on the team to interview the candidate, even if its just for 15 minutes, just to let me know that they can work with the person, but what about those engineers that are always just "too busy".  They can never find the time in their schedule for the interview, and you also may see justification to their claim?  Well - they have to eat!  Send them out to lunch, even coffee or snack with the candidate.  Your company probably can at least afford to pay for coffee for the candidate if budget is an issue.  Not only will this get the engineer away from their desk, get the blood moving from their butt to their brain, and stop stressing about work for a little bit, but it also shows the candidate that you care about your people here and will send them out for some coffee or lunch with a candidate.  Its a nice little marketing tool on the candidate, and it gets that engineer involved that never seems to have the time to get involved.

Wrapup
How do you make a good bet?  Some in the stock market would say to diversify, and that's exactly what you should do here.  Get as many engineers as involved as possible.  And how do you get them involved?  You make their care about the interview process, and make them comfortable doing it.  There may be some other ways to get your engineers in the mood for an interview, but these are what have worked best for me.

Wednesday, September 5, 2012

Engineering Management 101


I have been in the Engineering Management gig for approximately 1 year now, and  though many experiences have stuck with me, one stands out above all.  

Before my current employment, I had never had an "engineering manager" to report to.  Sure there were people I reported to as an engineer, people who critiqued my perforce, gave me feedback, and most importantly, suggested the raise amount to corporate after the end of the year, but they never went by the title, "Engineering Manager".  Normally, they were the "Lead Engineer" of a project, or the CTO directly.  My normal interactions with these people was reporting progress, or approached them about a particularly hard technical problem because I was stumped.

In truth, I never did work for an Engineering Manager until my recent job.  This brings me to the topic of this article, the same question everyone has when they encounter their first Engineering Manager.  

"What does an Engineering Manager do?"

The real question I will strive to answer is, "What does a good Engineering Manager do?"

During my trails to become an Engineering Manager, my mentor told me something that will stick with me throughout my career:
"An Engineering Manager ask 3 things when they come into work each day.  They ask: 
1. 'How are you?'
2. 'Are you clear?'
3. 'What can I do to help?'"

1. How are you
An Engineering Manager's first and foremost concern is to their people.  The gauging, engaging, and reacting to your employees' individual and collective minds is the first step to becoming a good Engineering Manager.  Unique to this type of career path, your first priority is strangely not to your own boss, but to the people that work for you.  You are the voice of your employees, and, at times, this will bring you at odds with your direct superior.

Happiness
During their first day, the new Engineering Manager usually calls a meeting to introduce themselves.  They will most likely address their engineers about their experience, some philosophies they believe in, and wrap it up with, "It is my job to keep you happy."  As clique as this is, ensuring the happiness of employees is always top priority as an Engineering Manager.  Happiness of the engineers ensures two vital catalysts to software development: retention and productivity.  

Unhappy engineers look for new jobs, and happy engineers don't.  Unhappy engineers take the first opportunity that comes their way while happy engineers struggle greatly with the decision if the opportunity is worth while.  Billy, your top engineer, gets a better offer from Acme Co. Engineering.  He's really happy working in your team, and love his company culture.  Billy is struggling deeply with the decision to take the job that is offering more money, or stay with you, where he knows he is happy.  Billy currently lives is a known quantity of happiness working for you; why fix it if it isn't broken?  If Billy is feeling this way, the Engineering Manager has done his job.  If the Engineering Manager controls the budget, maybe he can entice Billy to stay with a little extra coin, and Billy will give you that chance.  If Billy is happy, he'll probably approach you about is dilemma, and give you a chance to redeem his employment.  In my experience, happy Billy considering another job offer is a rare occurrence; most engineers delete recruiters out-reach requests quickly if they are happy, and don't usually go out looking to leave a job they are happy with.

Even if you keep Billy happy, there are scenarios out of your control in which Billy may have to leave.  Someone in the family maybe sick and he may have to move to a job closer to home,  Billy finally got an offer from his dream company he's wanted to work at since he was in college, or Billy's wife finally got her opportunity across country and he is moving with her.  There are some cases you can't control through happiness, but just remember, in these cases, Billy might have left sooner if you hadn't kept him happy up until now.

Engineers are engineers because they like Engineering.  If an Engineer didn't like engineering, they probably didn't get through that first Computer Science course in college that separated the boys from the nerds.  Furthermore, if they didn't go to college and are an engineer, it means they probably are even more passionate about engineering because they had the initiative and drive to learn it on their own.  Productivity is extremely easier to get from someone that already likes what they are doing.  in fact, I believe if someone is happy with their work environment, and loves what they are doing, there is nothing more you can do to get maximum, long-term productivity out of them.   
Maximum Productivity = Happiness of Employee * Love for Job.

Being on the Inside
Coming from an Engineering background, I never imagined phycology and ability to connect with individuals would be such a vital role in Engineering Management.  Getting to know your team, their moods, their development style, their coding style, their hobbies outside of work, and their favorite beer (ect..) can be huge assets to you as an Engineering Manager.  What makes each one of your employees tick?  Its your job to figure each and every one of them out so that you can motivate them at low times and celebrate with them at high times.  The more you take an interest in your employees lives, the more they take and interest in you.  As your relationship grows engineers will divulge more information to you about themselves, giving you the ammo you need to read them better.  Come in each day and silently ask each of your employees "How are you", and you should be able to read the response in the mood each morning.  Do you need to keep you distance today?  Can you squeeze a little more out of the engineers tonight if you grab them a 12 pack?

2. Are You Clear?
The second point of being a good Engineering Manager is the ability to figure out what needs to change to keep your team's wheels greased as much as possible.  Find the development processes and communication tools that work for your team so you can minimize your involvement, and keep and ear open to how they can grow to better increase productivity.  Give them the tools, and clarity, and you'll be able to sit back and play bouncer to outside interruptions.

Being Open Minded
Optimizing Clarity among the teams comes with the Open Mind to be flexible, and the patients to find the right process that fits the current team.  Your favorite process might be a good starting point if your team has nothing in place, but don't expect to stick to your strict rules.  A good way to get buy in from your team when you are implementing a new process is to enter the room before the informational meeting where you will go over the new process and say, "Today we'll be starting to use , as I always say, if it works for this team, we'll keep it, if it doesn't work, we'll tweak it or ditch it and try something new".  Iteration on your process, just like your products, is what will make them successful.  Listen to your team, they have a lot to say.  They are the ones living in this  process day to day while you are in interviews and meetings.  They know what sucks, and what is awesome, and what you and they can do to make it better.

Have a List
Task board, Task Tracking Tool, Whiteboard, Bug database, anything!  There are great engineers out there that will spend their hours doing something great for your product when they are out of work, there are great engineers out there that will spend hours doing something interesting and useless to your project when they are out of work, and then, most concerning, there are average engineers out there that will just get bored.  As a fellow Engineering Manager Rand's says "Board people Quit".  If you are like me, your not at your desk a lot.  Your engineers need to be clear on what is next, so when next comes, and your not around, productivity isn't lost.  If you are the blocker, you're either over worked, or not doing your job well enough.

3. What can I do to help?
This is the part of our job where we plug the holes in our ship with our fingers, toes, and anything else we can spare.  Understaffed on QA, guess what you'll be doing sometimes?  Need some extra coding done, you'll be helping out here this week.  More realistically, Engineering managers should spend this time on deeper retrospectives of what their employees are thinking and saying about the development processes and communication tools.  What wiki tutorials for new hires need to be written that were never gotten around to?  What is that one piece of technology that everyone hates, but no one has time to research a solution to?  What's this month team-building activity that you'll put together?

Be what your team most needs you to be right now in your spare time.  If you've been listening to what their saying, you'll know where the holes are in your ship, and its your job to try and fix them, or at least plug them until they are available to fix them.

Wrap-up
Keep these in mind, and you'll soon start to see your team respect, and even adore you.  Lose these things, and you'll simply loose your team and even your job.