Imagine a door in the place of the open window in the building; the architect knows that, one day there might be a need for an emergency exit. He feels that, a window is not enough for lots of people coming to the exit and puts a door there. Well that is clearly crazy idea, right? Every body would ask ‘Do you really need that?’ and the answer is ‘No right now.’ But imagine this scenario; there comes a new building next to it and the two building wanted to have a bridge between them, may be after five years. This time, the architect is not crazy if he puts a door right there in the smae place so that people go to the bridge and to the next building. In the first place we would have told the designer YAGNI, this is not Chinese :).
YAGNI (You Ain’t Gonna Need It) is a principle in extreme programming. It means that, there is no need to add a functionality unless you really need it. It is clear for any developer out there it is tempting to write some sort of code that he/she feels might be important sometime in the future if not right now. In some cases, sure we need to think of the future; that’s what makes a good software, it should look at what is coming.
The last weeks, I was out of Addis for few days and when I get back I met my friends. We had little chat on what I faced in my field work. One of the guys told us a story on a blog he read about a sample project to automate a prison. I am not going to tell you about that project but an easy one, where we all have been at least once; a hospital. If we think of a typical health center, the main focus of there business is providing medical service to their customer, it might be a specialized hospital; however, there are tens of support services that are important for the business. It has to procure medical supplies, it has procurement department. It has to collect payments and pay for the human resource it has, it has finance department. The bed, the sheets, the rooms … should be clean, there are ambulances dispatched, guards for security purpose etc.
Imagine the institution is currently less than 5% automated. They just have a PC in the management offices only for email purpose. A typical one right? So, if they wanted to fully automate the whole institute, starting from the gate to the surgery room or the highest complication you can imagine, if we ask the same question as in the door above, do you really need a system to manage the cloths that are given to guards and janitors, guess what the answer might be…… I guess some people may say ‘Yes they do need that’ and some may say ‘No they don’t’, show your view by commenting, but I say ‘YAGNI’.
In the ideal scenario, it would be perfect to automate everything. Clean the room with a machine, a programmable one, secure the doors with possible electro-mechanical locks… I think, there should be a way of assessing the e-readiness of the institute. I want to share with you a story my friend told me when we discussed this issue:
He did this application and installed it on the computer of one of the section managers of company X and was showing him how he’s going to use it. Believe it or not, the guy was surprised by how he managed to put that all information in the flash. He felt like, my friend is showing him some sort of movie. I hope he’ll comment on the story.
This is a typical case in most organizations. People are not ready to use the computer to do their work, specially admin and management people…. If you are reading this, for sure you are not one of them, so no worries 🙂 We as developers, or consultants, should convince those people who need everything to work with in the same project phase, they don’t need the module right now. Let them wait till it’s time. I guess there will be a time we’ll need the door on the 10th floor leading out of the building.
On the 4th of July 2011, I opened my facebook page and saw a wall post of a friend. It says “Kenya leads by launching Africa’s 1st OpenData portal opening gov to hackivists & social entrepreneurs”, and today I found out that they officially released the site for the public. This is what I was talking about in my previous post, code for Ethiopia. Honestly, I am glad for the Kenyans for making it, thumbs up!
Yesterday I was watching ETV and they were showing this documentary, ‘Endegena’ meaning ‘Again’, how strong Ethiopia was years back. I think this is the information era and we should also be competitive in it too. The more we distribute the information the more power it gains. There still is the potential in technology in Ethiopia to create innovative applications which can transform the lives of millions of people as long as the platform is ready. IMHO, the platform is the national data we collect and make available for the public and developers to use it.
This is just to play my role to initiate the project and you readers, if you are a developer to participate, if not to support it to become a reality. My courage, the one we all habesha’s have in our blood, of becoming at least the second in Africa to release an open government data is pushing me to see how to make it happen. I looked at all the possible sources and luckily I found out in my laptop there was this open source project that I already downloaded to see long time ago. The project is called Open Government Data Initiative (OGDI v2.0). According to the project source, the demand of Open data from government agencies is growing globally. The project is aimed at providing a starting point for developers to build on it and customize to own needs. It is developed using C# and is based on Windows Azure platform, Microsoft’s Cloud platform.
The project has three components, interactive SDK, data service and data loader. The live instance of the project is hosted here for all interested to see and navigate through the test data available. Two years back, on PDC (Professional Developers Conference), the leader of Microsoft’s data services program has revealed the idea of Open data protocol.It was a way of making applications to interact with each other and exchange data. Since then, there comes lots of Odata producer and consumer applications. OData producers are applications or sites which expose data in OData and consumers are applications/services consuming the data to do analysis. The idea grew to a bigger scale and the idea of Open Government came to life.
I think we are not that much behind technology to make this happen. The technical challenges are not significant as compared to the problem of collecting data. If ministry offices and agencies take the lead in creating the initial data set and invite the community in building up on it the data set will be rich. Once again, please let’s make the move in making open government data project a reality to bring about transparency and enhance the public service.
I was attending an hp event on the 29th of June 2011. Hp guys were telling us amazing products and services that they have been working on. I was impressed by what they presented, more than anything though, I was impressed by what they are presenting as a selling point. For example, one of the points they say is the amount of power you save by using the latest server over the previous one; by the power, they also mean the amount of money. They were also telling us about the service support they have for the infrastructure for 24/7 up-time.
I looked around and all of us attending were Ethiopians, the presenters are from kenya. We all know the usual saying ‘Ye habesha ketero’, even if you are late for half an hour from an appointment, it is ok. What does it mean for us, Ethiopians, saving a second or minutes of down time of our service? how much would our company lose if our network is down or our email service is not working for, say a day? I wanted to share it with anyone who’s curious in the imagination we have about time.
According to The Register most companies can not count cost of IT down time. I took a sample they put their as a title, if you lose 100,000$ per a minute, do the math and you will get what I’m talking about. Assume, an airline which has lots of destination, which support online booking. If they have, say 75% of their customers online and if they have 1000 people flying per day, it means that they have 750 customers per day. What I am talking about is, the amount of money the airline loss if their website is down for a day. This is a big scale loss. But consider if they have drops of requests of one per every minute. The hp guys were all about this minor drops which lead to a big loss.
Two weeks ago, I found out a google project called SPDY. The google technologists look crazy for a community who doesn’t care for 30 minutes. They are thinking of saving micro seconds which are lost by an http request and response. According to the project documentation, average load time with a connection of DSL 2 Mbps downlink, 375 kbps uplink with http is 3111.916 ms and with spdy, it will be reduced to 2242.756ms. Every millisecond leads to a loss of money online which sums up to millions and billions.
Microsoft on the other hand is working on saving milliseconds wasted due to the operating system, the language and tools. All the big players of the IT industry are competing in saving microseconds. It starts from the programming languages, the platform, the server all the way down to the network infrastructure.
I think the change in the way we think about a fraction of time changes the way we live. In my last post I was talking about code for Ethiopia. If we really give value for the seconds and minutes we waste looking for a place to shop something or a way to go somewhere by asking people, we work on the solution. It is clear that the only gateway for the internet might not give value for a day or two down time in the internet connection (etc sucks guys know better). I am just saying what I can say from the technical point of view, starting from my perspective of coding. How much is your second/minute worth? how about for the company you work for?