by Philip Lew, XBOSoft CEO I read Stephen Covey’s famous book The 7 Habits of Highly Effective People when it first came out in 1989, almost 30 years ago. I was just starting my career then and was able to apply many of the principles to not just my work life, but life in general. I was quite saddened when Covey passed away back in 2012. I even went back and re-read his book, sharpening up “my saw” in the process. With these principles in mind, I decided to give a webinar last year with the American Software Testing Qualifications Board (ASTQB) on the Seven Habits of Highly Effective Agile. This webinar was very well received even though — as in Covey’s original 7 habits — most of the content was not technology related. Rather, it focused on the right things at the right time and maintaining a healthy mindset, which sometimes requires a shift in paradigm depending on your starting point. Applying Covey's Work to Testing When I was invited to give the closing keynote at TestIstanbul, in Istanbul, Turkey, on April 25, I knew giving a tailored version of my 7 Habits of Highly Effective Agile Testers talk would work well for this audience. As it turned out, the speech got a very positive reception from TestIstanbul attendees. As an international tech conference that focuses on software quality, the conference attracts an elite audience of international entrepreneurs and engineers to discuss the latest trends and developments in software testing practices. The audience at my TestIstanbul closing keynote. While we at XBOSoft have many “habits” during testing and process evaluations, my 7 Habits offers an accessible entry point. There is a big difference between a routine testing process most companies offer, and the higher level work that we do. These habits comprise the guiding principles for our process for software testing and, in particular, as it pertains to Agile testing. \tFocus on Efficiency and Effectiveness \tTreat the User as Royalty \tMaintain an Improvement State of Mind \tBe agile, then do Agile \tThink Tasks Not Roles \tFocus on Customer \tThink Long Term In this post, we’ll cover Habit #1. Habit #1: Proactively Be Efficient and Effective This habit is the crux of Agile because things are moving so fast from iteration to iteration that you have to be efficient AND effective. You can’t afford to do things twice and you can’t afford the time to be doing the wrong thing. That’s why it’s not all about speed and velocity. For more on this habit, read about a similar vein in the “Smart and Get Things Done” section of the book Joel on Software. Being efficient and effective in an agile testing context means: A. High level of test automation. Everyone talks about automation, but not many people think about the different kinds of automation. Automation can be everything from automation test data preparation and sanitizing to UI based automation. Because agile is so adaptive to requirements, the UI may change every sprint, so there’s nothing wrong with focusing automation efforts on other things such as APIs. When a feature is relatively stable, a few iterations later, then you can go forward with automating it from a UI point of view. B. Ensuring smooth downstream processes for continuous integration and delivery. Although this is not a direct responsibility of QA and testing, the QA environment is the last step before staging and production so we must always ensure clear communication and processes to flow downstream. C. Fast feedback systems via continuous build systems, automated test results, user feedback, product owner daily input with collaboration and status boards. You can’t tell if you are moving in the right direction or how fast you’re going unless you have fast feedback. If you have to wait 2-3 days to get automated test results in a reasonable form where you can make a decision as to what to do — or your product owner doesn’t show up for meetings — then you’re not utilizing the power of agile. D. Automate environment and data management. You can’t be productive unless you’ve got unless you’ve got the right tools and your workshop is set-up to work. Having automated environment and data management is a must in agile. E. Do “just enough” documentation. Consider Barry Boehm’s view: “Agile methods derive much of their agility by relying on the tacit knowledge embodied in the team rather than writing the knowledge down in plans.” Just enough can be determined by: \t \t \tHow long will the document stay relevant? \tDoes the document’s value justify the effort? \t Will the document be continuously used? \tHow often will stakeholders use the document, what they use it for? \tWhat will the document be used for in the future? F. Beyond than “Just Enough.” Other things to consider regarding documentation include: \t \t \t Documentation that is not done should be replaced by communication. \tUse ‘lite’ documentation techniques when possible such as screen capture and recording tools.Does the document’s value justify the effort? \tUse easily searchable, and consistent naming conventions. G. Consider low overhead tests. Sometimes there will be throw away results via lightweight automation. Because sometimes you’ll have tests that you want to automate for a few iterations knowing that things will change. H. Proactively manage technical debt and risk by planning for it. That means putting it in as a work item as part of the sprint. Identify sources, assess and evaluate, and understand your blind side. I. Proactively manage risk the same way that you do technical debt. It’s not a surprise. It's there and you know it. Why not proactively plan for and mitigate it. Put it into your sprints as part of the plan. J. To be effective, you must prioritize your efforts, getting back to one of Covey’s original 7 habits, “Put First Things First.” And of course, acknowledge that some things will fall off your plate. In your retrospectives, be proactive about finding out why things didn’t get done: \t \t \tWas the task not clear? \tDid we underestimate the effort? \tWas it because it wasn’t important, to begin with so we didn’t get around to it? \tOr some other reason? Start here and you’ll be well on your way to successfully implementing Agile. Remember that each iteration should provide valuable information going forward. Getting fast and frequent feedback on how you are doing will help you to push forward. If you are on a diet and want to be successful, it’s the equivalent of weighing yourself. You can’t expect to know how you are doing unless you do it often! When pushed by management on velocity and fitting more stories into the sprint, remind them that it’s a long race. You certainly don’t want to race to the finish line, only to find out you’re going in the wrong direction! Be sure to read about Habit #2 next!