The great exalted software guru measures time in bytes

The great exalted software guru measures time by the size of the USB drive I give to him. I brought with me a 16 GB USB drive able to fit on a key chain to give to the guru. I laid the new 16GB drive at his feet and the guru picked it up and examined it closely.

He said, “It has been a long time since you last visited.”

I asked, “How long has it been?”

The guru replied, “It has been 15 gigabytes ago.”

Yes, the guru was right it had been a long time. The guru said, “You first visited me 16 gigabytes ago.”

I said, “How can it be that I gave you a 16 gigabyte USB drive today and I have visited you many times before.”

The guru smiled and said, “Time begins now not yesterday.”

I thought I am going to need a bit more explanation than that and I started to speak and say, “Exalted software guru…”.

The guru held up his hand and I stopped. The guru continued and said, “In software the first day of learning starts today not yesterday.” I started to speak again and the guru held up his hand to stop me. The guru said, “skills that were useful yesterday are not useful today. Those skills you develop today will not be useful tomorrow. This is why software professionals need to learn something new every day.”

He reached under his rob and scratched himself. I felt a bit uncomfortable not knowing how to respond and then he pulled out a 5 ¼ floppy disk.

I thought, “640KB.”

He said, “no 720KB.”

I said, “16GB minus 720KB is really just about 16GB, so the 720KB is insignificant.”

 The guru smiled and said, “YES!, what you learned in the past may not be useful today or tomorrow.”

I asked, “if skills that I learn today are not useful tomorrow then why learn them today?”

The great exalted one held up his hand and said, “Why do you keep trying to interrupt me?” I apologized and he continued and said, “you need skills today and you need to learn tomorrow’s skills today too.” I nodded because I started to understand.

Just like he always does the guru picked up his new 16GB USB drive and walked back into his cave. He waved and said, “I will see you in a few terabytes.” It was his way of saying I will see you soon.

 I walked down the hill and thought what I had learned today. I need to learn something new every day about tomorrow. I can’t live off of the technical skills I learned in the past. Then I thought, “I wonder where I can buy a 1 terabyte USB drive.”

More from the guru…


Pay no attention to the little man behind the curtain!

The little dog Toto pulls back the curtain and exposes the Wizard.    In this most embarrassing moment the Wizard thunders out, “pay no attention to the little man behind the curtain.”  Well, there are many IT organizations and IT “professionals” saying the same thing these days.  Too many IT professionals are Wizards pretending to be something they are not.  They manipulate knobs and dials creating a lot of smoke and noise.  They give the appearance what they are doing is really complex and sometimes even frightening.   When challenged they will speak in techno talk in hopes they will not be challenged.

 Over the years, I have pulled back a lot of IT curtains and heard over and over again “pay not attention to the little man behind the curtain.”

Watch out for fling monkeys too!

Read more at Reboot! Rethink and Restarting Software Development

Hide Complexity!

If your mind is empty, it is always ready for anything.  In the beginner’s mind there are many possibilities; in the expert’s there are few. 
- Shunryu Suzuki – roshi (1905 – 1971)

When developing software intended for human interaction (the user interface), there needs to an effort to hide complexity.   In sharing his ideas on complexity, John Maeda writes, “Hide complexity through brute force methods.  A classical example of this technique is the Swiss army knife.  Only the tool you wish to use is exposed.”

When developing software there is a tendency to expose all the complexity and put it right in front of the person interacting with the software. Too often there is a feeling that all the features need to be exposed, so to demonstrate all the hard work that went into developing the product.   Like the Swiss army knife software features need to be exposed only when they are needed.  In other words all the functionality is hidden away until needed.

When all the functionality is in the face of the user, screens become cluttered and it becomes difficult to navigate through all the functionality.  Often a software developer has a sense if they do not expose the functionality the user will never find it and it will never be used.  Instead they need to hide the functionality, expose it at the right moment, and the design needs to be intuitive.

The problem is that intuitive design is very difficult to do and requires the designer to understand how the software application is going to be used.

John Maeda blog (website)

Read more at Reboot! Rethinking and Restarting Software Development.

Published in: on September 22, 2009 at 01:01  Leave a Comment  
Tags: ,

Software Librarians

There is a job title in the software domain called software librarian. I searched for the job title of software librarian on Monster.Com.   It does not seem that software librarian jobs require any background in library science.   Instead the job description indicated they wanted someone who could code.  When I searched for medical librarian or law librarian the following appeared in every job description.

You must possess the following requirements and experience to succeed in this position: Master’s Degree in Library Science from an ALA accredited program.

What is the motivation for the fields of medicine and law to require a Masters in Library Science to organize their documents while there is no requirement whatsoever for the software industry?   These other industries have realized how critical it is to organize knowledge, so it can be retrieved and reused.

I suggested to a client they hire a librarian or two to help them organize their software application.    He looked at me and asked me one of those obvious questions, “where do we find a librarian.” I suggested he look for a librarian at the library which they did.  They hired two librarians to consult and help establish a numbering system similar to the Dewey Decimal System for their software applications.  Like the DDC their internal numbering system was a faceted system.  This allowed a lot of cross-referencing of documents. In the end they had an online system where they could search for documents by a specific part of the application.

A librarian, with a Masters degree in Library Science, makes between $36,980 and $56,960 per year.[i] The average salary of a software developer is around $69,240.  You can get a librarian for less than a programmer and they are going to be twice as productive (maybe more) as a software developer when it comes to organizing.

Read more at Reboot! Rethinking and Restarting Software Development – Interesting ideas on design and organization of website and information. – interesting ideas on how information is shifting.  It is coming to us in a variety different ways now.

[i] Bureau of Labor Statistics

Movie Making and Software Development

The role of the project manager and software manger are often missed understood. Movie making and software development are very similar types of creation.  A brief examination of movie making and comparing the roles of director and producer will give some insight on the differences of the project manager and software manager.

The director of a movie is similar to an IT Manager.  They are responsible for day to day activities.  It is common for many directors to not have any acting experience.  For example Steven Spielberg, winner of numerous academy awards, has never acted.  On the other hand Clint Eastwood was an acclaimed actor prior to becoming an award winning director.  The directors, like an IT manager, is responsible for the management of staff.

There are many technical aspects the film producer need to coordinate.  Besides the actors and actresses it is important to have the right film crew, lighting, sound, editors, animators, so on and so forth.  The producer may or may not have intimate knowledge of any of the technical roles.  The software project manager is responsible for getting the right business analysts, coders, testers, software engineers for a project.

Producers like the software project manager are responsible for the planning and the execution of the budget and insure the project comes in on budget and schedule.  An executive producer may coordinate the activities of several producers similar to the role of a project management office.


Who does what?

A production manager – a rose by any other  name

Benefits to documentation (yes there are some)

When application documentation is given meaningful names and numbers, it can be found easily. Software organizations need to establish a standard naming convention for documents and the application.  Documents need to be named using some agreed upon standard and a numbering system. 

By definition a complex software application is difficult to understand and needs to be documented well.  Yet, I have heard comments like, “our software is too complex to document.”   If your software application is too complex to document, then the software application is too complex to understand and your software needs to be simplified.  If your software application is too complex to document, then how will the complexity be communicated?

 No one wants to be a software archeologist.  One problem with unorganized information is it can’t be found, so there is a lot wasted time spent pecking around looking for the right document or trying to find the right person to talk to.   Another problem is if your documentation can’t be found, then redundant functionality is often created.  Of course creating redundant functionality is a waste of time.    The real benefit to the organization of documentation is reducing wasted time and spending more productive time on projects.  This, of course, improves profitability. 

 Another benefit to organized documents is the ability to reuse parts of the application documentation.   Reuse has been a hot topic in software development for sometime and it should not be limited to just the code.   Everything related to past projects can be re-used including requirements, test plans, test data, even project plans can be reused.  Reuse is a good idea and it does improve both productivity and quality.   Artifacts that can’t be found can’t be reused.  Those companies that have mastered reuse see a natural increase in their productivity and profitability.

 Read More at Reboot! Rethinking and Restarting Software Development