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”.
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!
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.
#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)