The Future Programmer

In the month-long adventure I had in my home country and talked about here, I had to experience first hand the combination of badly designed computer systems in a bureaucratic setting in a place where processes and flows are not always well defined.

In order to make a shipment of personal effects, I needed to register in an office that would not register me because I do not live in the country and it is against the law to register me. Yet, another division of that same department needed that same paper for the shipment. After a lot of negotiations in all directions like in a spider web, the infinite loop was broken and I would be able to get a special temporary registration. Except, nobody really knew how to do it. While I was sitting at this office, I could see these people trying to help, spending endless time in front of a series of screens, entering information over and over again, just to hit a brick wall. Later, I was told that one section needed to create my account, and was having a lot of problems doing so, so that another section could activate my account. And these two sections could not influence the other, not even interface with each other.

I don’t know how many times have I been told that “the system does not allow me to…” and the reason is very often unknown. It is not because is against the rules. It is simply not known. These so-called intelligent systems are invading our power of doing everyday things and it is scary.

The future of any new society needs skilled programmers. Lots of them. But not the kind that can program any given algorithm to perfection. Those are needed too, but they are not sufficient. The kind I’m talking about is the kind who can understand design; can describe, create, and modify processes and workflows with interactions and dependencies. Otherwise the current crisis in these office buildings is going to spread and get worse. The normal citizen will be able to achieve less in more time. Bureaucracy will just have a great place to hide.

—-

Upon my return to Montreal in my search for a new opportunities, somebody suggested that I should apply for a Business Analyst position because my background would fit the job description. And ironically, the description of this role is exactly what I’m describing here. The difference is that the business analyst, while knowing about programming, does not do the programming him or herself, but must understand technical issues and communicate flawlessly with the programmers. So if the analyst can understand what the user needs and wants, and convey this to the top-notch programmer, in other words, can make the bridge between the normal user and the programmer and/or designer, excellent systems will be created. The challenge is to get rid of the “if”.

What is it to be a manager?

The month of August of 2014 was very difficult for me. My mother passed away in June and I volunteered to help my father empty and return the apartment, sell the car and settle any other pending affairs. Without completely studying the situation, I gave myself 2 and a half weeks, which ended up no being enough. I underestimated the Colombian bureaucracy, the state of the apartment and did not give any room for last-minute events. Three-quarters was a mess left by my late mother and the rest was my father’s! My mother did sewing, knitting, painting, jewelry and craft, cooking, and everything seemed to be in industrial quantities. And my father likes to do Pointillism, likes electronics and is a handy man of all sorts. He could have been an engineer. Added to the material needed for those skills, there were so many other things all over the place… I had to extend the stay to a month, and that was a hard line. Whatever could not get done in that time, would not.

The task at hand was to clean, sort, sell, pack, send, give away, recycle everything in order to empty the place. Every object and issue had to be categorized and dealt with. No loose ends. I had my dad, a 75 year old man, who knew most but not all of what was around. Then there was the woman who came to do the cleaning, and a few friends. But I was in charge, I was responsible. I had to lay out my own flowcharts and plans, verify them, execute them or make sure they were executed.

The first thing to do was the preliminary cleanup. That meant preliminary sorting. How can you choose what is garbage if everything is mixed up? Which is the best of a group to keep if there are no groups? Where is that essential paper we need to finish up that errand? What is the password for …? Then a very common saying in Computer Science came to mind:

When in doubt, sort!

But it is not obvious to tell people how to design the sorting process, or in fact what is sorting. When you have a mess of information and want to sort it, the crucial point is to have “buckets” to put in the “objects”. These buckets are labelled places describing some sort of category, and the categories must be representative of the things being sorted. If you have a bunch of numbers between 1 and 100, having buckets labelled in the hundreds would not serve any purpose. In my case, it was always a two-step operation. In the first step, the objects were studied to identify possible buckets, and in the second step, the things were actually put into these labelled buckets. The number of steps depends on each case, for example when the pile is already neat just unsorted and the categories are obvious, no first step is needed. The physical buckets are whatever is suitable for the sorting in hand: boxes, drawers, plastic bags, directories in a file system.

This process sounds so simple, yet I have seen so many people go through a pile, identify things and proceed to put them aside, to be picked up later to restart the process. At the end of the allocated time, there is no advancement, and finding anything is as hard as before. Without the bucket principle is impossible to advance towards organization. A side effect of the buckets is being able to find information or physical things at a later time. A good boss should know the process of efficient sorting and be able to teach how to. This is in fact crucial when entities move from the physical world to the electronic media, the paperless office.

The mount of sorting and processing needed to be done was overwhelming, and I could not do it alone. I knew what had to be done, but sometimes I would see my stressed father going in circles, and the cleaning lady asking me what to do next, both at the same time. So I learnt very quickly to externalize what I was doing, how I wanted it done, and could not be afraid of giving orders, not even to my father. The trick is to give the order depending on the person, to get them to do exactly what you want them to do. With my father for example, I would define the buckets and give him a pile to sort. With the cleaning lady, I would start something with her and let her do the rest. At the same time I had to be able to delegate other tasks to friends, when for instance they came asking the key question: “Do you need help?” In a split second, I had to judge this person’s expertise, connections and capabilities, search my tasks list, and delegate. Or searching and finding the key person for a task I could not complete. This required a huge master plan always running in my head, which had to be flexible as there were too many urgent matters, with requirements changing on the go. Some needed massive parallelism. Almost like having a Gantt chart in my head and permanently updating it.

After an intense month of permanent stress and emotional involvement, I took the airplane fully satisfied of having done everything that needed doing, including putting my father safely and sanely in an earlier flight to my sister’s place. Of course, I was literally finishing errands at the last minute, even at the airport. I did not have a minute to spare. Literally.

I have adapted the Computer Science quote to a more general case:

When in doubt, sort. To specific places.

 

Digital Divide

“There’s two digital divides,” he said. “Only a quarter of the planet actually uses the web. Then within this quarter, there’s a fairly small set of people who code. They have the ability to make a computer do whatever you can imagine.” The rest, however, treat a computer more like a refrigerator, he argued. “When it breaks, they shout, ‘Mum!’

Tim Berners-Lee, World Economic Forum, Davos, 2013
Full report