Friday, December 23, 2011

Free to be crazy

I’ve been thinking about why I am comfortable throwing out crazy ideas to my team. I don’t think it is solely my lack of concern about appearing foolish (although there is an element of that).

I’ve repeatedly told my team – everyone, not just managers – that one of their most important jobs is to keep me from making bad decisions. I need to know that I am going to get honest feedback from everyone. This gives me freedom to come up with crazy ideas without fear they will be accepted simply because they came from me.

How do you get the team to a point where everyone believes they can safely share feedback with you?
  • Reinforce the need to know the truth from your staff. Encourage people to challenge you. They may not do this initially. After all, you are the boss.
  • When you propose an idea, actively solicit input in public settings: “What do you think?” “Is there something I am missing?” “What would you do?” It will take time. If you keep asking, people will start to use their voice.
  • Once people find their voice, listen. The ensuing dialogue is the reinforcement needed to move your team into a positive feedback cycle. Use this time to explore your idea, tear it apart, defend it (without being defensive), and find viable alternatives.
I have found that most of the time there are only a few outcomes (in descending order of occurrence):
  • I realize I am crazy and I’m grateful that we didn’t act on my idea.
  • A kernel of goodness is contained in my idea and the interaction results in a much better idea.
  • I actually had a pretty good idea after all.
Remember, you aren’t trying to be right. You are trying to get to the best decision for the situation. Your job isn’t to be right – it is to make sure the right decisions are made by the team.

One last consideration. If you never accept the feedback, then you have two problems. Number one, your team will stop offering it. And two, you aren’t really interested in hearing it – which is why number one happens.

So go out and be crazy. Something good is sure to happen.

Tuesday, November 22, 2011

Argue your way to good decisions

If you observed my Friday afternoon leadership team meetings, you might think we are the most argumentative bunch of folks on the planet. And with good reason.

We are.

You might further think we constantly fight, back stab, and never agree to anything.

You'd be wrong.

Respectful disagreements
From the time I interviewed and recruited the team, we've interacted with respect. During interviews, I challenged their beliefs. I wanted to know how they handle a differing opinion by someone "in authority." Could they defend their position without becoming defensive? Could they acknowledge a counterpoint even if they didn't agree?

I didn't ask the "Tell me about a time when you disagreed with your boss" question. I wanted to disagree with them and see how they reacted. If you are going to do behavioral interviews, then you might as well elicit behaviors.

One important point. Even in heated discussions involving critical decisions, we maintain respect. We don't throw things; we don't shout; we don't name call.

High Standards
Every member of my leadership team is excellent at what they do. They have selected each other as much as they've selected me. We expect the best from each other and push each other. We don't want to let each other down.

Keep this in mind when you recruit. I've found that if you hire wrong, the team descends to the lowest common denominator. Hire well and your team rises to levels of achievement unreachable individually.

Confidence
What type of person is better equipped to be wrong and make a change? One with low self-esteem or one with high self-esteem?

Correct - high self-esteem. If we felt that our self-worth was tied to being correct, we would never get to problem resolution. We would be too busy defending our self-esteem.

So what does all this lead to (other than ending a sentence with a preposition)?

Freedom.

Freedom to acknowledge a better idea. Freedom to ask for help. Freedom to admit a mistake. Freedom to learn from each other.

What matters is that we arrive at a good decision. Equally important, it is a decision that has been argued, ripped apart, challenged, and extensively reviewed. When I walk out of the room, I'm confident a good decision has been made.

That is why I love leading this group of argumentative folks.

Friday, September 2, 2011

Risk versus perfection

I was recently asked how I can encourage my team to take risks, while simultaneously driving them to perfection. “After all”, the questioner posed, “doesn’t the drive for perfection inhibit risk taking?”

It was a terrific question. I was not able to answer immediately. With the benefit of a few weeks of thought, here goes.

First, I don’t ask for perfection. I ask for excellence. This is an important, subtle difference. Excellence is the attitude for approaching a task. Excellence is:

  • Driven by personal investment to deliver a quality outcome
  • Attention to details without losing sight of key principles
  • A commitment to deliver what one agrees to deliver, when promised
  • A passion for delighting the recipient of the deliverable
  • An understanding that every part matters, from the highest detail (functionality, visual design) to the lowest detail (alignment, colors).

Taking risks, on the other hand, is trying something with an uncertain outcome. Risk taking is:

  • A willingness to explore options, even if the result is failure (it never is, by the way)
  • An ability to judge potential gain versus potential loss
  • Trusting one’s intuition

Taking risks and excellence are not mutually exclusive. Taking risks is about choices we make. Excellence is the attitude we have when executing those choices. That is, once I choose to take a risk (change partners or technology, for example), the decision must be executed with excellence.

Sending a human to the moon was a risk; it was performed with excellence.

Encourage your teams to take risks. And expect excellence in all they do.

Tuesday, August 2, 2011

Resumes: Views from a hiring manager

I’ve been fortunate to grow a team significantly in the last year. To achieve this, I’ve had many screenings and interviews. This process led to the following observations.

Focus your skills list
Just because you programmed in Prolog twenty years ago doesn’t mean it belongs on your resume. I am put off by a resume that list dozens of languages, operating systems, and tools. It leaves the impression you can’t self-assess your strengths. Secondly, it doesn’t allow me to determine the technologies you actually know well.

You might say, “I list my skill level for each technology!”

Strike two.

Can you really say that you are 4 out of top level of 5 in C#, C++, Java, Perl, Ruby, PHP, SQL, OOP, MVVM, MVC, M-I-C-K-E-Y M-O-U-S-E, Agile, and Waterfall? Yes, I’ve seen this type of listing repeatedly. No they didn’t get a call.

Anything you put on your resume is fair game. If you haven’t used something for years or you have only dabbled, you won’t discuss it well. That can only hurt you. If you list something in this category, acknowledge it was a while ago. And rehearse why you still mention it.

Highlight strengths
List your strong skills that match the job for which you are applying. Eliminate everything not relevant to the job description. If I’m looking for .NET C# with Visual Studio, then Java with Eclipse isn’t necessarily going to help. There is an exception.

If you have substantial domain experience (e.g., Healthcare), then highlight it. Domain experience is often more valuable than technical skills. In this scenario, drive home the domain experience while acknowledging that you used different technology.

Demonstrate that you understand the external environment and are self-aware regarding your technology skills. Then highlight (through examples) your ability to acquire new skills and obtain a level of excellence with them.

Closing thoughts
Tune your skills list to the job description. It is better to identify a few skills you know well than to dilute precious interview time on average or weak ones. And remember, knowledge of languages and tools isn’t the only deciding factor for hiring someone. Your attitude about learning and passion for software are as much a factor as experience and skills.


Be ruthless with what you put on your resume. If you don’t, I will.

Thursday, June 16, 2011

Giving Feedback

One management skill I have found essential is giving feedback. Here are a few tips I have learned about giving feedback.

Don't be afraid
OK, this may seem obvious. Lets face it - giving feedback is awkward and hard. I think this stems from an innate desire to be liked. If you have to give corrective feedback, you run the risk of making the other person mad at you. Or hurt.

There aren't many things I can tell you about this. Well, actually there are *tons* of things I can tell you about, but that's not the point of this post... I will say this - don't own your employee's response. If you follow these guidelines you've done your part. If they are angry, hurt, or anything else - that is their feeling to own. Wow - I feel like I should be asking you for a therapy co-pay...

Give feedback as close to the event as possible
If someone is out of line at a meeting, call them out in front of their peers (if it is warranted) or pull them aside privately after the meeting. This is a delicate balance. The general rule is criticize in private. However, if someone crosses a line publicly, address it immediately.

It is important your team knows you won't tolerate this behavior and that you are addressing it. Of course, if someone is so out of line publicly, you probably have another issue...

Give feedback from the heart
Wow - can I get more touchy feely? Maybe not.

The point is to have your employee's best interest foremost in your mind. You have to care about your employee. Show her you are concerned for her professional growth and relationships.

There is a saying that "feedback from the heart penetrates the heart." I believe this. Your employee will sense if you are jumping on them to make a problem go away or if you are sincerely trying to improve their character.

Make sure you aren't angry when you give feedback. Think through why you are giving feedback.

Is it to show someone you have authority? Is it to feel better because you felt wronged?

Or is to help someone who is struggling to get better?

Be direct
Early in my career, I found all kinds of reasons to delay getting to the point. That doesn't work. I've found it best to be direct, factual, and brief. That last point is important.

When you are nervous, you may tend to keep talking. That dilutes the message. Your job is to provide feedback, not debate. If your employee makes excuses, listen but redirect him. Let him know you understand his point but see things differently. In other words, don't buy into the drama.

Offer alternatives
Mature employees may ask you what you would recommend they do differently when confronting similar situations. Be prepared to offer alternatives. Help them role play alternatives so they can build new coping skills.

If you prepare in advance, you will have empathy with their situation. You will be forced to consider their position. I've often found myself softening my position when I realized my employee's actions were not malicious.

Giving feedback can be daunting. If you approach it with the intent to improve your employee, you'll be fine.

Don't avoid giving advice. It will get easier over time.

Wednesday, May 4, 2011

So you want to be an architect

Over the last year or two, I’ve spoken with a handful of developers about their career. Several of them desire to become software architects. I’ve never really been satisfied with my guidance to them.

With apologies to them for my poor initial responses, here are attributes I look for in an architect.

Be a coach and mentor
You might think technical excellence should be the first item on my list. While it is a requirement, it is not sufficient to be an architect. What matters is one’s ability to coach and mentor others to higher levels of achievement. A highly technical individual who cannot coach and mentor is not an architect. She is a highly technical individual contributor.

Architects build large systems through a team. So while the architect may be the most technical, he must maximize the output of the team as a whole. Some examples of coaching and mentoring:


  • While reviewing other’s work, look for opportunities to praise good practice and to demonstrate improvements in critical thinking skills. It’s not about showing a better way to implement a specific module. Use the opportunity to teach a better way to think about the problem and possible solutions.



  • Share your knowledge with the team. Use every opportunity to share not only your technical decisions, but options you considered but eliminated. Help your team understand how you made the decision, not just what the decision was.



  • Expect your team to have great ideas. You don’t have to be the smartest all the time. You cannot expect your team to be willing to learn from others if you won’t.

Desire to learn
The best architects learn constantly. One monitor has Visual Studio open and the other has a blog about some piece of technology.

Take time to read, study, and practice.

I’ve known architects who spent personal time developing programs to exercise one or two language features. They may not need it immediately, but at some point they encountered a problem that feature was suited for.

Architects learn from everyone. That includes business folks, QA, developers, and their leadership team.


Experience
There is no substitute for experience in architecture. I’ve run into twenty-something developers with architect titles. I find that laughable. Experience brings diversity of challenges, solutions, technologies, and business contexts. It also brings time to have studied under other architects and senior mentors.

You don’t have to have had many jobs and worked on dozens of systems. An architect must be exposed to a multitude of problems to solve. Each challenge faced and solved adds a tool to be used for the next problem. It provides maturity and confidence required to push through hard problems and solve them.

A senior developer may master many software engineering technologies. An architect combines this basic requirement with coaching, personal desire to learn, and experience.

An architect brings these elements together to solve new challenges. In this process, the seeds are sowed for new architects to be developed.


On a personal note, I want to thank architects Mary Holstege, Andreas Guenther, Derik Whittaker, and Roger Larson. This article is merely a summary of what separates these folks from the rest of the bunch.

Wednesday, February 23, 2011

People over technology

I just returned from the largest healthcare technology conference in the world, HIMSS 2011. There are hundreds of vendor booths ranging from a 10 foot table to city block sized two story complexes. It seemed everywhere I turned I was told that if only my doctor had an iPhone or tablet, patients would be healed faster, medical mistakes would plummet, and hospitals would recoup more money.

There was so much technology that I found myself forgetting a basic fact. Healthcare is about healing people. And those that do the healing are people.

I didn’t recognize how little I thought about patients until I put my girls to bed tonight and began reflecting on the show. Then it hit me.

Every good and rewarding memory from the show involved people, not technology. It was the joy of being greeted with genuine fondness by former executive leaders. It was the smiles and embraces I received from past colleagues. And it was the tears when I ran into a prior customer as she turned a corner and I received the biggest hug of the entire event – and her kind and exaggerated words of thanks for the years of being a trusted partner to her organization.

We are here to apply technology so our customer’s lives may be people-centered, not gadget centered.

Regardless of your industry, remember that there is a person on the other end of your solution. Start with them and let their needs, their goals, and their hopes drive you – not the technology.

One final story.

I visited a hospice customer several years ago. After a day of IT, finance, and CIO type discussions, they asked if I’d like to tour their inpatient hospice unit. If you aren’t familiar an inpatient hospice unit, it is a place where people come to spend their last days. The average stay is measured in days, not weeks.

It was sobering to be shown a typical patient room. By itself, that would have altered my view of my product and my role in leading the team developing it.
Then I saw the computer screens at the nursing stations with my application running. At that point I could trace a path to the choices I made daily directly to the patients who were in this unit dying. It ceased to be about technology. It became a quest to build something that would allow my users (nurses) to do their job better (help people die with dignity).

Don’t lead with technology. Listen, observe, and seek to understand. Next time you find yourself getting enamored with new technology, don’t forget to ask yourself what difference it is going to make in the lives of your users.