RDI: The Systematic Spreading of Knowledge

My former boss coined the RDI method. RDI means Reflect – Document – Inform (in Swedish: Reflektera – Dokumentera – Informera). The more I think about it, the more I like it; and I’m starting to understand the different steps in RDI as I ponder the development process at my new job.

Whenever something happens, we gain knowledge. What happened is not so important; just as long as we gather lessons from it. If a customer goes irate and we manage to fix the situation, there are some steps we can take to make sure the situation does not happen again:

Reflect

What went wrong? Why did the customer go irate? If we stop and think about it, I’m sure there are details we can see, patterns that emerge; and from these can take lesson. Or maybe we came up with a smart idea; let’s reflect on it for a moment and figure out what was so smart about it and how it can save additional time in the future.

Document

Whenever we reflect upon matters and draw lessons from them, they will invariably be lost in the wind if we don’t write them down. Maybe we will remember them ourselves – hopefully. But if we write the lessons down, there is a much greater chance that we can remember, and others may read and learn, too. Perhaps we can even formulate guidelines, write best practices; we can organize, create execution plans for the future. So when it happens the next time, all you need to do is to pull up a document and start at the top of the list.

Inform

But then, what good is a document if no one reads it? And why would someone read it? Most organizations fulfill step one and two – they reflect and document. But the last step usually isn’t taken: We never inform, or we inform inefficiently. At my present job we have tons of documents, and yet they’re not searchable. I asked my colleague the other day about a specific document that outlines the responsibilities for different parts of the organization, and his reply was “oh, I didn’t know there was such a document”.

The most crucial lesson I can draw from this last experience, and indeed from every job I ever worked at, is that documents don’t work. The knowledge and instructions that we glean from our experiences are faithfully written down into Word documents, and then they disappear from our collective conscience. Our hard-earned wisdom disappears into little containers of knowledge, stored in an archive and subsequently forgotten.

Informing others about reflections and documents can be done through emails, through live presentations, and probably many other ways. But one way that I’ve started thinking about lately is through a Wiki. This is because I believe Wikis mirror the fundamental organization of the human mind: A Wiki is more like a mind-map than a traditional archive. Everyone can, and should, contribute. It’s easily edited; as soon as anyone spots an error, correct it! The hurdle for editing an article in a Wiki is far less than finding and opening up a document, editing it and saving it, and acquiring the appropriate permissions to do so. And most importantly, Wikis are fully searchable.

I’ve seen companies try to take the Sharepoint approach, adding their documents into a website portal instead. For this type of thing I believe Wikis are far, far better. Sharepoint is nothing but a glorified archive anyway. The information is still contained in documents, it’s just that now they’re searchable (reasonably). There are still large hurdles to opening documents, securing permission to edit them, checking them out, editing them, and saving. For the rapid type of idea-based reflect – document – inform process, Sharepoint will ultimately be a large failure.

It is usually said that the closer documentation is to the source code, the more likely it is that the developers will update it. I believe so. I believe it is dead necessary to store software technical documentation in pretty much the same VCS folder as the source code itself. And the same goes for this type of information: The easier it is to collaborate, the more people will collaborate. Therefore, it is absolutely necessary to remove – fanatically – as many hurdles as possible for collaboration, no matter how minute they may seem (and no matter how much they are justified by argumentation). Hurdles have got to go. If it takes me even one more minute to perform the Document/Inform process, there’s a chance I may never do it. And then the reflections are lost.

Impressions of a New Job

I’m two weeks and two days now into my new job and it’s been a mixture of impressions. Some good, some bad.

First, the obvious benefits: Free soft drinks, free coffee, free fruit. Reasonably flexible hours, although some people are here as early as 6:00am and complaining that the alarm doesn’t go off before that. I received an email from a colleague sent at 6:20 in the morning and that scared me.

Everything is more structured here. All jobs are broken down into tasks, and each task is given a number based on the current date and time. All checkins and work reports use the task numbers for job tracking and billing – even our time reports use these task numbers. There seems to be less “hacking” and more “working” … which I don’t know if it’s good or not, in the long term.

And I’m getting to know this mighty C++ beast with which I’m working. It is a huge system! And most of it was built before modern frameworks seemed to have appeared, so they’ve built everything themselves – a complete framework for ODBC, dialogs and controls, string and date classes…. everything that you normally get for free in C# or Delphi. And unfortunately most is built with a lethal dependency on each other so you really can’t switch one part of it out and use another. So it’s a big mess, and that’s why everybody is talking about C# and the possibility of rewriting large chunks of code (or all of it).

So right now, it’s mixed emotions. Huge prospects for interesting development loom in the distance, but we’re not there yet.

Personally, I don’t know yet how well I can contribute. I feel rather unfamiliar with C#, and I’ve never really tackled anything this big before. Sure enough, I’ve learned tons of lessons at my last job. And I arrive with pieces of development principles like agile modeling, design patterns and so on. But can we put it all together into something that is sleek and sexy? It’s not that difficult to build a system that’s a mess. What I’d like to do is build the equivalent of an Aston Martin – if I may so humble – a sleek exterior design, and when you pop the hood you see the purring V12 inside. I never had any inclination to build it differently.

So there’s lots of questions on my part. Do I know the tools well enough? How stable is the .NET platform? How well is C# going to keep up? Will the rug be swept away from under our feet because of changing environments – like Microsoft loves to do – or will it continue to be a steady, solid and reliable platform – like Borland? :)

Anyway, it should get more interesting before long.

Freedom is Old, Try Safety

In his book Fighting Terrorism, Benjamin Netanyahu describes a fundamental shift that most democracies go through in their battle against terrorism. Sooner or later, it becomes necessary for a democracy to adopt “anti-terror laws” which enable the government to take unprecedented action against terrorist through espionage, surveillance and other unorthodox methods. These anti-terror laws adopted have been restricted in time or effect, and subject to cancellation when no longer necessary. Britain adopted anti-terror laws and courts in facing the threat of the IRA; Germany likewise against Baader-Meinhof and the RAF; Italy, France, and several others at one point or other did the same. This is all necessary, and correct.

But since 9/11, the world seems to have taken a turn. The old mantra was Freedom, Freedom; the new one seems to be Safety, Safety. While some efforts to contain international terrorism – in similar ways to the anti-terror laws during the 60′s, 70′s and 80′s in Europe – are just and necessary; much additional “safety” is being sneaked in that do not immediately relate.

This is very scary, because it is coupled with the almost all-pervavise profileration of technology, all connected through the Internet.

The Internet, as such, is free. There are few laws imposed on it. It is possible to print, copy and publish almost anything – whether legally or not. Online, traditional national boundaries become fuzzy and jurisdiction is no longer self-evident. Who commits the crime and what laws apply when the publisher of malicious content sits in Sweden and the server on which the content is published is in Australia?

It is not strange, then, to hear politicians clamoring for more restrictions on the Internet. Congressmen in the US want all traffic logged, shouts the headlines boldly. The EU introduced legislation recently that would require all Internet Service Providers to log traffic for six months. All in the name of safety: To combat the great evils of the internet: Crime, terrorism, child pornography, abusers and so on. But this is very, very dangerous. To the uninitiated, it may seem like a good thing. But the physical equivalence of that – if we take the same logging measures and apply them to our daily lives – would be logging every phone call, everywhere we go, everything we purchase, everything we say or do in a gigantic database that can be searchable at will by government agencies to fight crime. As Bruce Schneier commented: It used to be “follow that car!” Now, it’s “follow every car!”

The immediate danger is not the data in the fight against cybercrime. The danger is that this all is a slippery slope. If it’s easy enough to introduce logging which may be used against people involved in child pornography today, then what’s the next step? Using it against all “cybercriminals”? Against political dissidents – such as China is doing? Against non-democratic elements? Against people who think and feel otherwise than the politically correct view? Against Christians?

“But it’s for the common good! We’re fighting terrorism!” Then why, kind Sir, do none of the present proposals for Internet traffic logging have any conditions imposed on it? Why are these not subject for annual review by a separate entity or committee? The anti-terror laws passed in Britain against the IRA were required to be renewed every year, otherwise they would by default expire. But no such things are mentioned today. And thus we enter down the slippery slope of wholesale surveillance, where we are constantly watched, day and night, in our every online activity (and why not our offline activities as well?) by men we don’t know, with all our actions and words logged and scrutinized by automatic systems set to trigger at predefined conditions. And these conditions may be changed, as time goes by, to suit the current political views. It is a wet dream of any would-be dictator, and indeed present-day dictators as well.

When during World War II President Franklin D. Roosevelt made his address to congress, he commented on four essential freedoms that all Americans shared: Freedom of speech and expression, Freedom of worship, Freedom from want and Freedom from fear. To me, freedom means not having to fear waking up in the middle of the night by police bursting through the door and dragging me and my wife out of bed because of something we did or said six months ago. Freedom means not having to think about what we say or how we say it, because we have freedom of speech that can never be contested.

The Internet is part of that. Internet transcends any boundaries, any controls, any limitations or censorships. It is as free as the wide-open seas… but maybe not for long. Soon, we may need to think about what we write or say online. Because every word we publish online – due to traffic logging – may be subject to the whim of a controlling part of a watchdog government, whom nobody controls. We may, in fact, be the last – and only – generation who lived to see a free Internet.