No doubt you are an awesome programmer.
You know all about test driven development, design patterns, and the evils of comments, have mastered multiple programming languages (including the latest hot JavaScript framework), and can probably recite the Agile Manifesto in your sleep.
Heck you probably aced all 12 steps of the Simple Programmer Test!
Yet despite all this, you still frustrate your boss and probably don't even know it.
Here's five ways I discovered I was frustrating my bosses and what I should have been doing instead.
1. Not providing options
As programmers we tend to think in binary terms: yes/no, on/off, and can/can’t. It’s that last one that can get us in trouble with the boss.
Can't is usually used in the sentence “It can't be done.” Anytime you say that to your boss what your boss really hears you say is, “I'm lazy.” Let me explain.
In business, and in life, there is no such thing as “It can't be done.” The client will not accept this, your boss won't accept it, and neither should you! It is a defeatist statement that destroys rather than creates.
What you should ask is, “What can we do?” Find some alternative options and lay them out for your boss.
When you say “It can't be done,” your boss sees you as lazy because you’re already saying it can’t be done even if you haven’t begun to do the hard work of formulating possible solutions yet.
You didn't spend any time thinking through the possibilities or alternatives. You didn't spend any time planning out how this could be achieved in multiple stages. You didn't spend any time trying to come up with a quick win to make the client happy.
So now your boss is mad because you've clearly demonstrated you are lazy, and, not only that, he can't even make a decision on how to move forward because you haven't given him any options.
Do this too many times, and your boss will start dragging you off challenging, but rewarding, projects. In the end, your career will stagnate.
Don't fall into this trap. Take a couple of hours, brainstorm some ideas, get creative, think outside the box, and present them to your boss as options. He'll love you for it!
2. Spinning your wheels
Now we've already established that you are an awesome programmer, possibly even the Master Chief Programmer. Don't believe your own press too much though, because at some point in your career, you will come across a problem that will stump you.
When you get stumped you'll have two choices to make:
- Figure it out yourself
- Ask for help
When faced with a difficult problem, lots of programmers try to figure it out themselves. It's pretty easy to understand why and it's a common trait amongst many smart people: pride.
Yep, that's right… pride.
You may not agree with me but most programmers think they are of above average intelligence. Now being confident is much better than having low self-esteem but it can trip you up, and this is one of those situations.
Instead of asking for help, you try to figure it out yourself, because you don't want to look dumb to your peers or boss. It'll be embarrassing if you have to ask for help, as you'll look less intelligent, especially if it turns out to be something really simple.
In some cases, the problem usually is simple, but, because you are so deep in the weeds, you can't see it. So, you spend more time trying to figure it out.
Now you are really starting to spin your wheels. You are doing lots of things, but you aren't making any progress and are getting even more worried.
If you ask for help now, they'll ask you why you've wasted so much time, and you'll look even dumber.
So you double down and try even harder to figure it out!
Inevitably, you have to eat humble pie, ask for help, admit to wasting all this time, and take a hit to your fragile ego.
When the boss finds out he may conclude you are a moron, and rightly so, because you should have just asked for help in the first place and saved yourself and your company a lot of time.
I learned this the hard way and looked like a complete goose to my boss. It was embarrassing and painful. Far more painful than if I'd just asked for help straight away.
If you get known as the won't-ask-for-help dude, you'll find the boss will increasingly get frustrated with your inability to get s@#t done.
So don't spin your wheels! Instead swallow your pride, ask for help, and get on with shipping product.
3. Being unprepared
The brain is an amazing thing. It stores copious amounts of information that can be retrieved in mere milliseconds.
Unfortunately, this makes many programmers believe they can just wing it a lot of the time. This is a big mistake.
Let me give you an example. The boss calls a meeting to discuss an upcoming feature or a recurring performance issue that has everyone stumped.
The meeting starts and it is clear that a large number of people have not prepared for the meeting as the room is eerily silent. This frustrates your boss!
Not being prepared for the meeting causes your boss to think a number of things about you:
- You are lazy
- You have poor time management skills
- You have nothing to contribute, so are not a level A player
- You have disrespected his time
- You have disrespected your teammates’ time
- You think this is a joke
- You won’t be invited to future meetings
The best way to always be prepared is:
- Know the background and context of the meeting, situation, or event.
- Know exactly what issues the meeting is intended to address.
- Have some prepared ideas, solutions, and/or options. Include the pros, cons, and risks for each of these.
Being prepared for meetings, situations, or events shows a level of professionalism that your boss will love. You will demonstrate you are always ready and someone the boss can rely upon and trust.
4. Accepting the status quo
It’s always interesting when starting at a new company to see how they do things, for example, what source control tool they use, how they do deployments, what bug tracking system they use, etc.
Likely, you’ll come across things which will make you shake your head and wonder why it is being done that way.
Here’s the thing though, no one sets out to do things the dumb way. In fact, it could have been state of the art and cutting edge at the time that it was implemented! Unfortunately, no one kept pushing the boundaries to try to improve things.
Instead they got comfortable, possibly even lazy. They started accepting the status quo.
Accepting the status quo is an attitude that says: “This is the way things are. This is the way it’s always been. We’re happy for things to remain this way, so don’t change a thing.”
Any boss worth his salt will be continually looking for ways to improve his team members’ skills and also increase the output of the team. So when no one is coming up with innovative ideas or is saying, “Everything is ok with how things are being done now,” the boss is naturally going to get frustrated.
This is also a very dangerous attitude to adopt as a programmer and can put your career on hold for a number of reasons:
- You’ll stop learning new technologies
- Your skillset won’t increase
- You won’t be exposed to new paradigms
- You’ll limit your employability
- You’ll be resistant to change and labelled as such
You should avoid this at all costs. Instead you want to have an attitude of always learning and always wanting to improve things.
Now, learning new things is not easy, especially in the software development world where things are changing so quickly. Thankfully, John Sonmez has written a course to deal with this exact problem.
It’s called 10 Steps To Learn Anything and goes through the technique that John used to help him create over 50+ Pluralsight courses in two years. You can find out more about this excellent course here.
If you are after a list of best practices and innovations that a software development company should be pursuing then go and check out The Joel Test: 12 Steps to Better Code.
Approach your boss about implementing each of the 12 steps. It’s possible that he won’t let you implement all of them, but it will show you are looking for ways to innovate.
5. Not communicating effectively
As programmers, our main goal each day is to find the most effective and efficient solutions to problems. This means we’ve spent a lot of time honing our technical skills and rightly so.
However, having great technical skills isn’t enough. There comes a time when we need to start working on our soft skills as well. One of the first ones to work on is communication.
You can have all the answers technically, but if you can’t clearly communicate these to other people, they end up frustrated, your boss in particular.
In most problematic situations, it's the person who can best articulate the problem who is viewed as the expert.
Whenever you communicate, you want to present yourself as an expert–someone who clearly understands the problem, solution, and action to take.
To quickly rate your abilities as a communicator, ask yourself the following questions:
- Can you take the complex and simplify it into a couple of succinct sentences?
- Can you separate the key issues from red herrings (issues that are irrelevant)?
- Can you create the clearest plan for moving forward?
- When you put ideas forward, are people able to understand them with minimal extra explanation on your part?
- Do you listen more than you talk?
- When you do finally talk, does what you say enrich the conversation?
Communication is not just about running your mouth. There’s a reason we have two ears and only one mouth.
The main function of communication is to increase understanding. If during a discussion, you are confusing everyone, then I’m sorry, but you aren’t communicating effectively.
Try the following tips to work on your communication skills:
- Listen intently. Don’t try to preempt others.
- Understand the desired outcome everyone is after.
- Don’t get sidetracked by things that don’t help achieve the desired outcome.
- Avoid making assumptions. Remember the old saying, “Assumptions make an ASS out of U and ME.”
- Be very clear on what you want to convey before you start communicating.
- Remind yourself that less is more.
Get a handle on these tips and impress your boss with your ability to communicate effectively.
Take Away
The good news is you are now aware of the potential ways you’ve been frustrating your boss. Now you need to do something about it.
Start looking at each area and give yourself an honest assessment. Reread the suggestions given and start applying them.
In your next one-on-one (hopefully your boss conducts these), bring each of these up and ask him how you are doing with each of them. This will take guts, but, if your boss is a good one, he will be very impressed with your boldness and desire to improve.
Good luck!
If you’ve discovered other ways you have frustrated your boss, please share them in the comments below. You’ll have the privilege of knowing you helped others learn from your mistakes.