Karmona's Pragmatic Blog

Don't get overconfident… Tiny minds also think alike

Karmona's Pragmatic Blog

Mary and James Smith

July 7th, 2008 by Moti Karmona | מוטי קרמונה · No Comments

Census 2000According to the U.S. Census Bureau Y2K statistics (accuse me for being nostalgic but this is as good as it gets until 2010)

* 7 most common Americans surnames are Smith, Johnson, Williams, Brown, Jones, Miller or Davis.

* 4 million surnames  are held by only one person.

* This can be very helpful when you are trying to guess someone name… with ~2,376,206 Smiths, I suggest Mr. Smith.

* This could be problematic when you are looking for Mary or James Smith and all you have is the name…

* Moti Karmona isn’t even there ;-)

→ No CommentsTags: Pareto · People

I18N Blog Perfection

November 20th, 2007 by Moti Karmona | מוטי קרמונה · No Comments

Central Bank of NigeriaDue to the increasing demand (~300% in the last week) for I18N support in my blog, I decided to take action.

My pragmatic ROIDB (ROI Driven Blogging) approach brought the Google-Translate-Widget to the left pane of my blog with ~20 minute copy-paste work (this post included).

I almost tripled my blog exposure from 350 Million (English) Internet users to 1 Billion* internet users (85% of the world internet users) and I also hit the pareto princple (80/20) jackpot on the way :-)

But… I can’t really use the “I don’t have enough traffic due to I18N readiness” excuse anymore and the 3 people that allegedly asked for I18N support only wanted to “help” with my desist Nigerian cousin will arrangement so I am not so sure it was worth it after all…

Feel free to get a taste of this I18N perfection using my new left-pane state-of-the-art translator widget and with my personal favorite Spanish Blog Flavor


* 365 English + 184 Chinese (!!!) + 101 Spanish + 86 Japanese + 59 French + 58 German + 47 Portuguese + 34 Korean + 31 Italian + 28 Arabic = ~1 Billion Internet users (Based on internetworldstats.com statistics)

→ No CommentsTags: Google · Internet · Pareto

The Agile Prisoner’s Dilemma

July 16th, 2007 by Moti Karmona | מוטי קרמונה · 3 Comments

The Prisoner’s DilemmaIn game theory, the prisoner’s dilemma is a game in which two players may each “cooperate” with or “defect” (i.e. betray) the other player. In this game, as in all game theory, the only concern of each individual player (“prisoner”) is maximizing his/her own payoff, without any concern for the other player’s payoff. In the classic form of this game, cooperating is strictly dominated by defecting, so that the only possible equilibrium for the game is for all players to defect. In simpler terms, no matter what the other player does, one player will always gain a greater payoff by playing defect. Since in any situation playing defect is more beneficial than cooperating, all rational players will play defect.

The unique equilibrium for this game is a Pareto-suboptimal solution—that is, rational choice leads the two players to both play defect even though each player’s individual reward would be greater if they both played cooperate. In equilibrium, each prisoner chooses to defect even though both would be better off by cooperating, hence the dilemma.

Note: Please read more about it in Wikipedia since there is much more information there then I want to copy-edited-paste into this blog… (especially after reading Kalish’s last blog post)

The prisoner dilemma is mainly about trust, cooperation and honest communication…

During an interview (back on June 2003) XP founder, Kent Beck was asked when XP is not appropriate?
Beck answered that “It’s more the social or business environment. If your organization punishes honest communications and you start to communicate honestly, you’ll be destroyed.”

So… if a team member cooperates (“communicates honestly”) while the environment competes (“punishes honest communications”).
In terms of the prisoner’s dilemma, this is the worst situation for the cooperator, and so, it is expected that no one will cooperate in such an environment.
Sounds familiar? Did you happen to work in a place where warnings (a.k.a. red flags) tagged you as a complainer? (also connected to the Stockdale Paradox post) or end up with assigned person tripping all over your problem space, trying to figure it out, while you try to implement the solution (When to approach your supervisor with a problem).

It is known fact that Agile methodologies enhances trust among team members by encouraging (as working standard) honest communication and cooperation with Daily Standup Meetings, TDD, Collective Ownership, Pair Programming, Sustainable Pace, Planning Game etc.
Leading me to claim that Agile leads teams into cooperation-cooperation situations and this is exactly where you want to be in your next police interrogation… ;-)

Don’t be caught…

→ 3 CommentsTags: Agile · Development · Pareto

The Pareto Principle

July 14th, 2007 by Moti Karmona | מוטי קרמונה · 1 Comment

Pareto ChartThe Pareto principle (a.k.a. the 80-20 rule, the law of the vital few and the principle of factor sparsity) states that, for many events, 80% of the effects comes from 20% of the causes. (e.g. Your wife might claim that you wear 20% of your closet clothes about 80% of the time… ;-)

I will argue that pareto principle conceals one of the most important princples in software (and not only in software) management – Don’t try to do more. Just do more of the right things!

exempli gratia

* Don’t invest too your time in dark software corners since the same principle will catch you with investing 80% of your force with only 20% value (e.g. What will happen if someone disconnect the database network cable 1 minute before DST transition… etc.)

* Don’t over design since you will bump into the 80% investment for only 20% value again – Don’t drill the holes for air-condition system before you have one, since you might find yourself a bunch of holes in the wall…

* While planning, always ask yourself if you can do more for less and try to find that thin-gray-line that cross the 21% effort for the 81% value* – try to identify how to invest minimal effort (~20%) to create enough (~80%) business value.

* In performance tuning you want to find the silver bullet that with minimal effort (let’s say 20%) solve 80% of your issues (a.k.a. low hanging fruits)

* Workforce wise – Jack Welch‘s vitality model has been described as a “20-70-10” system. The “top 20” percent of the workforce is most productive, and 70% (the “vital 70”) work adequately. The other 10% (“bottom 10”) are non-producers and should be fired. Rank-and-yank ideologues credit Welch’s rank-and-yank system with a 28-fold increase in earnings (and a 5-fold increase in revenue) at GE between 1981 and 2001 – Obviously, this is a tremendously competitive model of organization and all criticisms of both the morality and (in)effectiveness of such a Dog Eat Dog method of social cohesion apply but as a manager you must take this in mind since reality and statistics (law of large numbers) do show that the “top 20” percent of the workforce is most productive and is doing 80% of the work…

I would even dare claiming that, perfectionism is a strong indication for weak leadership!

* Note: I was told that everyone knows this principle but the question is how to do it… so my tip (and I promise to post more around this dilemma) is to handle this with-in the scoping of the feature or module; efficient scoping should get very fast to ROI (look for the items with low ROI) and risk analysis (look for the items in high risk and try to understand where the risk come from) and soon after the tradeoff discussion which is the perfect time to take the hard “cutting” decisions and for doing this you must have someone in the room with deep customer understanding; e.g. In most systems it is very “easy” to cut enterprise-readiness features to simplify development (I18N, Security, Upgrade, Scalability, High Availability, Distribution, Monitoring etc.) and many of those features can be added later if needed with no real overhead (warning: you must know what you are doing to make it work so don’t try this at home if you don’t have professionals with you);

→ 1 CommentTags: Pareto · Planning · Software Management

The Stockdale Paradox (The Pessimistic Developer Paradigm)

July 14th, 2007 by Moti Karmona | מוטי קרמונה · 2 Comments

Admiral Jim StockdaleThe Stockdale paradox refers to Admiral Jim Stockdale, who was the highest ranking United States military officer in the “Hanoi Hilton” prisoner-of-war camp during the height of the Vietnam War. Tortured over 20 times during his eight-year imprisonment from 1965 to 1973… in Jim Collins book “Good to Great” chapter 4 page 83 (which is by no-doubt a must book) he is quoting Stockdale saying: You must never confuse faith that you will prevail in the end – which you can never afford to lose – with the discipline to confront the most brutal facts of your current reality, whatever they might be.”

The Stockdale Paradox have much deeper implications than I present in this post and I am only using it to shed some light on The Pessimistic Developer Paradigm

I truly believe that in software projects, the pessimistic developer will win 80% of the software “battles” over an optimistic one (which is more than enough for me as a true believer in the pareto principle).

Don’t be confused with the semantics of what I am saying; we are not talking about this-can’t-be-done developers! – the best developers will keep an “optimistic attitude” (a.k.a. can-do spirit) with an “pessimistic mindset” (a.k.a. what could possibly go wrong?)

A “pessimistic mindset” will bring you to double-check, anticipate and be pro-active in mitigation of possible points of failures.

Saul Lieberman said ”The difference between a smart man and a wise one is this: A smart man can work his way out of a difficulty that the wise man will not get into in the first place”

I heard it many times and saw it in real life more than once so don’t “kill” the pessimistic messengers in your organization…

Keep being pessimist in the tacticalities (I want to patent this term :-) and insure your strategic success.

→ 2 CommentsTags: Development · Pareto