Paths and inspirations through my software testing career
I wanted to take some time to reflect on things and people who made a difference in my testing life and changed the way I approached testing.
To make it easy for reading purposes, I am going to classify this into 4 phases. (In case you are interested in how I turned into a tester read on, if not, go right to Phase 4 where I talk about lot of useful testing information which helped me and may help you)-
1. Early Testing Phase – Confused!!!
It all started during my undergraduate program, where there was a course named "Software engineering principles". This was supposed to be the most boring course in the program (or atleast that is what people told me before I enrolled in this course) as it was too theorotical and the professor just went over Roger Pressman's book which was the recommended book for the course. I wanted to see for myself what people said was true, so I enrolled in the course. During this course, I realized what people said was true indeed, it was so dry and boring and vowed that I would never again take such a course and probably would never follow those principles/concepts in the future (I broke the vow later in my testing life, you will see)
Without knowing what topic I am interested in/pursue as a career, I joined a mid-size software company as a Test Engineer. It is funny because, during my interview, I was asked whether I would like to be a Development engineer or Test engineer. I asked the question what is the difference? The interviewer replied saying. “Development is the majority of the work in software development life cycle where we need coding skills and lot of critical thinking. For testing he said, “It is a new field which is developing but not well known, but they would want people in this area to ensure the software is working correctly and would want a person who could do coding and write automation scripts (but did not mention critical thinking)”. They said both paid the same and would prefer a person who could code in the Testing Department. I thought this sounded more interesting than the former, so I said “Testing”.
I am glad till this day that I made this decision if not I would have repented all my life for not being part of this exciting and interesting field where everything is a mystery and we testers try to solve it using our full artillery of abilities and critical thinking.. This was the 1st major turning point which got me into testing.
2. Second testing Phase – The Awakening
I joined this company as a Test Engineer. My responsibilities were manual and automation testing for software and firmwares. 1st week into the job, I was hit by information overload. Not because of the information about the systems under test, but because of the plethora of templates, standards, rules, guidelines and so called “best practices” I needed to follow.
I still remember this incident as some of these are memories I can never forget and was instrumental in shaping my future. So, 1st week into the job I was asked to fill some templates one of which was an excel sheet with lot of details such as number of testcases executed, no: of them passed/failed, test coverage etc. I was asked to take the count of the number of test cases from a test plan and fill it in this excel sheet. Think of this as Weekly Test Reporting document.
While filling this form up, I did not understand why I was doing it and asked a colleague of mine who has been in the same project for 4 years the following questions--
Me: “Why do we have to do this?” (I asked this question just out of curiosity.)
Colleague: “That is the procedure we follow”
Me: “Do we have to count the number of test cases each time”
Colleague: “Yes count the number of test cases and just fill it up”
Me: “Hmm…looks like a lot of work and data, won’t it be confusing for the client”
Colleague: “No one really cares about this document. We have been sending this weekly to the client for many years and the client hasn’t told anything about it”
Me: (I smiled and said) “It would be funny if the Client thought, the document was just a spam e-mail and kept deleting it for the past 3-4 years”
Colleague: “That would be seriously funny but would be irritating too as we have been spending lot of time preparing this document every week for past few years”
Me: “What if what I said was really true” (again smiling face)
Colleague: “That would be a surprise and shocking news to us”
This was a funny conversation because in 2 months time when I established some credibility in the team I raised this point to my project manager and we revamped the whole document to provide only necessary details.
Why am I telling all this, you may ask?? This is a simple example where I noticed that people are frightened to question authority as they think it is bad and will scar their reputation. In some cases, they think it may affect their promotion and salary raise. These were my inferences within the first 4 months of my tenure.
So 4 months passed and I started questioning things as I had established the credibility of being a hardworker, creative thinker and delivering things on time (Yup the usual things a newbee does when he is in his first job J)
There were so many unnecessary templates which we filled up just because it is part of the process. I still remember having this conversation with my Project Manager (PM)(whom I consider one of my role models and was an ardent supporter of my views). I asked my PM, why are we filling all these unnecessary forms, guidelines. He replied saying, he had the same thought and when he questioned his boss, they asked him not to bother about it. The reply he got was “We want to become a CMM-I Level 5 company”.
What does this really mean to a person and a company when you do lot of unnecessary and time consuming activities to give the outside world a projection that, the company is a certified company? For the company, it is getting more clients (as everyone were going by the certifications etc), for an individual it is less job satisfaction, curbing creativity and hating the testing field all together.
Over the 2 years I worked in the company, I was rated “Star Performer”, had established credibility in trying to simplify processes, trying to bring creativity to the table but at the same time was labeled as a “Rebel” in my company and got the wrong image as a person who always wants to question rules and regulations. This was not true as I was addressing only those things which affected the tester’s job and curbed creativity.
But anyways, long story short, my PM told me that, I had a really good future in testing and advised me not to waste my energy and creativity in worrying and fighting against authority.
This made me think and over the next 4 months in the company (I left the company after that), I started analyzing what my strong/weak points were and wanted to be involved in something which covers all aspects of the software development lifecycle. I was curious to know what people really do in different phases of the lifecycle. It is funny that, after all the hatred towards “Sofware Engineering” during my undergrad, I found that this was the discipline which covered all my interests and decided to pursue my Masters specifically focused on this aspect rather than taking core computer science.
3. Third testing Phase – The Mind Tuning
I decided to pursue my Masters in Sofware Engineering at Rochester Institute of Technology (I would recommend this program to anyone who would want to know about various activities that take place in different phases of the SDLC.). I specifically chose this program at this university because
a) There were no recommended books
b) Everything was hands on and practical. In fact, there were courses like Requirements Engineering, Software Re-engineering, Software Modeling, Research Methods (It was about reading research papers and writing a good one) and a 3 quarter live project which we did, starting from Requirement gathering all the way to acceptance testing which made me “Jack of all traits and Master of none” (This is a good thing believe me, based on my experience this is what people want in the real world). I coded in C#, Java, used unit testing frameworks like JUnit, Nunit, learnt Agile development methodologies like XP, Scrum and all these changed the way I thought about testing and Sofware engineering in general.
In fact, it increased my interest in testing and I even ended up doing my final research project on “Exploratory Testing”. This was the 2nd major turning point in my testing career as I was exposed to works from James Bach and Cem Kaner and also started blogging about my research and even did a survey to see how many people have been doing it knowingly/unknowingly. In fact, Cem Kaner appreciated my work when he came across my blog and left a comment on it. This was so valuable to me and I can’t tell you how happy I was that day. This whole exploration during my project made me think that, I wanted to pursue my career in testing all my life and tuned my mind accordingly (I had to use the word tuned as I mentioned this as the name of this phase J)
4. Fourth Testing phase - The Refinement
With the knowledge I gained from my Master’s program, I did an internship as a Developer in a huge payroll processing company. There, I was developing software but still thinking about how my code could break, what inputs could break it and wrote unit tests to somehow find loop holes in my code and others.
I wanted to get a job which touched upon the same things i.e things I learnt during my Master’s and Previous job and which would be in line with my passion “Testing”. After attending various interviews, I landed a job in one of the largest auto insurance companies in the US as a “System Test Engineer”.
This was the 3rd thing which radically and completely changed my mindset and the way I thought about testing. I was lucky to be in a company/ in this position where creativity, experimentation was encouraged and unwanted procedures/templates were not encouraged. Most importantly the work culture provided lot of opportunities for exploration in testing.
Once I joined the company, I started exploring various opportunities inside the company, started reading blogs/articlers/papers written by other testing consultants inside/outside the company, made notes of things I find very interesting about testing and also noted down things which I wanted to do as a tester.
The main impact in my testing life came when I attended James Bach’s “Rapid Software Testing” (RST) class - http://www.satisfice.com/. This was not just some random training class, but changed the way I think about testing. It helped me realize that, testing is like an interesting puzzle and once we struggle and find a solution, the pleasure is immense. Rather calling this as a training class, I would say
- It was a MOTIVATION class which motivated me to never take “NO” for an answer
-ALWAYS ALWAYS ask questions and don’t let people randomly use jargons
-NEVER get INTIMIDATED as a tester.
Since then, I have been constantly following things happening in the testing field. In fact, I attended CAST 2011 on my own dime and that was one of the best investments I ever made. This is because I not only learnt from other knowledgeable people but also got so many important contacts which in turn lead to a TWIST podcast which I was invited to be a part of, by Matt Heusser along with colleagues of mine from my company, I became really good friends with couple of people whom I met in the conference and I am still in touch with them and in fact invited them to speak for my testing group NOSQAA (www.nosqaa.org) in Cleveland, Ohio.
These gains I mentioned above were priceless and I am still glad that I made this investment to attend a good testing conference. I would advise anyone who is starting their testing career like me to do the same to get to know what different testing approaches/tools people have been using outside your company. You can later bring these approaches which make sense to your project inside the company as I did.
You may want to read this post by Eric Jacobson before you go to a testing conference on “How to enjoy a testing conference”
http://www.testthisblog.com/2012/04/how-to-enjoy-testing-conference.html
All the above things I did helped me do the following
1. Become chief editor of my companies testing newsletter. None existed before I joined, but I was encouraged by my peers to come up with this initiative. Now this newsletter goes to about 450 people in my company on a monthly basis.
2. I was given the opportunity to become one of the board members of NOSQAA (www.nosqaa.org). A non-profit software testing group which was formed to promote testing in north-east ohio by bringing in different testing topics through different speakers all over USA.
3. Identify testing opportunities and risks in my projects and try to bring solutions for them.
4. Question anything which hinders the creativity of the tester and any random assumptions about testing like “no: of test cases can determine the test coverage”.
5. Helping others testers like me by sharing my ideas and thoughts.
6. Starting my professional blog (as you guessed it is the one you are reading currently)
7. I get lot of testing ideas outside my company’s environment while running, looking/talking to other people. while buying groceries (seriously that has happened to me), while I am in bed etc. So, whenever I get thoughts I keep noting them down as “Notes” (it is an app too) on my iPhone so that I don’t forget them and later get back to them.
And I am thinking of doing much more……….
I have so much confidence that, there are no boundaries for what a tester can do and I want to continue to keep succeeding, at the same time learn from the numerous mistakes I make in the process of succeeding J
With a lot of intelligent people around me in my company/outside the company this journey to achieve anything you want in testing can be done easily. All it needs is dedication, critical thinking, questioning/skeptical mind about systems in general, self-confidence and never get intimidated, the aptitude to learn and some level of humility (as you cannot possibly know everything in this world).
NOTE: I am still not there and working on all these aspects, trying to learn them and get better. I still consider myself has a novice tester when compared to those out there in different parts of the world.
So knowledge is endless and the only thing we can do is continue to keep learning and testers can achieve anything. Just thought of sharing my experience and hope people get some thoughts from it J
Below are some of the must read blogs/articles/videos. This is where I found my inspiration. (Mainly because of James Bach and my other role models/well wishers in the past few years like peers in my current and previous company)
http://www.satisfice.com/blog/
http://www.buccaneerscholar.com/home.html (check out the Google video on becoming a “Software Testing Expert” and other Links/blogs posts. They give immense inspiration)http://www.buccaneerscholar.com/blog/ - inspiring stories
http://www.allthingsquality.com/p/people-in-testing.html (It contains a list of almost all the testing blogs in one page)
http://jonbox.wordpress.com/2012/04/ (gave me ideas about useful and Free testing tools testers can use)
http://www.testthisblog.com/2012/04/how-to-enjoy-testing-conference.html
Biography of "Steve Jobs" by Walter Isaacson - http://www.amazon.com/Steve-Jobs-Walter-Isaacson/dp/1451648537
They are so many other links I have with me which I follow on a regular basis…. Hit me up for some more useful info about blogs/articles/tutorials and I would be glad to share it with you.
I want to finish off by re-stating a quote which James told me during the RST class “A TESTER HAS NO BOUNDARIES”.