Wednesday, June 29, 2011

60F and raining... somebody forgot to switch on Summer.

Saturday, June 25, 2011

The Five Ws (and H) approach

A few days ago, I was trying to explain some technical concepts to a friend. After a bit of explaining I tried listing out reasons, places and times where those concepts would be applicable. I still thought that I had left out something. I then spent some time searching online for ways to - learn systematically and teach correctly by at least outlining the essentials of the problem and encouraging the learner to follow up in his/her own time.

Did I find anything? Of course I did. In fact I discovered too much information but found only some to be simple and interesting. My favorite is what you might think is obvious - The Five Ws approach. Also popular in problem solving is the Five Whys.

Apart from it being obvious, the Five Ws helps you to break down the problem into:

  • When
  • Where
  • What
  • Who
  • Why
  • How
The easiest way to teach this to kids is to use each finger on one hand to stand for a "W". The H is extra.

Now, why is this simple technique relevant? 
    It is:
        Easy to remember
        Easy to explain

    It serves as a starter guide to:
        Formulate the right questions
        Break down the problem
        Cover/analyze all aspects of the problem - like why & why not, what & what not

    It also helps us:
        Remember better by understanding, instead of memorizing
        Identify the problem by looking for signs (5 Ws)

    It works quite nicely as:
        A way to exchange ideas (5 Ws = 5 aspects)

        A way to encourage people (even kids) to think deeper- (Systems thinking)
            By supplying the first 5 questions when stumped
            Progress to other approaches 

        A template to share and disseminate knowledge (5 Ws = 5 steps)
            Like Design Patterns and Anti-patterns for software design
            Simple reproducible steps for QA/Support/Services/junior members  etc.

Here's a simple pictorial way to help you get started. I drew it for myself initially. It is built like a form where you can fill in the blanks, on the right hand side. I encourage you to print it out and use it in meetings too or even to teach your kids.

The 5 Ws and H extended

Until next time!

Saturday, June 18, 2011

Sharding, distributed object graphs and other reading material

[Minor update: June 20, 2011]

Some interesting notes on sharding/data partitioning using SQL:

  1. Database sharding at netlog with MySql and PHP
  2. Distributed Set Processing with Shard-Query
  3. Data partitioning - scaling database
  4. Some previously described here

But, these are more interesting - notes on designing a complex, distributed, object graph:
  1. Beyond the Data Grid: Coherence, Normalisation, Joins and Linear Scalability
  2. Avatara - LinkedIn's home grown OLAP
  3. Some previously described here 

I came across ActiveJDBC (yeah yeah.. I know what you are thinking.. another ORM) but this is simple and only aims to solve the simple (80%) cases. Very unobtrusive.

Some IO related system internals:

A detour:
Until next time!