Sunday, March 20, 2016

Learning pathways for testers

Usually when I look online for learning resources I find a lot of rankings like:
  • Top 10 blogs every tester should follow
  • Top 5 sites every tester should know
  • Top 20 twitter account for every professional tester
Almost always those ranking contain top hits from Google + one entry which happen to be closely related with ranking source. Associating yourself with the best is really smart from marketing perspective (and I actually may do that myself one day), but it's surely not what I was looking for. In this post I want to provide more thorough examination of learning topic.

Text will contain 3 parts, which are ordered by importance level - motivation, learning at work and learning after work.  Each section contains action points to consider (same style as in Lean Software Development: An Agile Toolkit). Note that those are not universal truths. You need to map them to your style of work and project reality.

You can probably apply those advices to different computer science field as well.

Part I - Motivation

Surely the most important one. You may have the best resources available, best people around, but still it's not enough unless you are willing to learn. 

1. Like what you're doing

Robert Greene in Mastery wrote 'In order to master a field, you must love the field and feel profound connection to it'. I can't image going to work every day with negative attitude. Save yourself tortures and find a job which you like (or at least tolerate).

2. Adopt beginner's mind approach and don't be afraid of failure.

I'm always impressed how young kids are skiing. They carefully listen to their coaches and try to adopt advices instantly with full trust. In rare cases when they fell on the ground they just stand up and start riding again. No complains. No second thoughts. We should strive to adopt the same approach. If you are interested in this subject read Ryan Holiday's The Obstacle Is the Way book.

3. Find a company which embraces learning

This has a lot in common with something I wrote already in my blogs - you should always aim on working with people smarter than you. If you notice that your  every change proposals are discouraged or laughed off consider changing your peers. It doesn't have to be company change, internal project switch may be good enough.

4. Find a company which pay you well and doesn't use money to motivate you.

Do not pretend that money is not important. In my opinion you should aim on earning above average. How to define average? It's your subjective amount of how much people on your position, with the same experience should earn. Money shouldn't be used as motivational carrot. As Daniel Pink wrote in his great book Drive (add to wish list if you haven't read it already) extrinsic motivation has negative effects. 

Part II - Learning at work

Dorota Wojtałów wrote in her Medium post that 'at work, you have almost 8 hours of practical experiences — 8 hours which can be filled in with learning new stuff.' Wholeheartedly agree. No need to add anything.

1. Don't be afraid to step outside your comfort zone

I dedicate this point to every manual tester who want to start automating. Writing code isn't really that hard, especially today when we have so many books and online resources available. Don't be afraid to pick up DevOps tasks as well. Treat it as free learning opportunity (you'll work 8 hours anyway, so why don't do something new?).

2. Try to see the world from peers eyes

Most software testing books focus on testing activities only. In Agile world we are all team members with one simple goal (remember my last post?): delivery of right product. We should focus more about projects than testing. Ask when necessary what's expected from you.

3. Ask for & give feedback

This is not easy, especially when it comes to negative one. However it's really beneficial for us, projects & whole company. Don't forget about positive feedback too - it may even make occasional  negative one more influential. Read Nonviolent communication if you're interested in the subject.

4. Don't procrastinate

TODO... ;)

Part III - Learning after work

Every intellectual & well-paid job require some learning after working hours. Simple as that. No exceptions here.

1. Don't work too much

It may surprise you, but overtime actually decreases productivity.  If you company has something I call 'overtime culture' (social pressure to stay at work more than 8 hours) try to kill it by introducing new, more healthy, working trend. Same applies for reading & learning at home. No need to do it always. Find some time for friends, family & dogs. Dogs are awesome.

2. Make reading your habit

Books are awesome too. Start reading every day, on various topic. If you are tired of technology go for something lightweight (I like post-apocalyptic books like World War Z or Metro 2033). Consistency is the key. If you read every day you will end up with reading habit, and as Charles Duhigg wrote in 'The power of habit' they're hard to change. Take advantage of that.

3. Expand your knowledge in various fields

In one my previous posts I stated that ideal tester equals 3,14. Keep that in mind and don't read testing books only. Expand your knowledge in programming, devops, management, UX, security etc.

4. Be critical in choosing sources you follow

Our day is limited to 24 hours only. You can't follow every single resource available online and read every book. Be critical and follow the ones you consider smarter than you. Generally speaking internationally recognised authors are almost always better than local. Read in original language (usually english) to avoid translation confusion. Blog aggregators (top posts from last week) may be helpful here.