Just Do It

I hate it, when people say that they will put something on their backlog. If it just takes 15 minutes, why the hell can’t they do it during the same day? It’s very hard to work with teams that never do stuff. They will put the thing on their backlog and it’s always going to be in the next sprint. Things get either done immediately or when the team gets tired of being asked about it. I prefer immediately.

I know that they cannot concentrate on their own stuff, if they have to do favors for others all the time. But sometimes something needs to get done urgently and it might be a very small thing. Hell, if someone needs something simple from me, I will always do it during the same day. I don’t want to make other people’s work any harder than it already is. I can surf reddit 15 minutes less. People are genuinely surprised, when I do stuff for them immediately.

It is called common sense, and you can apply it even if you are following some fancy methodology. I am not an expert on Agile or Scrum or Whatever, but I would assume that there is a section, which allows the use of common sense.

I have a tremendous respect for people who can help me with something on the spot without rambling something about their backlog. As a programmer, big part of my job is to communicate with others and make sure that the whole system is running smoothly as possible. It does not make any sense to refer to the backlog every time someone needs something.

Like most programmers I hate interruptions, but I hate it even more, if someone else cannot do their work, because I can’t find 15 minutes to help them. When I am in the zone, I don’t want to get interrupted by anyone, but when that rarely happens, most people have gone home already for the day. I guess you could compare it to having kids. You get stuff done when they are sleeping, but your responsibility is to be there for them when they need you. Software developers are a bunch of preschoolers anyway.

This approach works for me. I do my stuff on time and help others, when they need it. It probably does not work for everyone, but they could still try to squeeze things into their daily schedule instead of the mythical backlog.

Let the flaming commence!

  • Share/Bookmark

How to Avoid Meetings

I just watched a video from Jason Fried talking why people cannot actually work at work. He explains how they try to avoid interruptions at their company, but most people cannot affect the way other people communicate in their office.

Meetings are the biggest interruptions for people without “Manager”, “Director”, or “VP” in their title. Most meetings are useless or take way too much time, still a lot people get dragged into meetings as experts, and they might not actually say anything during the whole meeting.

Try these tricks to avoid meetings.

1. Don’t go

If there are more than three people at the meeting, they probably won’t need you anyway. See, if anyone notices that you are not there. If they really need your opinion and input, they will come pick you up.

When you do this often, people will stop inviting you to meetings, because they know that you won’t show up, unless you are physically dragged to the meeting. You might get the reputation of someone who hates meetings, but don’t we all? You are just expressing your opinion better than others.

2. Ask for a clear agenda when you are invited

If there isn’t a clear agenda for the meeting, you are better of doing something else. Meetings without agenda get easily sidetracked and nothing gets decided.

The agenda should also say what is the actual goal of the meeting. If there is no goal, don’t go. You don’t need to waste your time listening to other people talking about their hopes and dreams.

3. Say you need to get some actual work done

You might be surprised that this actually works. When you say this to people they might actually realize that they shouldn’t just randomly invite people to meetings. If they keep arguing that the meeting is really important, then ask why is it more important than the work you are doing. If they can answer this question, then you might be out of luck.

4. Don’t obey your managers like in the army

Stand up to your manager, and explain how going into a meeting will interrupt you from getting your work done. Most managers should shield their employees from meetings, but if they don’t, you need to voice your opinion. Most people act like whatever the boss says is the law. Wake up! It’s not the army, unless you are, of course, working for the army. Show some backbone and stop acting like a lamb.

5. Make a mockery of meetings

This tactic will not win you any reputation points, but at least it should get you out of boring meetings. Question the usefulness of the meeting in the meeting. Show that you are actually angry that you were invited to waste your time. When someone gets sidetracked, ask if you can leave, because your time is being wasted. This, of course, requires some balls, but balls will get you out of meetings.

You can also bring your laptop with you, and not pay any attention to the actual meeting. When you show people that you have better things to do, e.g., harvest your Facebook farm, you won’t get that many invitations to meetings anymore.

6. Switch your job

This is the last choice, because some companies are so obsessed with meetings that there might be no way to avoid them. Life is too short and precious to spend it in meetings. Find another job from a company that has a better understanding of the true value of meetings. You should ask in the job interview what is the company policy and opinion about meetings.

I don’t think people want to tell their grandchildren that they spent most of the their work-time in meetings. People want to get things done. They feel good about themselves after a work day, when they actually accomplished something. Nobody feels good after a day of meetings.

  • Share/Bookmark

Communications 101 for programmers

For some reason communications isn’t in the curriculum for most people studying computer science. There might be a general course about communications, but nothing about communications to prepare students for the work that lies ahead in the software industry.

Of course, universities also leave a lot of other things out of the curriculum that are needed in work places, but communication is one of the most important skills for programmers. Most people have worked with a programmer with less than good communication skills, which might reinforce the stereotype that programmers are geeks without social skills. Those programmers who possess enough social skills are often promoted to managers, which makes the rest of the programmers look even worse communicators.

Programming intrigues introverted people, because they have to only communicate with the computer, but once they get a real job, they suddenly have to communicate with people that do not have the same technical capabilities as they do. This creates a problem, because they were hired for their programming skills, but suddenly good social skills are needed to do the job properly. No one told them that programming job would require them to speak to multiple different people in the organization, sometimes even customers. They have the technical skills to do the job, and programming is the one thing they are good at and want to do for a living.

However, it’s not their fault that they were hired to do something that they are good at. Unfortunately, it’s the skills which are not taught in university and cannot be learned from programming books that are crucial to their success in software companies as programmers.

How many programmers brag about their social skills in their résumé?

How many recruiters know how to find programmers with good social skills?

However, all hope is not lost for programmers. They can learn to become better communicators. It’s a skill that can be improved. They have mastered programming languages, so learning a couple of social skills shouldn’t be too difficult. They have to come out of their comfort zone to do this. Some people cannot do that, but most people can do it with small steps and before they realize, they are the best communicators among their peers.

Couple of advice for programmers to push them self out of the comfort zone to become even better programmers as a result of their improved social skills. These simples things can make you a better programmer and enjoy your work more. Communication should not be seen as the necessary evil by programmers, but as the opportunity to get to know and work with different people from different parts of the organization.

1. Demonstrate your work to other people

Talk about your work and show people what you have achieved. It might sound scary, but once you are on a roll, you don’t even realize that you might be giving a presentation, because you are talking about the stuff you have done. It will boost your confidence, when people appreciate your work and ask questions about it.

2. Teach kids something you like to do (in a public place)

It might sound like that this has nothing to do with working in a software company, but you couldn’t be more wrong. Small kids are the most honest people you will find. They don’t talk shit about you behind your back, they will say it to your face. If you can handle that, going to any meeting to talk about anything is child’s play.

I was a basketball coach for 15 years. When I started coaching I was afraid of telling kids what to do. It didn’t take me very long before I was able to yell at the kids in front of their parents :)

3. Learn to talk about technology without sounding like a total geek

Try to explain your non-technical friends (assuming you have them, if not, your WoW buddies) about your work without using any fancy technical terms. When you can do that, then explaining things to marketing and sales people is a lot easier. They might actually understand what you are saying, because you are not throwing computer lingo at them. There will be less miscommunication, if you speak the same language with all the people in your organization.

4. Try to have some fun at work

This might mean different things for different people, but when you are having fun at work, you are connecting with people on a personal level instead of a professional level. It’s a good way to get to know people better, which will make communicating with them about work issues a lot easier. You probably don’t want to be the office clown, but try to find people who share your sense of humor or have same kind of interests outside work.

5. Open your mouth

Unless you are a ventriloquist, you have to open your mouth to say something. Unfortunately, many programmers prefer to keep their mouths shut, when they should share the information they possess. A lot of times things that should have been said, were not, and because of that, projects fail.

Open your mouth, if you don’t like other people’s decisions or suggestions. You might know more to suggest a better solution yourself, but keeping your mouth shut will guarantee that no one will ever see things from your point of view.

People won’t judge you, if you can defend your views. They will actually start to ask you for your opinions, because they know that when you open your mouth, you have something important to say.

  • Share/Bookmark

How to Manage Programmers

This is my view on how programmers (or obnoxious programmers like me) should be managed. Almost all of these things are based on my personal experience, especially learning from the mistakes made by management.

Everybody knows that programmers are probably the hardest people to manage, because the way they work is so different from the norm. The things that are important to them are not usually important to business people and vice versa. Programmers are also delicate little creatures that remember every single mistake managers make.

I have seen numerous cases of mismanagement that it really raises the question whose fault is it? I would say that the finger can almost always be pointed at the upper management and in some organizations at the HR. It’s their job to pick the best managers to manage programmers.

If you are making management decisions in a software company, you have to know your personnel. Many companies are managed by sales and business people, and they have no idea how to manage programmers, because they don’t know what it’s like to be a programmer.

Usually the best companies, for programmers to work in, were founded by programmers and most of the upper management are former programmers themselves. If your upper management consists of business people, I will bet that they will drive most of the programmer crazy with their stupid decisions.

I do realize that the most important goal of every single company is to make money, but at what cost? One buzzword in today’s economical situations is cost cutting. Companies try to save a little money here and there, but they might not realize that cost cutting can actually do more harm than good. Make enough stupid cost cutting decisions, and your best programmers will go work for a company that does not make stupid decisions to save a few cents here and there.

If you are any kind of manager in a software company, follow these simple instructions and you will earn programmers’ respect.

Read Peopleware, again, and again

There shouldn’t be any managers in software companies that haven’t read Peopleware. The basic principles how to manage programmers are timeless. I don’t have a lot respect for managers, if they haven’t read this book. Instead of spending thousands of dollars in so called management training, every single company should buy a copy of this book for every single employee in the company. You simply shouldn’t be allowed to be a manager, unless you have read this book.

Don’t treat programmers like second-class citizens

Example : One company had this big gala to reward all the best sales people and support people. There was free food and drinks, and stupid awards. Pretty much everyone including the managers of programmers were invited, except the programmers themselves. Programmers do not care that much about awards, but I have never seen a programmer turn down free food and drinks.

Don’t treat programmers like they are all the same

There is a huge variance in productivity between programmers, but not necessarily in their salaries. The best sales people make the most money, because it is easy to measure their sales, but companies are reluctant to pay the most productive programmers what they are actually worth.

Of course, measuring programmers’ productivity is really hard, but when someone is a lot more productive than others, it is actually pretty obvious. In what kind of system the most productive programmer, who is clearly at least two times more productive than the other programmers, gets a pay check, which is at most 20 percent bigger?

Don’t try to impress them with your business bullshit

Most programmers don’t care how you run the company, as long as it doesn’t affect their work too much. If you try to push your business lingo down their throat, they will laugh at you. Probably not out loud, but once the programmers get back to their caves, they will rip you apart. Things like this makes you lose all credibility in the eyes of the programmers.

Don’t waste their time

There are so many ways to waste programmers’ time. Basically anything that does not involve development related tasks makes programmers feel like they are wasting their time. Programmers want to spend their days programming, if you don’t let them do this, they will find another job, where they can actually program.

Meetings are the worst time wasters of them all. You should carefully think before inviting programmers to meetings. Is the meeting really worth of disrupting the programmer’s work flow for multiple hours or possibly the whole day? Most programmers should only take part in design meetings and those are not really meetings in the traditional sense; they are more like interactive design sessions.

You, as a manager, should shield programmers from every useless company event that will disrupt their ability to do their job. Programmers will respect the manager who goes the extra mile to let them do their jobs.

Don’t make their work any harder

Their work is already pretty hard. It doesn’t help, if they have to go through bureaucratic loops and holes to be able to do their job. It does not make any sense that they might not have the access to some integral parts of their job, e.g., source code.

If bureaucratic things and environment restrictions prevent programmers from doing their job properly, their productivity will drop, because they are wasting their time doing stuff they don’t want to do.

Don’t treat them like numbers in a spreadsheet

Programmers are not numbers in a spreadsheet. I have seen too many cases of management by Excel. People are moved around in a spreadsheet to match resources and work load. It just doesn’t work like that. Another mandatory book for managers is The Mythical Man-Month.

First of all, programmers cannot be moved to other projects to make the project finish faster, if the project has been going on for a while already. The bigger problem is that programmers usually don’t like to be moved around like pieces in a chess game. I have seen situations, where management have tried to force moving programmers around without asking them, and the results have been less than flattering for the management.

Don’t ignore their opinions

When programmers open their mouth, they usually have something important to say. Bullshitting is something that is more common to sales people than it is to programmers. Programmers are usually quite smart and ignoring their opinions is a recipe for failure. They know what they are talking about. You, as a manager, have to listen to them and let them know that you will value their opinions and show that their opinions truly matter.

If programmers are not listened to, they will not share their opinions anymore and that is not good for anyone. It’s their job to know the ins and outs of technical issues, and ignoring their knowledge is just stupid management. Most programmers don’t want to work for employees that do not value their opinions.

Don’t ignore their efforts

The difference in productivity between programmers can be huge. Even the same programmer can have huge variance in productivity, if his efforts are ignored for too long. Why should anyone bust their ass off and write more quality software than anyone else, if his efforts are completely ignored? He will get the same salary and perks, even if he only works at 25 percent effort, because he’s still getting more stuff done than the rest of the programmers.

Ignore programmers’ efforts long enough, and you will not have any productive programmers to manage. If your company aims at being mediocre, then it’s fine to ignore their efforts, but if your company actually wants to make a difference, do something to acknowledge the achievements of your programmers.

Don’t ignore their requests

Programmers don’t need many things to do their job. A computer with a monitor or two, a proper keyboard, and a mouse are usually enough. If a programmer wants another monitor, give it to him. If he wants a solid-state drive, you better find a way to fit it into the budget. If he wants a couple of books, you should be happy that your programmer wants to learn new things and every company should support that.

Saving money on the things that are essential for the programmer to do his job is brain dead. Programmers don’t spend a lot company’s money and the last place you want to save is on programmers’ tools. Don’t do it, unless you want to alienate your programmers and watch them go to work for someone with proper budget for hardware and software.

Don’t ever lie to them

Be honest. If you make a mistake, admit it. Programmers respect managers, who will admit their mistakes. They have no respect for managers who make bad decisions and then try to put the blame on the programmers. If you are honest, you will show that you are also a human and programmers can relate to you better, otherwise they think you are drinking some vampire blood in your ivory tower.

If you lie to them and they find it out, they will never respect you or listen to you anymore. You lied to them once, why should they believe you ever again? There is no turning back. Be a man and give your position to someone who actually tells the truth to his employees.

Don’t try to fool them with your limited technical knowledge

Most managers are not as technically gifted as the programmers, ergo they are managers. If you belong to this group, do not try to impress the programmers with your technical skills. Good programmers will smell a fake from miles away. Admit that your technical skills are not on the same level, and let them make the decisions about technical issues. You can give your input, but often it is best to keep your mouth shut, unless you are certain that you are the export on the subject.

  • Share/Bookmark