Problem Solving Steps

Common Principles to Solving Problems:

  • Every time you look at something, ask yourself: “does this make sense”.   Seriously; I’m not kidding.
  • Do not assume you know a solution until you have all of the details and understand the problem.  Assuming makes an ass out of you, me, your team, your project, your company, your school, your mom, your dad, your country, and the human race.
  • Don’t listen to argue, listen to understand.  Ask questions to understand, not to accuse e.g. “Why would you do that?” vs.  “What are they key advantages to doing it like this?”
  • Archive your email, use a tool to index/search it -  It is very bothersome when someone asks me a question and I search my email and find I have already answered it for them previously, it is even worse when I search my email and find they answered the question to me previously.
  • Try and understand what you are doing.  Automatons and Drinking Birds can press buttons; you are more valuable than them because you can understand things.
  • Understand the impacts of any changes that you make.  Don’t assume a small change will have a small impact.   If you do not understand the impact of the change you are making, get a coffee, then come back and think about it again.
  • Everyone makes mistakes. – Just because someone said they tested it correctly, do not hesitate to retest.
  • Don’t be a dick.  Good things happen to good people.  Treat everyone like you would like to be treated (unless you like it when people treat you badly, then you should seek counseling).   If people like you, they will not hesitate to help you out.
  • Care about important things that matter, don’t care about things that don’t matter.  This sounds easy, the trick is learning to differentiate between the two.
  • Doing the things that others don’t want to do will differentiate you.  Did Michael Jordan want to practice drills for 10 hours a day, hell no, he practice because he wanted to be the best.  Do things that others say are hard and don’t want to do, this will set you apart from the pack.
  • Have Goals, Write Them Down, Look at Them – Do you want to be sitting in your same desk writing and testing code 20 years from now? I am guessing no. Do you have other goals? Have you ever bothered to write them down and think about them and visualize how to achieve them.  If you don’t you will be sitting here writing and testing code for the next 20 years.

Problem Solving Steps:

1. Understand the problem:

  • What is the problem?
  • What are the steps to reproduce the problem?
  • What is the impact of the problem, when does it need to be solved?
  • Why is it a problem?
  • Is this a new problem or existing problem?
  • Is there a baseline, or how should it behave?
  • When did it start happening?
  • Did it ever work?
  • What components does it involve?
  • What Data does it involve?
  • Is it functional, technical, both, or unknown?
  • Can you decompose the problem into its parts?
  • What are the simple reasons the problem could have occurred?

Is it a functional problem:

  • Do I understand how the process should work?
  • Is the problem related to data?
  • Is the problem related to timing, order, or sequence?
  • Do we have a copy of the data that caused the problem?

Is it a technical problem:

  • What locations or environment is it happening in?
  • Do I understand what components are involved?
  • Are there any steps to validate the environment?
  • Run diffs of things that have changed.
  • What tools do I have at my disposal to test this (remote debugging, soap sonar, ethereal, web service studio, benthic, toad, test harnesses, debug logs)?
  • Look at logs before and after.
  • Look at all of the log information available.
  • Look at the code and data for yourself, don’t take someone’s word for it
  • Research the problem online

2. Identify a solution to the problem

  • If this problem has occurred before, check my emails to get details on it (Google desktop,  coppernic, ms search)?
  • Is there a solution for this type of problem already (check KX, emails, project, account, and internet)?
  • Is there a solution for a similar type of problem?
  • What solution is the quickest and has the least amount of impact?
  • Are there any creative solutions we have not thought of yet?

3. Implement solution (validate it works)

  • Ensure that solution is agreed upon by peers, and superiors;
  • If it is a production solution, it will need to be agreed by the client.
  • Once the solution is in place make sure that the problem is gone.
  • If anyone is impacted by the solution, do they need to be notified that it is fixed?

4. Identify what can be done better next time to avoid the problem.

  • Did I send an email of the problem and the steps to solve it to everyone involved?
  • Is the process documented correctly?
  • Is the problem solving approach documented correctly?
  • If there is change that could prevent this problem in the future?

Gas Pump Security Through UI Design

I like how gas stations require you to enter your zip code when paying with a credit card. It just feels safer….. but typically when people have had their wallets or purse stolen in my neighborhood, the thieves are clever enough to know what zip-code they stole it from, and they pump  a lot of gas for their friends.

Fortunately a gas station I visited recently has found a way to combat this problem through poor UI design.  When trying to pay with my credit card and entering my zip code, I kept getting the screen message: “ERROR: INCORRECT KEY COMBINATION.”  The instructions said: “KEY IN YOUR ZIP CODE AND PRESS ENTER”.  After receiving this message three times, I finally figured out what the problem was.   The gas pump had an intentionally designed bad UI.   There are two buttons that are labeled “Enter”, only the small one works for keying in your zip code.   I am assuming they did this on purpose to deter people with stolen credit cards.

Which enter button would you press?

Which enter button would you press?

Top 6 reasons the Roomba is like a good business

My tireless little robot friend.

My Little Robot Friend

Say Hello to my Little Friend….

My household acquired a Roomba robot vacuum about two months ago.  So far the results have been great.  I have a dog that sheds a lot, so there were always clumps of fur tumbleweeds floating across the hardwoods. Running Roomba 3 times a weeks seems to have alleviated the tumbleweeds.   Some people I have spoken with claim that they don’t like the Roomba because they are always having to clean and empty it (I’m guessing they have really dirty floors).   I have also realized that the success of the Roomba depends on the customer: depending on your floor type and your house layout you will have a very different experience with the little robots.  I am very surprised that iRobot doesn’t offer a two week free trial so people it doesn’t work for don’t spread bad word of mouth regarding the product.

Watching my Roomba got me thinking about how it is like a good business.  the following are the top 6 reasons why the Roomba is like a good business:

1. It knows when to refresh itself – The Roomba is cognizant of when it needs to be recharged and it will proactively seek out its charging station to refresh. Good business recognize when their products or services have become stale and they will seek to refresh them.

2. It works for you while you sleep – Roomba will clean while you sleep (if you don’t mind the humming and bumping).  A good business will make money for you while you sleep.

3. It has innovated to create a new space – I have not considered owning a vacuum robot until the Roomba.  An innovative business will innovate to create a new product you may have never considered before.

4. It has patience – The Roomba will go over a spot over and over until it gets it clean,  it is designed with the assumption that it will not get it right the first time.  Seldom will a business get it right the first time, most successful business have to iterate through a series of failure before they have their winning streak

5. It is easy to maintain – Most regular vacuums are pain in the rear to maintain (cleaning brushes, belts). Roomba maintenance is pretty simple with easy to press buttons and clear instructions.  A good business should be built with the context of maintainability and operations in mind.

6. It gives you feedback  – When it gets full, stuck, or tired the Roomba will give audio and visual queues to indicate is needs support.  It will also let you know when it running over a dirty part of the floor. A good business provide data and analytical feedback that allows you to make informed decisions.

Mythical Man Weekend

I recently read an article about the “mythical man weekend“.  The article discussed how people claim that they would be able to build an application or a site in a weekend.  It got me thinking about all of the stuff that I typically plan to do during the weekend.  Leading me to plot out my own “Mythical Man Weekend”

Table 1. Mythical Man Weekend

mythical_man_weekend

This “Mythical Man Weekend” will almost always turn into the “Actual Man Weekend”.

Table 2.  Actual Man Weekend

mythical_man_weekend_actual

MBA Oath – Seriously?

There have been a number of articles about this “MBA Oath” that a lot of MBA graduates are taking.  This oath seems to cover such things as having integrity, creating safe products that don’t kill people,  being responsible, and in general trying to do good things instead of being a piece of human turd.

I don’t understand the concept of this Oath.  It seems to me that if you need so sign a pledge form to achieve this type of behavior, that you have more behavioral problems than can be fixed by a simple piece of paper.    I am not saying I am against this oath,  but it brings to light a larger social problem of humanity.   Kids who are 3 or 4 years old need someone to tell them how to be nice and look out for one another;  I consider it rather insulting that someone needs to tell 28 year old’s with 6+years of secondary education how to be nice and look out for one another.

Is it safe to assume that if you reach 28 years old with out figuring out the golden rule, then you have no chance of changing?

Maybe they are looking at the wrong target group for this MBA oath,  I suggest we should focus on kids in middle schools and their parents.  Young people who are impressionable still have the opportunity to change their behaviors and opinions.   Parents need to spend time with their kids and be good role models. Watch TV with your kids and have discussions with them about what it  right and wrong, ask them how things make them feel. Better yet, turn off the TV and read with them.   TV shows no longer try to impart moral wisdom on kids.  When I was little, we had the A-team, Magnum PI, Fall Guy, and Night Rider; these shows all had a moral and a story about how the bad guys were bad because they did wrong.  Now our kids watch The OC,  Gossip Girls, Sweet 16, the Hills, and a myriad of reality TV shows that have despicable people with wealth who treat other people like crap and seem to be rewarded for it.  I’m tired of seeing kids growing up with lack of values around them.  An MBA oath is the right set of values, but it is taught about 20 years to late.

In summary: MBA Oath==Stupid. Good things happen to good people.  TV==Bad Role Model. Be a good parent.

Reference: http://mbaoath.org/

Do people not value your time?

For some people, understanding the “value of their job” is directly related to the fact they have cornered the market on some skill that one one else can readily perform at that moment. This may lead to laziness:

Example 1:

“How about instead of coming to work, I stay at home and watch cartoons all day.  You can call me if its an emergency, but I will only call you back during commercials, so you only have about 90 seconds. “

Example 2:

Admin guy (over the phone): “I can’t come in today and work on those server configurations”
Manager guy: “Are you sick? did something happen?”
Admin guy: “Well I was up all night working on those critical system backups”
Manager guy: “Those took all night?”
Admin guy: “Actually they took 11 hours”
Manager guy: “You spent 11 hours on them, what did you have to do”
Admin guy: “Well, I kicked off the backup script and checked it every 3-4 hours to see if it was still running.”
Manager: “So you didn’t actually work for 11 hours, you just worked for a few minutes.”
Admin guy: “I mean… if something had gone wrong i would have been there to work on it and fix it.”
Manager guy: “So, why didn’t you work on the server configurations last night?”
Admin guy: “Well, between checking the backups I was sleeping”