Alan Page has done his share of hands-on testing and team management in his years at Microsoft (he's also the co-author of How We Test Software at Microsoft). And, in that time, he has learned that what you know isn't nearly as important as what you can figure out. In this interview with TechWell editor Joey McAllister, Alan discusses the importance of honing your critical-thinking skills and offers some tips for doing so.
Joey McAllister: You recently wrote about the importance of thinking critically when developing software and noted that some young programmers and testers fall into a trap of being able to "recite a textbook" but being unable to think critically about a problem. Why do you think they fall into that trap?
Alan Page: There are probably a lot of reasons for this, but there’s one really important thing to point out first. I don’t think the lack of critical thinking is confined to testers and programmers. Perhaps it’s just most profound there, since critical thinking is so important.
I suppose one reason for this is too much emphasis in schools on being able to ace a multiple-choice test or recite facts rather than problem analysis and discussion. Frankly, in these days when I can discover nearly any fact in a few seconds (depending on my Internet speed), facts (for me, at least) don’t carry nearly as much weight as critical thinking and analysis.
Learning also requires frequent discovery of new information and application of those new ideas. In other words, it’s not enough to just learn (no matter how much you know), and it’s not enough to just do (no matter how productive you are). Long-term success in any knowledge work field requires a balance between learning and doing.
Joey McAllister: What are some ways in which you’ve developed your own critical-thinking skills?
Alan Page: I’ve told this story about learning before, but I don’t think I’ve ever written it down. Once upon a time, I decided that I was serious about testing, so I bought and read a book on software testing. It had some great ideas and filled in several gaps I didn’t know I had. I spent weeks thinking about what I learned and figuring out how to apply it to what I was doing. For a short time, I felt like I had the knowledge of software testing firmly in grasp. Then, I read another book on testing. This book was also good. It filled in more gaps in my knowledge and made some more concepts make sense, but it also contained concepts directly in conflict with the ideas from the first book. I struggled with this for a few more weeks and then read a third book on software testing. This one, as you’d expect, had more ideas and filled more gaps (and conflicts), but it set off a big trigger for me. I began to form my own opinions about software testing. I reread each of the books and found ideas and approaches I liked and others that I thought were flat-out wrong. For some reason, I wasn’t able to take my brain out of “consumption-only” mode and think critically about the ideas until the conflicting ideas grew to a loud-enough roar. Since then, I’ve read over a dozen books on software testing and at least a hundred on related topics (engineering, leadership, innovation, etc.).These days, every time I want to learn about a new topic, I insist on reading at least three books on the topic and surf the web for more background. I don’t feel confident talking or writing about a subject until I’m confident that I can form my own opinions and stances on the topic, and that requires that I dig. To be clear, being able to form an opinion on a topic doesn’t make me an expert, and I’m probably not an expert on anything, but I like to learn enough that I can at least hang out with experts without making a fool of myself.
Joey McAllister: Do you have any suggestions for educators and academic institutions to help improve their students' odds?
Alan Page: I’m on the alumni board for the school of arts and humanities at my alma mater. At the board meetings, we always have some sort of presentation from one of the departments (a music performance or art show is common). Last year, a professor gave a fantastic presentation on ethics and critical thinking, and it was all I could do to keep from jumping up and saying, “Yes, yes!” At the same time, of course, I was thinking, “What in the world does someone do with a philosophy or ethics degree?” My blended conclusion/opinion was that it would be great if degrees in technical disciplines required any course on how to think, especially if the exercises could be tailored to match potential career choices.
But, it really comes down to something I have said to college students, parents, and friends for years: A university is not a vocational school. Skills and knowledge are important, but if students can’t apply that knowledge or know when to use their skills most appropriately, there’s a huge risk of releasing a graduating class of hammers into a world filled with screws, staples, and duct tape.
Joey McAllister: What do you suggest that those people newly out of school do on their own to improve their chances of survival in software development?
Alan Page: Know how to learn. Once you’re on the job, what you know doesn’t matter nearly as much as what you can figure out. Every single successful software engineer I know loves to learn and is able to work through ambiguity and technical details to solve whatever problem he or she is facing. Given a hard problem, if you are stuck, your career is stuck. Success depends on your ability to experiment and discover solutions.
Joey McAllister: How do you get new hires thinking critically right out of the gate?
Alan Page: Often, new hires work on a specific small problem or feature. As a leader or manager, it’s critical to challenge new hires to understand how their little piece of the world fits into the big picture. For example, I’ll ask, “What features does your feature depend on?” and “What features depend on your feature?” From there, I may ask, “What do you think a customer would do if we didn’t ship your feature?” or “How do you think customers will use this feature?” I like to ask anything that will get new employees to think about the impact of their work beyond their day-to-day testing. It’s also really important to ask why. It doesn’t have to be an out-loud question, but I find it helpful to stop once in a while and question our approaches and assumptions and to think about alternate views and approaches. Even if we don’t change, even a brief bit of consideration for diverse approaches can help us understand the systems we’re working in.