Friday, October 23, 2015

11 Steps to Successfully Manage House Project

I was really busy recently because of my house interior finishing. Somewhere between seventh phone call and third visit in Ikea an idea struck me. I got project manager role similar to our bosses roles in IT world. As agile enthusiast I'd like to share 11 lessons which I learned.

1. Know what you want. Everything starts with ideas or more formal requirements. Ideally, every single plan you have should be testable (i.e. after its done you shall be able to clearly answer one simple question: is that what I wanted?). At this point you don't have to think how to things. Make sure they're all possible though.

2. Pick right people. Recently I read great blog about how important for IT companies recruitment is. After hearing more terrifying stories about workers from my family & colleagues I realised it may be very important decision. Fortunately after thorough I picked right. Look for people who are internally motivated (see Daniel Pink Drive for details), have 7 Habits of Highly Successive people and are recommended by someone you trust (if possible). It won't be easy, but it's investment worth taking.

3. Pay for responsibility, not for things. That's obviously cliche. However there is huge difference between hiring multiple teams to do small jobs and one team to do everything. Avoid splitted responsibility at any cost. Eventually something will go wrong and you will have to react. Don't waste time looking for culprits. 

4. Do not save on quality. Well, you may say that I'm Quality Assurance Engineer so that's just selfish statement. I believe technical debt has to be paid eventually, so you end up saving nothing. If something exceeds your budget work hard to earn that money. Buying cheap stuff is just costly workaround.

5. Focus on the hardest things, do not micromanage. After picking right people you shouldn't worry about easy/routine tasks. By looking at their hands constantly you'll only make them angry. Spend your entire energy on things that you believe can go wrong (creative/hard stuff) or focus on things you'll do yourself.

6. Avoid being a proxy. A lot of times you'll end up doing things which involve three parties (you + 2 strangers). Do not waste time speaking to them alone. Arrange conference or make them call each other. After few such occasions I realised why we have standups. Communication is really the key.

7. Be open for ideas. Someone else may have better ideas. Do not think you are the smartest person in the world :)

8. Be creative. For some reason in our society there is huge demand on being mediocre, just like everyone else. Do not give up your dreams only because something is extraordinary. Your working team will gladly do even the weirdest things. They can put it to their portfolio.

9. If you act, act with boldness. That's the statement which you can find in every Robert Greene book. If something is going wrong do not hesitate. Waiting will only make things worse. That's your money, your house (probably for your family). If you react immediately people can't ignore you. Note that reaction can't be too emotional. Think straight.

10. Establish strong posture. Whether you like it or not you are constantly judged by others. In his brilliant Winning Through Intimidation Robert Ringer explains his struggles as estate broker. He was constantly cheated until he hadn't established something I'll call 'power aura'. Do not naively think you can go wear shorts and during t-shirt during business-making without any consequences.

11. Send weekly reports to family. What? You had probably asked it. After sending those reports I realised it helped me to keep up with dozens of ongoing problems/tasks/logistics problems. Do it for yourself, and family will enjoy picture updates :)

Thursday, October 8, 2015

Our future as testers

I got inspired to write this post after watching a youtube video 'Humans need not apply'. Author of this rather one-sided video presents many arguments which should convince us that our jobs would soon be taken by robots and automatons. Of course points presented are highly exaggerated (typical media piece these days...), but it's always worth to consider if our job have bright future. So do we, as testers/QAs, have something to worry about?

Let's start with simple question: why do companies employ a tester? They do it, because it's much cheaper to detect and fix bugs found early. They don't really care about quality. They care about customer perceived value. It's worth to remember that even with 99,9% unit test coverage and green seleniums bugs may somehow slip on production. Unfortunately in social media era one celebrity tweet with our production bug (btw. Edward Snowden has already 1,41M followers) may quickly ruin us. So in my opinion testers will be needed (+desired +looked for) as long as cost of production bugs will grow. And I doubt this trend would stop soon.

On the other hand in our highly competitive society companies need to release new features very quickly. Big teams of testers don't really fit in agile methodologies. Even assuming 3 week sprints new functionalities are usually ready for manual test at the end of third week. In such a short time one person is more effective than a team. That's why every tester should focus on programming skills, the transformation to lower level tests (unit, integration) is necessary. There is no alternative. Test pyramid has to look as above (notice that I included manual test on top - I still believe its the best form of testing). 

Along with programming there are other desired testers skills: scripting, UX/UI knowledge, DevOps knowledge, business domain knowledge... I recommend you to specialise in one thing, but keep close eye on the other. Don't ignore them, because there are people who wouldn't. You don't want to be recruited by your past subordinate. Do you?