Perhaps you’ve heard of the Socratic Method? At The University of Scranton, we loved good old Socrates, so we studied him and his methods a lot. The general idea, derived from how he would debate people, is to ask a series of questions until you get to the truth of the matter. He would often question people until they backed themselves into corners. Another, similar method is the “5 Whys.” You keep asking why until you get to the real root of the issue. The idea here is that you want to solve the right problem, so you need to know what the real problem is.
Over the last few months, I’ve interviewed dozens of people, asking a pointed question: “How did you build that?” In that time I learned common tools, business decisions, and generosity. Recently I gave a talk where I went through the most important lessons I learned, and some tools to get the job done.
As a programmer, I feel like I’m trained to make a lot of assumptions. Yes, I get as many requirements as possible from the clients/users, but there are some unanswered questions, ways things should be implemented, or just things left up to the expertise of the person doing the work. Making good assumptions is as much part of a project as anything else. However, it should not be a default mindset for everything.