What the Best Developers Have in Common

I stumbled upon an interesting article this morning about the thing the best (and worst) programmers all have in common: their work environments. The study was conducted by giving an assignment to over 600 developers across 92 different companies. Each participant had a partner from the same organization, but they were not allowed to speak to each other about their assignments.

Here’s a summary of the results:

  • The best participants outperformed the worst by a ratio of 10:1
  • The top performers were 2.5 times better than the median
  • Experience, salary, and time spent completing the assignment had little correlation to outcome
  • Programmers who turned in “zero-defect” work took slightly less time than those who made mistakes

The interesting part of the study is that “programmers from the same companies performed at more or less the same level, even though they hadn’t worked together.” I found that to be fascinating. It makes sense, though. Essentially, developers are a product of their environment. A low-performing environment will produce low-performing developers. Good developers on bad teams will either improve their team or move on to a better team. Bad developers on good teams will not be tolerated and will be bumped (fired/transferred) to a lower-performing team that’s more tolerant of or suited to their lesser ability.

The message I got out of this is to not accept being a member of a poor performing team, or you fill find that you’ve become a poor performing developer. Steps must be taken to improve the team. This can really be done in one of two ways: help the team overcome its shortcomings or find a new team.

Leading by Following

Image borrowed from here

I thought it was somewhat self-serving when my manager sent out an email to the team with a link to an article at Forbes about being a great follower, but it was actually a very good read. The article, titled “The 11 Leadership Secrets You’ve Never Heard About,” makes the point that the leaders among us are simply the best followers, and it reminds us that our leaders have bosses and are followers in their own right. The list of leadership secrets is about being a great follower, and it’s an excellent list.

There were a few items that really spoke to me, and it’s true: these are the things the leaders of tomorrow are doing today.

Great Followers are Great Communicators

I loved this one. (Not surprising, as somebody who clearly values communication!) More specifically, I love the idea of proactively providing relevant information. If I see something and dig into it, totaling numbers and gathering statistics, I’m going to send an email with that information displayed several different ways. Here’s a table. Here’s a graph. Here’s a 3D graph! When somebody else on the team sends out an email with data they’ve collected in a cool graph, I’m absolutely delighted.

And, to the point of the article, I’ve never received an email of this nature from somebody that I didn’t consider a leader on the team.

Great Followers are Goal Driven

There’s a lot of material out there about being successful by setting goals for yourself and being goal-oriented. Earlier in my career, I wanted to embrace this and set goals for myself, but I felt like I was a really bad goal-setter. I simply didn’t know what kinds of goals to set for myself! I like the text in the article on this item because it doesn’t just say, “set goals for yourself.” Instead, it talks about working forward versus working backward.

Great followers reason backwards: they use future goals to prioritize today’s “activity.” Poor followers reason forward: They react to their in-box and email in the forlorn hope that just staying busy will magically produce results somewhere “down the road.”

Well put! The amount of work will always be unending. If you focus solely on fighting it down, you’ll probably be stuck in the same role doing the same thing for longer than you care for. Conversely, if you can identify ways to improve the processes of today down the road, you can steer your activities in the right direction. Once you achieve the goal, you can get on to the next thing!

Great Followers Show Don’t Tell

This is another one that’s near and dear to my heart. I get pulled into a lot of what-do-you-think, consultation-type meetings. In those meetings, I’ll throw out ideas that seem like they should work. Energized by a potentially great idea, I often start putting together a proof-of-concept as soon as I get back to my desk. It’s exciting to me to send an email with a fully-functional example of what I suggested might work an hour before. Unfortunately, based on the amount of emails like this that I receive, I don’t think many people are doing this. Additionally, showing up to a meeting where it’s clear that you’ve put effort into your preparation will impress the room. Take time to prepare a PowerPoint presentation or print handouts on the topic you’re presenting or might be consulted on. You’ll be better prepared, and it’ll be noticed by peers and leadership, alike.

Great Followers Offer Solutions

This one’s definitely a favorite. Do you have a problem? What can you do about it? What are the advantages and disadvantages of your options? This is decision-maker training. When you’re new at it, evaluate the situation and bring solutions along with your problems to your team leads and managers. You may not come up with the best option, but that’s a learning opportunity. Over time, you’ll learn how to identify the best options, making you a leader capable of finding the best options to other people’s problems: you’ll be down with OPP.

Great Followers are Loyal

I’ll comment on just one more item from the list, and that’s loyalty. The article points out that a great follower will go out of their way to make their boss look good, which really couldn’t be more true. (I was once again chuckling at the self-serving nature of this statement in the article sent from my boss…) It’s true though; a great follower will take pride in making their team great. When it’s time to look for emerging leaders, the best teams are probably a good place to start.

The rest of the list is very good, too, and these were just my favorites. Check out the article and think about how you can improve as a follower. Focus on being a great follower, and you’ll naturally evolve into a leader.

10 Habits of Remarkably Uncharismatic People

this is what i'm talking about

I just finished reading an article at Inc.com: 10 Habits of Remarkably Charismatic People. I like reading these types of articles because they help me find new ways to be a little better, or they give me a little pat on the back when they suggests habits or behaviors I already do. Like most articles of this nature, the list wasn’t exactly earth-shattering. Here’s the abbreviated version:

  1. Listen more than you talk.
  2. Listen to everybody.
  3. Put distractions away.
  4. Give before you receive, and expect to receive nothing.
  5. Don’t act self-important.
  6. Realize that others are more important.
  7. Shine the spotlight on others.
  8. Choose your words. (Choose to be positive.)
  9. Don’t discuss the failings of others.
  10. Readily admit your failings.

What I like about this list is not that it illuminates a path to +1 charisma but that it reminds us to be good people. The article could have easily been titled “10 Tips For Being a Good Human” or “10 Ways to Make People Not Hate You At the Grocery Store.” (Seriously–apply these at the grocery store, people.) But you know what’s more fun? 10 Habits of Remarkably Uncharismatic People:

  1. Talk all the time. If it’s worth saying, you’re probably talking about it.
  2. Only listen to people from whom you have something to gain. Otherwise, what’s the point?
  3. Text and email come first. People in your presence won’t mistakenly assume you’re ignoring them.
  4. Give only when you receive, else you might receive nothing. That would be totally unfair.
  5. Act self-important. Walk the walk, baby.
  6. Realize that others are just jealous. Don’t let them steal what’s rightfully yours.
  7. Shine the spotlight on your own achievements. You’re amazing! Make sure everybody knows it.
  8. Complain. If nobody knows you’re unhappy, you’ll have to keep doing it.
  9. Readily admit the failings of others. You’ll look better by comparison.
  10. Don’t discuss your failings. (Maybe nobody noticed.)

Back to the point, the 5-second version of the article goes something like this: be a {humble, respectful, positive, gracious, transparent, good} person, and people will like you more. When you put it like that, it’s a pretty obvious message. Nonetheless, it would go a long way if everybody were to embrace this list and focus on being a little more charismatic in their everyday lives. More specifically, at the grocery store. And at restaurants.

Eight Qualities of Remarkable Emloyees

Inc.com is running a great article by Jeff Haden titled Eight Qualities of Remarkable Employees. The article discusses eight non-tangible behaviors exhibited by the best of the best. These qualities all transcend industry, but there were a few that I felt were particularly true for software development.

They ignore job descriptions

There are many external factors that can influence a software project, and any one of them can roadblock the whole thing. New requirements, unexpected challenges, verification, and deployment issues all have the ability to derail your timeline, and it will often be someone else’s official responsibility to deal with the problem. Waiting for somebody else costs you valuable time and can ultimately lead to missed deadlines or failure. Cut out the middle-men, do what needs to be done, and enjoy success.

(This seems obvious, but I’m going to say it anyway: be aware of the politics of your actions. Preventing a distraction: good; doing someone else’s job: bad.)

They like to prove others wrong

If you’ve got a great idea that others don’t believe in, there are two options: let them go down what you believe to be an incorrect or inferior path, or prove them wrong. When you set out to prove them wrong, you may find that you were actually wrong. (*gasp* I know–not likely, right?) That’s still a win, though, because you (hopefully!) learned from it. If you’re right, you’ll help steer a project toward an optimal solution and gain credibility with your team.

I think healthy competition also falls into this category. If you have individuals competing with each other to find an optimal solution, you’re more likely to find it than if you have a single person trying to accomplish the same thing. Each person is likely to come up with a solution that they feel is the best, and the way to “win” is to prove its the best to their peers.

They’re always fiddling

Tinkering is SO important to software developers. It’s how you practice and hone your craft. It’s how your learn new things. Evolving your skillset and tools allows you to be more creative and innovative with your solutions, which further energizes the team.

Make Your Job Obsolete

A long time ago, I read a book by Chad Fowler titled The Passionate Programmer: Creating a Remarkable Career in Software Development. This is a great book that I’d recommend to anybody getting started in software development. It’s full of great tips and ideas like trying to be the worst on your team (surround yourself by greatness), the importance of practice, and striving to be a little better every single day.

One of the concepts that really resonated with me is making it a goal to make whatever position you’re currently in obsolete. With a larger software company, it’s easy to get your hands into a lot of different projects. It’s also easy to become the person with specialized knowledge on specific topics. There’s a feeling of security that comes along with that–they can’t get rid of me; nobody else knows this–but it also makes it harder for you to move forward. I fell into this trap myself a few years ago. There was nobody on the bench to replace me so that I could move on to new and different challenges, and it took some time to get myself out of that position.

Keeping the goal of obsoleting your job in mind day-to-day helps you accomplish two major things: your tasks get easier and you stay available for whatever’s next. And, one of the amazing things about being a software developer is that you have the power to do this through software! The key is identifying processes that can be automated and then mustering up the motivation to follow through and execute.

So what processes can/should be automated? This will be different for everybody and largely depends on your typical tasks. Here are some examples I’ve encountered:

  • Anything that involves cutting and pasting
  • Things that are run on an interval (e.g., daily/hourly/weekly reports)
  • Complex data entry tasks (i.e., create an application to simplify the process)
  • Abused spreadsheets (spreadsheets that are modified and emailed each day can be replaced with web portals with databases that have entry and reporting)
  • Utility-type or out-of-application SQL scripts

Your imagination is the limit. Dream it, create it, and share it. If you do a great job, your managers and co-workers will thank you!