Knowing your weaknesses

I was having a discussion today with some people at work who were reading a book that helps you determine your strengths so that you can take advantage of your strengths and be great at what you do. That led me to think that while knowing my strengths is a good thing, I also want to know my weaknesses.

When I was starting out as a developer, I remember reading up on how to interview well and potential questions that interviewers might ask. One of the potential questions that I saw listed in several articles was, “What are your weaknesses?” That question didn’t really make much sense to me, maybe because I didn’t really know how to answer it (“yeah, my weakness is that I work too hard”), and I didn’t really know what an interviewer might want to get out of it.

I’ve never had anyone ask me that question in an interview (and I don’t think I would ever ask it in an interview myself), but I think the reason that someone might ask that is to see if someone is aware of their own shortcomings and if they’re doing anything about it. So here are some reasons that I try to learn my weaknesses.

Knowing what roles to avoid

We all have things that we are good at and things that we’re not so good at. There are many different roles you can play on a software development team (or any team for that matter). Maybe you really enjoy coding and are really good at it. Maybe you are good at project management and coordinating multiple efforts in order to reach a common goal. Maybe you have strong management skills and can help your team members get better and achieve their career goals. Maybe you are good at helping teams adopt Agile practices. Maybe you’re good at talking to users and business people.

As you read that list, you probably thought of some of those things that you are good at and that you really enjoy doing, and maybe others that don’t get you so excited. This is really really important to remember so that you don’t inadvertently steer your career down the wrong path. The classic example is the developer who was really good at coding and was promoted to management and now can’t take advantage of their strong development skills that got them there in the first place. On the other hand, I know some developers that went into management and thrived there. Either one is fine, but you’ll be happier and more successful if you can stay in a role that emphasizes your strengths.

Knowing what to work on

Some things will come naturally to you, and other things won’t. That doesn’t mean that you should only do things that you’re good at. Most developers naturally are not extremely gifted when it comes to talking to users and business people, but I think this is a very important skill that I think every developer should work hard at. Being able to right good code does you no good if you can’t create systems that will actually solve the right problems.

This is why most meetups that I attend have more to do with QA testing, business analysis, and project management. I’m better at development than I am at all those things, and I like development the best, but I want to be better at the other disciplines because it makes me a more well-rounded developer and allows me to know how to help entire teams instead of just developers (which lines up with my career goals).

We can develop these skills if we work at them, even if they don’t come naturally. But if you don’t take the time to look at what you need to work on, you won’t ever get better.

Knowing how other people might see you

There are two sides to this one. First, I want people to know me for my strengths. There are thousands of .NET developers, agile coaches, project managers, etc. out there. What is going to separate you from the crowd? What you’re great at.

That will get you in the door, but if you stay somewhere long enough, people will find out what you’re weaknesses are. This is fine, but I want to be aware of how people might be viewing me because that might help me understand the way that people act towards me and why they might make various decisions that affect me. If I’m aware of my weaknesses and other people also have discovered those weaknesses, now I can take what they say and understand more about what they are saying and what is causing them to react a certain way. In turn, this teaches me more about myself and what I need to work on in order to get better. (At no point should I ever beat myself up for my weaknesses, this has no constructive value for anyone.)

For example, I am an extrovert, which is a minority in the software development world. This means that I sometimes tend to think out loud, and sometimes I’ll throw ideas around without having really thought them out. I think this sometimes confuses and overwhelms some of my other team members, who were still trying to understand my previous thought which I’ve already moved on from. While this is the way that I tend to process ideas, I’ve realized (based on how other people have reacted) that this isn’t always constructive for others and that I sometimes need to think things through more internally before I verbalize them.

While thinking about your weaknesses isn’t always a whole lot of fun, it will go a long way towards bringing you career success and enjoyment. We could all use a little more of that.