Written on 11:57:00 AM by S. Potter
Ok, obviously the title was inspired from Lauryn Hill's first solo album, but the subject at hand is the essence and natural language of solving problems. If any of you have been reading the last few entries at "Snakes, Gems & Coffee" you would know that I have been very interested in linguistics ideas as they apply to programming or domain-specific languages. Over the last two weeks I have been involved in a new project. Previously I had been consulting at a firm that provides hosted software solutions for asset management firms. The software platform that we used solves well known and fairly well understood problems in that industry. Some of those problems are mathematical, or at a minimum computationally numerical in nature. For example, there are industry standard and widely accepted formulas that calculate future and present values for applicable financial instruments and cash flows. Of course, the values you use for some of the variables in each formula can be tweaked or disputed, but overall you have the plan, the framework to get to your end goal. Now on my new and current project I am faced not with coding a solution to a well defined or well understood problem, but actually defining the problem space from scratch. Since I am a Mathematics graduate I thought this should take me right back to my college days, then it hit me; I learned more about defining problem spaces in high school calculus than I did in college multivariate calculus equipped with my partial differential equations, proofs and Taylor series'. The problem in my college education in Mathematics was two fold: (a) the problem space was already defined in a domain specific vocabulary of pure mathematics; and (b) since the problem space was far more higher level than my previous math education, we lost touch with real world applications. Solving well defined problems is only one half of problem solving as far as I am concerned and a degree in Mathematics from a university that is highly regarded in the field did not teach both. In high school I read books about Euclid's The Elements and Newton's findings. These books described how Euclid, Newton and other famous mathematicians observed the real world to inspire their mathematical findings. I was under the impression that a Mathematics education at university in the 20th century (yes, I am old, I graduated in the previous century) would also not loose touch with the real world. I found the opposite. I agree that proofs and pure mathematics are an extremely important discipline to master, but I felt robbed when I realized that was the extent of what the department offered me, including the "applied" mathematics courses the department offered. Today I feel increasingly this way about software product management. Since college I have been a software developer/engineer in one form or another, from project peon to project manager. In that time I have been learning natural ways of solving problems in the real world and over the years have realized that one of the biggest problems in our industry, one we need to work on more, is defining the problem space. Obviously there are ways to manage around vague or inaccurate software requirements such as employing agile methods to describe, estimate and re-evaluate in-depth user stories directly with the customer or end-user, but that is only managing the risk and process. What is needed is defining not just the problem space, but the methods and language(s) we need to converse in about software requirements, user stories, use cases, functionality, features or how ever else you wish to dissect the same thing. Let's look to our wise ancestors like Euclid and Newton to draw inspiration not from textbooks, but by observing the real world around us. The evolution of software products/projects toward agile processes is a step in the right direction, but let us not loose sight of the real world. I've met a few good developers that read all about agile and talk a good talk, but don't practice what they say. Let's all get back to basics and let the real world inspire us equipped with our textbook theory and engineering discipline. Happy holidays and look forward to your thoughts on this or related topics.