Sunday, April 10, 2011

On the value of identifying problems

There seems to be an unspoken agreement that the person pointing out a weak spot in a given situation, should also take the responsibility to put forward a solution to remedy that situation.

This is wrong.

The two activities are very different in their nature; the identification of a problem involves a sense of how the constituent parts should interoperate, but actually do not. Whereas solving a problem might very well be done within the stated context of that problem, but rarely are the best solutions found here.

The act of identifying the problem requires a person with a sense of the whole. Mind you, mere complaining will not suffice here. You need a thorough, well-analyzed review of what exactly is going on and why it is wrong. Here we are talking about deconstructing the problem

Now the act of solving that problem takes you into the field of how things could be. One needs to be able to mentally take away certainties taken for granted, and rely on envisioning what can be different. Here we are talking about constructing the solution.

There are people who combine both abilities in one person. When you have those, cherish them. However, do not rely on this rarity and certainly do not demand it from your people. In a way, the skills require almost opposing characters.

Instead, when someone approaches you with the identification of a problem, demand of them to lay the fruits of their deconstructive labor before you, so you may see it with your own eyes. Demanding precision, thoroughness and analysis is justified.

Then, having established the problem, it should be determined whether it is worthwhile to pursue a solution -- if such exists! -- and assign resources to this venture.

If that is the case, the next step would be to actually solve the problem. It could very well be that someone very different from the one having identified the problem takes the lead. Insight into human nature, creativity and intuition play a much larger role.

Do not make the mistake of shooting the messenger for bearing bad news, unsolvable by that same person. Be better than that.

Friday, January 1, 2010

Kindle: Amazon's e-reader

For over two weeks, I have had the pleasure of reading books from Kindle's eye-friendly e-ink pages, instead of the more traditional paper pages.

Ordering books from Amazon is very simple. You just browse for the book you want and if your Amazon account is configured correctly, your order is just one click away. Whispernet will take care of the delivery to your Kindle in minutes. In Europe there is an added charge for delivery through Whispernet, amounting to around $2.30, so copyright-free books (see Gutenberg project for loads of those) still cost to order from Amazon.

Reading the books in Kindle format is a delight. Normally when I read in bed, for example, I have to keep the book in one hand to prevent it from closing. And when I turn the pages, I have to turn myself also to stay comfortable. Not so with the Kindle. The leather cover is strong enough to fold into a pyramid form, so the Kindle can be read without having to be held. Turning the pages is a simple click. The letters are kind to the eye, contrary to reading from a computer screen.

I use the Kindle to read professional books as well. Be careful that those are really not very well suited for the small-sized Kindle. You can landscape the screen and it becomes manageable, though reading will still feel like hard work. The courier font is shown in too light a shade, so again, that is hard to read. If a book contains lots of code snippets, the laptop is suddenly not such a bad alternative for reading the book. The Kindle DX with its larger screen is a much better alternative for IT books. Too bad they don't sell in Europe yet.

The available Kindle catalog from Amazon underwhelms me. Obviously, they have a tremendous job in front of them to Kindlelize as much books as they can, but for now it suffices to say that the Kindle library compares pretty much to my local town's library -- no Long Tail yet for Kindle.

The quality of the books varies. I have bought a number and some books have the wrong end of line demarcations resulting in sawtooth sentences; a horror to behold. Others are sloppy in the sense that illustrations have been left out. It seems that the books that sell better have received more attention to detail than those near the end of the tail. Understandable, but frustrating nonetheless.

I am very happy that the Kindle does not have a backlight. A lot of people I hear really dislike the Kindle not having a backlight, but I think it is a blessing. Let's face it -- you either want a book or a computer screen; what's it gonna be? External light works better for me.

Battery life is excellent. The Kindle can be used extensively for over a week, with WiFi on, without its battery running empty. Pretty weird is that Amazon ships its European customers with American power supply connectors. You need either a converter or power up your Kindle through USB.

Besides the downsides, on the overall I give this piece of technology a big thumbs up.

Sunday, December 20, 2009

Hypes and Disruptors

On of the most interesting challenges in software development is a proper analysis on a new piece of technology, process of theoretical framework, hereafter referred to as a concept. Is the concept a hype or is it a disruptor?

Probably stating the obvious, but a hype is a concept where the marketing value surpasses the actual value and generates a bubble of activity that can only end in a bursting sometime or later.

Now, a disruptor on the other hand, is a concept with the ability to displace existing concepts. A disruptive technology has the power to upset existing industry models and do so quickly as well, so it is wise to keep tabs on it. That is, if it can be identified as such.

Nearly every discussion on new concepts is clouded because -- let's face it -- most people do not know what they are talking about. Instead of being upfront about this, smoke and mirrors is applied, and conversation is muddled. I think any discussion on a new concept should be an open-minded exploration with the sole aim of going to the heart of the matter and identifying that what makes the concept valuable. Or not, of course.

To further complicate matters, new concepts rightly often focus only on a subdomain of that in which it can be applied, so that it only fixes its particular problem. Therefore most of the time, a new concept "forgets" about acquired wisdom and experience from previous technology.

I think that it is an acceptable price to be pay for a disruptor. A small group of people can hardly be expected to take on the whole domain. In the discussion those gaps need to be accounted for, and extensions or future concepts can build on the Shoulders of Giants, as it were.

Sometimes a concept has a real price attached, one that is fundamental to the idea. The price could well be too high to pay. Here we are being harassed by religious proponents of the concept, sometimes tagging themselves as evangelists, as if proud of their obnoxious nature, immunity to reason and good conversation, and loud-mouthedness in proclaiming their one-way gospels. A detestable group.

Finally, there are the forces of conservation. These people have learned the hard way that most of what they see is hype and have henceforth insulated themselves to new ideas. Any new concept is struck down well before proper discussion has taken place by applying the dreaded "Hype" label.

Ignorance, Extremism and Conservation -- these are the enemies of innovation.

We have seen a lot of disruptors over time. And a lot of hypes as well. Seek out the people with whom you can explore the concept and avoid the ones that cannot. Or, if they can be rescued from ignorance, extremism and conservation, educate them how to be open-minded in the matter. Our industry would benefit from a broadly adopted Enlightened mindset.

Thursday, December 17, 2009

Case "Dynamic Order By" When?

The other day I ran into a nicety of SQL that I was not aware of. Not that that is special, but I think this nicely illustrates how the Old World has taken into account aspects which are not (yet) secured in the New World.

Let us suppose you have a table that has a column called state. Within that column you have the following distinct values:
- pending_approval
- approved
- rejected

Let us also assume that you want to order retrieved rows in the exact same order as I listed the items.

A regular order by won't do. It will show the results alphabetically, either ascending or descending.

Usually, I am inclined to prepend the values with sortable pieces of text such as 1_, however this messes up the semantics of the value. Doing this makes me feel dirty.

Well, what do you know, SQL actually took this scenario into account:

  select * from table
order by case state
when 'pending_approval' then 0
when 'approved' then 1
when 'rejected' then 2
end;


What a gem!

The functionality goes quite deep, giving you even the option to fetch values from other columns.

Regrettably, this functionality cannot be accessed through JPA/Hibernate. My good colleague and database prima donna, Ron Smeets, advises to lay a view upon the table. Interesting idea, though for the specific use case I am looking at, this is not an option. This probably means going back to using JDBC.

As far as I am concerned, certainly goes to show that the database layer still holds treasures for application developers to discover.

Sunday, December 13, 2009

Hiring people

If you are a manager and you are in a position to hire people, there is something you can do right really easy and really fast.

Do not be dismayed by people whom you think might be more talented than you yourself are!

Instead, relish the thought of hiring those people, even though the mere thought gives you shivers and breaches your comfort zone. You are now truly laying the foundations for a stronger organization.

In the end, you will be repaid with something much more valuable than a kingdom of mindless zombies, willingly assuming the position, nodding aye to everything you say and laughing to every stupid joke you make. Instead, you are in a position to experience being part of a team that can shape history.

Not only that, but there is no better way to keep you sharp and on-edge than surrounding yourself with those that are likewise equipped and honed.

So next time you are evaluating a candidate and you feel slightly threatened -- hire the person!

Tuesday, November 24, 2009

On Strategy

World War I is, bare none, the most tragic war fought the last thousand years. Some say the war started in the 1870's era and ended on the eve before World War II. From a technology and strategy point of view, this is true. Nothing quite boosts human mental prowess more than a deep and enduring crisis; the war started with outdated ideas and technology and ended with all the concepts that were used to wage the second tragedy in the same century.

Take, for example, the approach on the battlefield -- long lines of young men, trodding slowly towards their doom. And even those who arrived at the other end of No Man's Land could not hold on. There were no supplies, no backup, no mates to back up their positions. Seldom was terrain conquered for long. Reconquests of trenches bought dearly with the blood of many were the norm.

The British did not innovate their fundamental tactics. Their society at that time was highly stratified with little room for initiative in the lower strata. On the other hand, and contrary to popular belief, Germany was almost the inverse; it had a strong middle class. It invented a concept that nearly blew the Allies away -- Stormtroopers. Soldiers with decentralized decision making authority, often by non-commanding officers (NCOs in jargon, ie those below officer level). The tactics were aimed at deep penetrating units, circumventing tough defenses. New weapons were added to the arsenal; flamethrowers and grenades. The units had a high degree of self-coordination and self-reliance, without overbearing staff interference up to the level that they did not, and indeed, could not, know about. The unit was very successful and mostly due to incompetence of the over-hyped general Ludendorff (suffering from a nerve breakdown after his failed Peace Offensive), was the advantage thrown out of the window and could the Allies win the war.

Strategy permeates everything we do, even though we may not be conscious about it. It is about how we deal with everyday aspects. What do you do if someone treats you unkindly? Will you put up a fight? Offer friendship? Walk away? Strategies are most often not designed. Indeed, they evolve. You try something; doesn't work? Toss it out and try something else.

The best examples are those seen in nature. Think about the arms race between prey and predator, or how parasites and influenza viruses keep on adjusting to outrun what medicine can throw against it. The relentless pressure of evolution is the best evolver of new strategies.

Nor is strategy a single thing. It often consists of a number of characteristics that strengthen a generic theme; in companies, these could consist of culture, processes, skills, technology. The best companies in the world have strategies that work. If you break those down, you will find many, many parts that all interrelate and enforce each other. Do not even bother cherry-picking; it's bound to fail, because you do not have the overall strategy.

It makes me think. Can a really good strategy actually be designed? Can it come into existence without the pressure to change? Can it evolve into the target strategy withouth the cultural preconditions being in place?

I think pressure is essential. And so is the holistic view. Without pressure, no one will feel the need to change and without that energy nothing will happen. Without the holistic view, all the measures are shrapnel shots going nowhere. It needs to be part of a bigger picture, the parts reinforcing the whole.

As for evolution or design; strategy suffers from the same problem as software development. Everyone accept nowadays that the waterfall model of software development does not work and smart people invented the concept of iterative development, which for sure works a lot better. So it is with strategy. I firmly believe that it is not possible to design a 100% sound strategy upfront. You use your instincts and experience to aim as good as you can and then evolve the concept as you go.

Culture might well be the hardest one. How do you know you are not shooting for an impossible target? The Will to Succeed may well be blind to impossibilities. Do you have the right people on board? Are you yourself the right person to pull this through?

Personally, I stick to these rules:

  • design and look at the big picture, see how it all interacts
  • know what not to do and block that out
  • relish a crisis; it offers the opportunity for change
  • don't be too harsh on yourself for not seeing the entire picture (yet)
  • be fair in appraising weaknesses
  • learn from others, read biographies of successful people


Despite an intensive, lifelong fascination for anything that has to do with strategy, I still cannot claim to have mastered the subject, though I do claim to derive a lot of intellectual pleasure just thinking about it.

Geeh... migration

Last saturday we migrated two separate email domains and our Google Apps domain into one Google account. Besides the mailboxes, we therefore also had to set up Google Talk buddy lists, export/import the calendars and copy the Google documents.

We started by having a general reset on all passwords, so we could execute all phases easily.

The mailboxes went very smooth. Google has the right tooling to enable this. The only hiccup was the transformation from folders to Google's labels. Deeply nested folders come out really ugly, but hey, what can you expect? I prefer labels to folders, especially since folders do not cater for multiple annotations like labels do. And let's face it, like an animal that is both bird and fish, some mails refuse to be defined by a single label.

Google Talk is easy as well. There is a global setting which automatically makes domain users accept any buddy request -- this is key! After this setting is enabled, it is just a matter of copying the entire email list into the invitation text field for a user and the deed is done. Google could improve its service considerably by having a setting which automatically connects all domain users.

Calendar has the same ease of migration as Google Talk. Just export the calendar and reimport it, mapping to the right user names.

Google Docs is a bit of a pain. There is no way to change ownership of a document to someone outside of the domain (@Google -- improvement?). Luckily, the Google Docs API is splendid. I made a custom script that does the following:

  • analyze all documents and flag those that are owned by a user
  • check the access rights on that document
  • download the document to a temporary location
  • upload the document to the new Google Docs account
  • reassign the access rights to the uploaded document (also using new email accounts)


The script performed well. Noteworthy is that on uploading a document in an automated way, a lot of garbage is created by Google. I think it has something to do with uploading a high number of documents in quick succession. Anyway, the script also cleaned up the Google garbage, which was not hard since the garbage documents still had the original filename used for downloading.

After the fact, I noticed I forgot about document labels and email notifications when a document changes. Not a big deal for people, but if you want to be all-inclusive, you should have this as well.

The migration took less than a working day with a minimum number of complaints.

Here's to Google!