Monthly Archives: February 2014

Lessons for team leaders and developers that no one will tell you

After three years of being a team leader. I like to write down the lessons that I learned so far, (some of them the hard way), or else I or someone else will fall for them again tomorrow.

Some of you will think: duh! these are so obvious!.
And maybe they are, but it seems that you don’t learn life’s lessons until they bite you. And if they were so obvious to you, why didn’t you share them?!

Some of these advices apply to software developers in general, but they became more valuable to me as a team leader.

Remember, You read it on the internet. These are not facts, I have been proven very wrong many times. I might even have blogged opposite opinions in the past!

#1 – Don’t work too hard

Especially if you company allows or pays well for overtime. Or if they ask you to do it all the time. Also, if you have flexible hours, don’t work all your 40 hours in one day and then play the rest of the week!. Here is why ..

Throwing time at a task, makes it take longer

If you give a task 10 hours, you will finish it in 10, even if it is a 1 hour task. So, working overtime makes you burn time and health working on useless tasks. tasks that if you think about, are not that important or urgent. Instead, Work smarter, not harder.

30 hours work week: some startups are moving to a 30hours work per week. this way, if an employee has to finish 10 tasks in 30 hours instead of 40, he will think very hard about the fastest, most simple, smartest way to work on each task.

“work expands so as to fill the time available for its completion”  – Parkinson’s law

But beware, Parkinson’s law does not apply to hard workers, it applies to slack-offs. So do not use it against yourself. Never compromise the quality of the task by giving it less time that it deserves. Just don’t work 80 hours a week!

Overtime will become the norm, and no one will thank you for it

If you give more, more will be expected from you. If you work 5 extra hours and finish 10 tasks a day for a month. It will be come the normal. If you dial back to working 8 hours and only finishing 5 tasks a day, your management will accuse you of under-performing.

given time, instead of appreciating that you spend more hours in the office, they will expect you to do it, then they will blame you to do it. It is just human nature.

As a team leader, it could be the other way around for you. of your team members are awesome hard workers. You will keep delegating too much to them and taking more work for the team. Then you will find yourself owning too many projects. and the team has a task list for years to come, and they have to work on their own while you have no time to teach or transfer your experience. Projects will transform to a hairy beasts that take years to complete, and everyone is working late and eating at their desks with no time to connect or learn anything new.

#2 – Never multitask

Multitasking is for people who are lazy to prioritize. Work on one project only at a time.

When we feel overwhelmed we think that we need to put more effort in finishing all the things in our list. Don’t If you have too many things to do, drop some!

We should know better, we know that we have one brain (processor), and when you multi-task on one processor, you waste time in context switching!.

So how to do it? Ask your manager to order your tasks according to priority, the most valuable stuff should be at the top. So, focus on the highest priority item. Anything else is a waste of time.

#3 – You should not die for Deadlines

Deadlines are not set in stone. you will always face problems. don’t face them by working late everyday.

Whenever you feel like you won’t make a deadline, communicate that fact to your management. Do not wait till after you miss the date to say

“hey, sorry I missed the date 2 days ago. I faced a problem with that useless feature that you probably would have told me to ignore if you knew it is hard to do”.

Instead, say

we have faced a problem X ,
and we will solve it using Y,
and this will make us late by Z days

Usually the reply will save you lots of frustration. at least someone will try to help you solve this problem. They can buy you more time, cut some features, assign you more people to help. Anything that is better than working so late every day!

#4 – Invest in people first, not technology

Leads always look for the latest and coolest tools to improve productivity or raise the quality. we try methodologies, applications and practices. We sometimes become very desperate, we would try anything. like a desperate patient, we would even try magic if someone sells it.

But we forget that people are the ones who operate technology. it does not matter if you have the latest and greatest Source Control Management system if no one use it right. or if no one uses it at all.

Instead of using the new communication tool. Consider teaching your team to communicate effectively first.

Instead of getting a better SCM, consider teaching your team to actually use the one you have first. Because we use it wrong man!

Instead of using a new super Intellisense tool. that tells you where the function is buried deep in the code. Consider teaching your team to write more organized code and to stick to object oriented design. If you get that tool, it will encourage you to write even worse code, because the tool will help hide the problem but not treat it.

#5 – A day in QA is worth a year in Dev

never compromise in quality. if you are super late, and you finished all your tasks, but did not test the project good enough, or not confident enough in it. Do not push it to QA.

No matter how tempting it gets, don’t do it man!, really.

The thing is. QA will always always find bugs. That is the ultimate truth. The only difference is that if you skip testing at the end, bugs will increase exponentially.

It goes like this, you make a small tiny change, you compile, it builds, all cool. Now you could spend an hour or two testing that the tiny change did not break anything, or you could make it someone else’s problem and ship it. After all, it is a tiny change, what could possibly go wrong?!.

You wake up a day or two later, with a letter from QA that there is that critical bug, you think about it for a second and then you realize that if you spent that extra hour testing, you would not have wasted 2 days in QA, then a day for you to fix it, then two more days in QA. Going back and forth will cost you a lot of wasted time, communication, debugging, emails. You will end up wasting much more time.

#6 – Don’t become indispensible

knowledge is power. No, wait!,  knowledge just drains your power.

You become so important, and full of knowledge and information that you are almost indispensible. When you are young, you love that feeling!

image

But then you realize that everyone waits on you for some piece of information. You get IMs @11:00PM. Your phone rings on weekends. You can’t have a week long vacation without holding a meeting or two.

Where I work, my manager asks us to log important notes about every task you work on into a common wiki. he calls it Project Notebook. it is brilliant and it saves us lots questions and communication and wasted time.

To be free to manage your time, every bit of info you know must be written down and searchable. Even if your company does not require it. It is a must if you like to be on a vacation without someone calling you.

One company I read about forces to never take any calls from you colleagues during vacation, or answer emails. This forces them to be on their own and learn what you do.

I suggest a Wikimedia, OneNote, Evernote for business, Or Sharepoint if you need to customize your workflow.

#7 – Keep your friends close

Friends work better together (just by observation, I don’t have hard data or proof). So allow your team to create friendships, let them breathe and don’t make work the intolerable place that they need to escape from and don’t want to befriend anyone in it. If you can hire developers who are already friends that will be even better.

Communication is hard. But communication bandwidth between friends is so huge. They might even hangout after work and chat about work, how awesome is that for your company!

One-to-One meetings also help you to keep in touch with your team members, to get feedback about how you are doing, give them feedback about how they are doing, exchange news about the company and the products, and it keeps your team in the loop of what is going on!

#8 – Read about it

Team leaders got promoted because they were good software developers. Then they try to manage humans the same way they manage software, while both are very different problems. Becoming a team leader is a little bit like changing your career. so treat it as such and read more about it here: (a.k.a. References)

A Picture maybe worth a thousand words. But a video is not worth a thousand books!

Just watch

I used to think that because of YouTube and the million video tutorial out there, that I no longer have to read books.

To learn a new programming language syntax or a new technology, I could just search for a video and watch for an hour or two and I will be an expert.

I thought it will be the end of books.

How vs. Why

A step by step video can teach you how to create a website, but you will never understand how a browser works. and believe me any developer worth his salt should know how it works and why it works this way.

Give me a fish, I’ll eat for a day.
Teach me to fish, I will eat for a lifetime

Videos vs. School

Tutorials are a form of a non-interactive school. Schools have been around for centuries. They are a live person playing a video every day. teaching you, walking you through steps. still, no one thought that school made him need books less.

In fact, it is the other way around. You need a teacher to explain a book or ease your way through it, not the other way around.

I read blogs..

A book is worth a million blog posts

Since I got my android phone and had access to Pocket, I read lots and lots of blog posts. they are bite-sized, concentrated, engaging pieces of knowledge.

Two years and 3,000 blog posts later, I don’t feel any wiser. I remember the bites, but never felt like I ate the meal. Never felt full.

Blog posts are not always right. They are just musings, thoughts, summaries, and lots of crap. just like this post!

Don’t believe me? check out the following interesting and useful topics ..

image

.. they were auto generated by Hubspot’s Blog Topic Generator.

Books vs. The Internet

Some would argue that anything that you can find in a book, can be found in blog posts or stackoverflow or just by googling it. So, go and collect every piece of information about the topic that you can find online. you will waste weeks of your time and you will end up with an untangled web of unrelated information.

Books are just curated knowledge, well written, organized and based on real experience.

If I have something valuable and useful, why would I give it to you for free! Why would I put my pearls of wisdom or years of experience in a blog post that I write @8AM while drinking my morning coffee? How would it even fit in a post?

It is my greatest intention to make stackoverflow.com highly complementary to these sorts of timeless, classic programming books. It is in no way, shape, or form meant as a replacement for them.

Jeff Atwood – From <http://www.codinghorror.com/blog/2008/04/programmers-dont-read-books—-but-you-should.html>