60F and raining... somebody forgot to switch on Summer.
Wednesday, June 29, 2011
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
Now, why is this simple technique relevant?
It is:
Simple
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:
- Database
sharding at netlog with MySql and PHP - Distributed Set Processing with Shard-Query
- Data partitioning - scaling
database - Some previously described here
But, these are more interesting - notes on designing a complex, distributed, object graph:
- Beyond the Data Grid: Coherence, Normalisation, Joins and Linear Scalability
- Avatara - LinkedIn's home grown OLAP
- 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:
- Interesting article about mmap and Linux O_DIRECT
- VMtouch - finding how many pages of your file are cached
A detour:
- What goes on behind the (IT) scenes in an Investment bank?
- An interesting talk on Re-thinking IT by John Seddon a Systems thinker