If I had my college life to do over, or if I had control over college education, I would like to see the Freshman year in college dedicated to the art of seeking knowledge through the Socratic Dialog. No matter what your level of knowledge is, a Socratic Dialog with a teacher, with a colleague, or with yourself, can help you advance your state of knowledge, and solve problems or probe issues. At this age and time, we all lack knowledge in one area or another, because we all tend to specialize, and each of us is sort of an "island of knowledge". Questions can serve as bridges between these islands. "Peeling the onion", from the consultative approach training, is sort of a form of Socratic Dialog. Socrates was a bit more probing, though. Too probing for his own good, actually. He was sentenced, and put to death for "insufficient piety, and corrupting the youth". A very instructive fate!
Anyway, that was getting too philosophical. Lets get back to pragmatic engineering thinking. A danger of Socratic Dialog is that it can turn philosophical. Unlikely for engineering oriented questioners, but a real danger, nonetheless. We just need to remember that not all questioning is philosophical. Something that Socrates did not seem to realize. But he was not an engineer!
Questions can help individuals, and teams, explore how to approach a problem, either of knowledge or of planning, and problem solving. To make this discussion more concrete, I would like to provide an example. I will attempt to illustrate with a personal experience, I hope will be meaningful to others.
In all honesty this is not how I approached it to begin with. This is how I would like to have approached it. This is in the spirit of Parnas's, "A Rational Development Process, and How to Fake it". Document as if you followed a rational process - even if you did not. But I digress again. This is all a "bloggish" writing style. Quick, spontaneous, and definitely not a research paper.
Say you are asked by your management to explore a topic that you are not very familiar with, that could possibly pay back for the company. Say it is "Design By Contract". What is a good approach to begin the investigation? The topic could be anything: Failure Modes Analysis, High Availability Study, Database Performance, Best Framework for OLTP Applications, Design of a Best Practices Process, whatever.
Note that Socratic Dialog is NOT brainstorming. Very far from it.
Here is one approach to explore a planning a task based on Socratic Dialog.
There are eight basic questions that we would need to be answered before we spend a lot of time, effort, and money. The eight questions relate to the basic elements of thought (See Richard Paul's writings). These eight elements are: purpose, main question, information, concepts, assumptions, point of View, inferences and conclusions, and implications. That is not the only way to structure a Socratic dialog, only one way. I'll write about others in future blogs.
1. What is the fundamental purpose for exploring this topic?
- To survey the field?
- To explore possible benefits?
- To do an in depth study of the best way to bring development teams to adopt DBC and to define concrete practices and techniques to transition teams to DBC and make it a reality in software development practices at VeriSign?
Questions of purpose address the value proposition, and explore possible scopes. The three alternatives listed above define scopes that can vary in level of effort from the production of a one week exploration presentation all the way to several man yeas by several people developing detailed practices, guidelines, and training. The question of purpose must be the first question addressed.
2. What is the main question I am trying to answer. Other questions flow from answers to this. Typically a "question tree" can result - could be useful as an outline or "roadmap".
- What is DBC?
- Is DBC beneficial to adopt? Why, How? What are the costs/benefits?
- What exactly is involved in learning/adopting DBC?
3. What information do I need to answer my main questions?
- What is my "knowledge gap" with regards to this topic? Filling a knowledge gap is called "research". If we have all the information we need, we don't need research.
- How much do I know, how much do I need to know to answer these questions?
- What is the state of the art in this topic? Who has it?
- How applicable is the existing body of knowledge to my purposes? Is it applicable to my domain of concern (Java development of OLTP applications)?
- If it is not, what would I need to do to create "new knowledge"?
4. What are the most basic concepts that I need to explore?
- Contract theory in human interactions. Contract law. Are contracts useful/necessary/valuable in human affairs? How?
- Contract theory for designing software. What exactly are "software contracts?"
- What other concepts are related to the basic concepts?
- What is the "ontology"?
- Contract specification (where, how).
- Contract enforcement (where, how).
- Design methods, design patterns
- Specification methods (requirements, test plans)
- Interface specification. Interface/implementation/runtime relationships.
5. What assumptions am using in my reasoning?
- DBC is valuable.
- DBC is easy to learn/teach.
- DBC is reasonable, pragmatic, relevant (as opposed to unreasonable, academic, irrelevant)
- Developers will "take to it" when they see its benefits.
- Management is predisposed to it and is strongly inclined to support the efforts to make it a reality. To what extent is this true?
6. What different points of view do I need to consider while looking at this?
- Who is the "customer" for this effort? Upper Management, Development Managers, Development teams, or individual developers. Others?
- Developer point of view: Here's what it is, here's how you do it. Here's what it will help you achieve. Here are the downsides.
- Development Manager point of view. Why should I adopt this? Will productivity suffer? Will quality benefit? What are the downsides?
- Upper Management point of view. Are expenditures on exploring, studying, adopting warranted? How much are we willing to spend to make this a reality? Will it pay back?
7. What are my most fundamental inferences or conclusions?
- That's what the research and exploration will uncover. This is "my destination point".
- What have I learned from this exploration? What should I conclude?
- Should I recommend anything? or let the conclusions stand on their own, and decision makers make whatever decisions are appropriate for them?
8. What are the implications of this effort?
- If we complete and publish a best practices paper, what follows?
- Do we need to embark on an adoption effort? Education, evangelization, an adoption plan?
- Implications for operations? Infrastructure?
- How do we track the benefits/costs?
Notes:
- The particular methodology cited here was developed by Dr. Richard Paul, and is described in the book, "The Art of Socratic Questioning", by Richard Paul, and Linda Elder.
- You can learn more about the techniques described here at The Foundation for Critical Thinking.
Recent Comments