Soft skills do matter

Let’s start at the beginning: what exactly are soft skills ? Soft-skills, is an umbrella term, covering the less technical skills you need for your work. Stuff like communication, time-management, delegating and other fun stuff you have to do outside of an IDE. I sure hope you are one of those programmers that do consider these skills important. Whatever your beliefs are, stay with me and you might just learn something.

You work with people

Obviously, but think for a second of the implications. Your work is based on other people’s work. People decide your tasks. People evaluate your work. And, ultimately, people pay you for your work. When you think about it this way, it seems important now, to learn how to deal with people. This includes negotiating, giving and asking for feedback. Some of the most efficient programmers I know, are great at working with people. They know what the client actually means when they ask for something. They know how people react when they are given both good and bad news. I would argue that a big chunk of their professional success has to do with their people skills. I’m not saying that you can’t be a good code without people skills, I’m saying that improving your soft skills make you a better programmer.

Prioritize

You are a professional and you should treat yourself as one. You should work on the most valuable piece or work first, and then the next one and the next one and so on. Now, the most valuable task might not be the most fun to do, nor the most challenging. It’s not the work you want, but it is the work you need to do now. Do that! It’s that simple. If you put the project above everything else and you treat your time as a valuable resource (which it definitely is), then, what you should be doing now becomes obvious. Do whatever needs to be done to move the project forward by the biggest margin. Additionally, your time is a valuable resource. Don’t waste it on useless tasks, don’t slack off, and never ever half-ass the work.

Opinions do matter

Imagine this: Someone asks one of your colleagues to recommend an awesome programmer for this cool project they have going on at the moment. Will they pick you? Would you like them to pick you? Be aware of your colleagues opinion on you. There are two easy steps to get there: ask and then listen! Learn what your peers want, what they value and fine tune your discourse to emphasize what they value in your work. Now, this might sound a bit mischievous. My advice here is: be honest. There is no harm in glossing over the details someone does not care about, in order to focus on the details they do care about, but don’t lie to your peers.

Communication is important

If you stop and think about it. During your average workday, you have a lot of discussing to do. Some are not that important, like the ones about the weather, while other matter a lot more, like the ones about your promotion. You spend so much time communicating, why don’t you try to do it right ? Communications  are the result that the sum of all your soft-skills produce. You should start by listening to your manager and try to understand their motivation. Then, you should make sure you work on the most valuable piece of work available. Trust me that will make your manager really happy. Then, think about the way you are presenting your work. Does your manager understand that your task is difficult, does your manager understand that you care about the same things he cares about ?

I know this sounds tedious, trust me. However, the good news is this: these are all skills, and even soft skills can be learned and, when practiced, improved upon.

A super short crash-course in negotiation

I’m sure that at some point in your career you will be in a situation where you need to negotiate. It can be a negotiation with your boss about that big promotion you were hoping for, with a client about the shiny new project you want or maybe with a colleague about the temperature of the AC. Well, whatever that situation might be, it’s better to go in prepared. Here are a few tips and useful advice you can use.

Know what you are negotiating for

The first thing you need to know when you are about to start a negotiation is what do you want. Sounds simple enough, however it’s an important part so DO NOT SKIP OVER THIS! You need to have a clear idea on what you want from the negotiation. Make a plan and stick to it. This is the ruler you evaluate the negotiation on. It’s pretty much the one thing you should not compromise on.

BATNA

Again on the preparation side of things: Batna stands for Best Alternative a Negotiated Agreement (some background on the term here).  In short, BATNA is your backup plan in case the negotiations break down. It’s the worst case scenario, if you are unable to reach an agreement. You need to have a plan on what to do if things go south, what will it cost you and how you plan to deal with it. You’ll use that in your negotiation to gauge the value of the agreed solution, and quickly dismiss solutions that are worse than your BATNA so you don’t waste time on them. Also it should help you keep calm if you know you’re covered (sort of speak) if things don’t work out. The better you BATNA is, the better the position you are negotiating from is, so pay attention to this!

Establish rules

Negotiations should be fair (or at least you should try to make them fair). Fairness is a relative term and people don’t often agree on what it means exactly. Before you start negotiating, you should first agree with the other party what fairness means. As a professional (and I assume you are one) you should always negotiate fairly (this means do not try to cheat, it’s bad form). If you cannot reach an agreement on what fair means, you can just defer that judgement to someone else. Basically ask a friend you all trust if he thinks you’re being fair. It’s not that hard is it ?

Lateral thinking

OK. So much about preparations! It’s time to start negotiating! Yay! Lots of people tend to think about negotiation as a zero-sum game, if one party wins, the other certainly loses. Spoiler alert: It’s not!  You should keep in mind the reason you are negotiating (see first part), but other than that, everything goes. Most often than not your main focus it’s not the other party’s main focus so it’s entirely possible for both of you to get what you want. Try to find things to sweeten the deal. Things that are cheap for you to offer, but have a big impact for the other party. For example, to make a project more appealing for a customer you can offer training sessions for the users, or provide some form of documentation. You get the idea!

Well, this is pretty much all I had to share about negotiations. Hope it helped! Cheers!

The tells of good feedback

So, what makes a good feedback ? I know there are a lot of articles out there about this, but that doesn’t stop me from giving my two cents, so bear with me.
Weather you’re giving feedback or receiving feedback, I find there are some attributes that make some feedback’s better than others.

Actionable

The purpose of feedback is to help someone improve. If the person receiving the feedback has no idea what they can do to improve themselves, then the feedback is like a bald hedgehog (pointless). If you want meaningful feedback, then it should refer to specific actions the person can take to improve themselves, which leads me to the second point:

Concrete

You’ve all hear it: You are doing perfect, keep it up! (followed by a warm pat on the back). This is useless! First of all: I have no questions that you are an overall great person, but, whoever you are, there is no chance that you cannot improve! And second (and this is more to the point): What am I supposed to to with that information ?! Where do I go from here ?! Certainly there are some things that I am doing better than others and I would like to keep doing more of those. Feedback should focus on concrete facts. Even if you are a superstar and you are good at everything you do, there must be some aspects of your work you could be great at, so try to focus on those.

Short

This one may sound a bit off at first, but feedback should be short. You do not want a laundry list of items on your feedback. We are not good at multitasking (regardless of what you might think), so focusing on a lot of things is just not going to work. For feedback to be truly useful you should find a few points that you can improve upon. I would recommend 3 or 4 key points so you can focus on those. If you tend to get a lot of items on your feedback list, it’s probably a sign you should have feedback chats more often.

Measurable

This one is sort-of dependent on the type of feedback you are getting, so it might not apply in some cases. It feels good to know you are making progress, and it’s useful to know when you are not, so why not have that information available for you to judge. This is easy if the feedback is accompanied by some kind of metric.

And now for the fun bit! Here are some examples of feedback that can be improved upon (granted there are a bit extreme examples, but I trust you’ll get the point)

  1. “I liked your presentation! It was wonderful! You should do more presentations like that! ” versus “I liked your presentation! It was the graphics that I liked the most! They really help get the point accros! Keep doing those!” 
  2. “That meeting went bad! The clients are not happy with us! We should change that on the next meeting!” versus “The meeting went bad! We went in there unprepared and we were not able to address their questions! On the next meeting we should make sure we fully understand the requirements before the next meeting.”
  3. You have been missing your deadlines lately. You should focus more on being on time.” versus “You have been missing your deadlines lately! Can you think of anything that takes time necessary so you can remove those ? “