I have decided to start a series of blog posts to rant about the difficulties of developing for real-life.

I remember reading somewhere (from Joel Spolsky? Paul Graham? not sure) that while it’s easy to replicate 80% of the functionality that an app offers, the value proposition comes from the remaining 20% of the functionality a different tiny bit of which each users relies on. It’s quite like Zipf’s Law, which states (in natural language processing) that the frequency distribution of words in a corpus is inversely proportional to their rank:

Zipfean distribution

So while it’s tempting to think that a system that knows the most common 500 words (“the”, “of”, “and”, “to”, …) in a language shall be quite proficient, in reality it is the remaining words which give sentences their meaning (now you also know why learning a language is quite hard.)

What is so “undoubtedly hard” about developing then? In my opinion, the way programming is taught in the universities and also on the Web (e.g. tutorials) is in a vacuum far from the messy reality of its actual practice and many people including me find the real-world work difficult to adjust to.

I do not have any ambitious goals such as offering a better way to teach programming (I don’t think there is) or even as little as to help people adjust; rather, it’s to provide comic relief to me and to hopefully entertain you with some interesting reading.