Skip to main content

finding problems that need solving...

Yesterday, I mentioned some of the pitfalls that attend developing complex solutions to problems that go beyond the "good enough" solutions that may already be in the wild. The internet is filled with business models that invent problems to solve that frankly no one was interested in having solved. I wanted to address in this post a bit on how to find problems that are worthy of solution. The trick is to look for problems that perform one of several things:

  1. The problem is one you encounter on a daily basis while trying to get something else done. It is to you a "minor" but recurrent annoyance that you wish could be eliminated. Many great products and services came about from noticing a need for a slight improvement in a product design or how a service is delivered and then engineering a solution that addresses this problem. I'll call this type of potential solution an incremental innovation. The internet is filled with web sites looking to score incremental innovations but as mentioned yesterday, many of these solutions suffer from the "good enough" problem.
  2. The next type of problem is similar to an incremental innovation but arises from noticing existing inefficiency in the implementation of a particular solution in order to shave time or cost off the process relative to existing methods. It is incremental but comes not from noticing an annoying issue in user space but rather engineering better solutions for internal issues in the design space of a particular product or service. This we can call engineered innovation. A good example of this was the invention of the disposable razor by Schick in order to tap into the lucrative safety razor market then pioneered and dominated by Gillette during the turn of the last century. Schick analyzed the patent and came up with an implementation that was itself also patentable and today, you'll be hard pressed to recall a third safety razor company as a result of their shared dominance of the market.
  3. Finally, the most rare opportunity can be found in engineering solutions that solve an existing problem in an entirely different way from existing solutions, so different in fact that the new solution obsoletes an entire category of previous solutions to the problem. These are the category killers. A good example of this is how the use of digital media in the form of mp3's for electronic music distribution has essentially obsoleted traditional physical media distribution models by introducing vastly different selection, cost and delivery structure than the traditional methods. In every comparable metric a category killer solution bests the traditional solutions and thus is most likely to find wild success. The invention of electric-diesel train engine is one example, putting an end to commercial steam engines.

Obviously the solutions that employ new ways of solving old problems and in so doing obsolete them are the ones which will find the wildest success. These usually come about not from an active desire to create them, usually they are the result of happy accidents. The invention of kevlar stands as a notable example. Software engineering is a place where solutions types one and two are common due to all the cogs that can be adjusted and modified between implementations to realize potentially profitable optimizations, though category killing solutions do come about they are as rare as in the physical invention world. The key is to seek solutions that answer the key questions, "does any one want this to work better?", "how can I make this work better?" and "how can I do this in a completely different way?" while solving problems and with time and effort you should run into at least one wild success in your engineering lifetime...hopefully. *wink*


Anonymous said…
Great post. In addition to coming up with new solutions to existing problems, there are always new problems to be solved - evolving from new technologies or invented by people whos other problems have been solved.
Francia said…
The word "problem" most of the times has some negative connotations, but for an open-minded human being it just represents a window of opportunities. When I read your ideas, I could not help thinking about our natural heuristic capacity which has been somehow neglected by ourselves. Due to this heuristic capacity, human beings have found solutions to the little annoyances (problems) around them. So, essentially, you are appealing to keeping such capacity working everyday.

Popular posts from this blog

Highly targeted Cpg vaccine immunotherapy for a range of cancer


This will surely go down as a seminal advance in cancer therapy. It reads like magic:

So this new approach looks for the specific proteins that are associated with a given tumors resistance to attack by the body's T cells, it then adjusts those T cells to be hyper sensitive to the specific oncogenic proteins targeted. These cells become essentially The Terminator​ T cells in the specific tumor AND have the multiplied effect of traveling along the immune pathway of spreading that the cancer many have metastasized. This is huge squared because it means you can essentially use targeting one tumor to identify and eliminate distal tumors that you many not even realize exist.

This allows the therapy for treating cancer to, for the first time; end the "wack a mole" problem that has frustrated traditional shot gun methods of treatment involving radiation and chemotherapy ...which by their nature unfortunately damage parts of the body that are not cancer laden but …

Engineers versus Programmers

I have found as more non formally trained people enter the coding space, the quality of code that results varies in an interesting way.

The formalities of learning to code in a structured course at University involve often strong focus on "correctness" and efficiency in the form of big O representations for the algorithms created.

Much less focus tends to be placed on what I'll call practical programming, which is the type of code that engineers (note I didn't use "programmers" on purpose) must learn to write.

Programmers are what Universities create, students that can take a defined development environment and within in write an algorithm for computing some sequence or traversing a tree or encoding and decoding a string. Efficiency and invariant rules are guiding development missions. Execution time for creating the solution is often a week or more depending on the professor and their style of teaching code and giving out problems. This type of coding is devo…

AgilEntity Architecture: Action Oriented Workflow

Permissions, fine grained versus management headache
The usual method for determining which users can perform a given function on a given object in a managed system, employs providing those Users with specific access rights via the use of permissions. Often these permissions are also able to be granted to collections called Groups, to which Users are added. The combination of Permissions and Groups provides the ability to provide as atomic a dissemination of rights across the User space as possible. However, this granularity comes at the price of reduced efficiency for managing the created permissions and more importantly the Groups that collect Users designated to perform sets of actions. Essentially the Groups serve as access control lists in many systems, which for the variable and often changing environment of business applications means a need to constantly update the ACL’s (groups) in order to add or remove individuals based on their ability to perform certain actions. Also, the…