A relic from the past that makes you gasp and marvel at the present

Evolution of the role of software engineer

Guess !

Quiz question : do you know what that is ?

If you were not a software geek during the 70′s, you probably have no idea. As a tip though, you should know that this represents in fact a one line machine instruction. So, have you guessed? No idea? Well, in that case, I’m very happy to introduce you to the punched card ! Ok, as a highly cultured reader you probably knew, but in my case I had no idea until I discovered it during my blogging coma. It’s a big discovery ! When you know what I discovered you’ll gasp and marvel.

The picture

At the beginning of the year, I went to visit my parents for 3 weeks. So I had plenty of time to catch-up with them. Especially with my mom, who never runs out of a subject to talk about. In one of our conversation, one subject leading to another, she came to ask me about my job and asked me to describe it. So I told her that concretely one thing I do is to write code that creates the interface of an application and I have to make sure that the user will get it without needing more instructions than just the interface. Then, she stopped me and said “interface?”, “what’s that?” I explained it as thoroughly as I could and after processing the information she said “we didn’t have that in our time”.

Now, you probably picture this conversation like this movie scene cliché which takes place in a summer afternoon : someone in the present talks with a really old person who tells stories about her life in dramatic black and white flashbacks. “You know, we didn’t have interfaces back in our time”. Well, almost. Except maybe that unlike me, the someone is virtuous and doesn’t laugh and say “seriously??!” to the old person. Also my mom is not that old, and I’m not a pretty girl wearing a flower in my hair. Actually, sorry, you’d better forget that cliché fast. Let’s wipe it off and start over.

It was more like someone from the present meeting with someone from the past. I learned with her what software engineering was in her time, before the PC. It was her turn to describe what her job was as a software engineer in the 70′s. This was my big discovery.

Time traveling : software engineering in the 70′s

My mom worked at the CNES, the French spatial agency. One of her project was to write software that would treat the data received from the space. She explained to me that the application they wrote came with a user guide that the software engineer would document for a specific user, there were no such thing as “users”. The user was someone the software engineer would meet in person to show how to interact with the software. Basically, there was a terminal (screen + keyboard), a user guide with the command lines to run, and a software engineer to help if needed; that was the “interface” at the time.

Then, the most interesting part was what she concretely did. Her role was to produce a software. So after gathering the needs of the client, she would write the algorithm on paper, with a pen (!), then pass the instructions to a programmer who would translate the instructions into machine instructions by punching the card. Then when the cards were punched by the programmer, they were put in several trays and sent to the machine room to be tested. In the machine room, a punched card reader, aka the machine, would read the instructions on the punched card, and output “logs” by printing on a long paper roll. Then the printed logs were brought back to the software engineer who would read it to correct the bugs found by the machine. Once the bugs were corrected, the whole process started again until all the instructions produced no bugs.

So the punched cards were just a way of recording the information between the engineer’s mind and the machine. Punched cards were what we used in the past to record code before magnetic tapes or hard disks existed. Can you believe it ?!! Now, I could understand better my mom’s surprise when I told her I was working on the interface or when I told her I was actually coding. In her time, there were no users, so no interface, and she only conceived algorithms but didn’t interact with the machine. The programmer was a separate person who would only punch cards. I find the testing and the debugging phases so surreal, how could this even be possible?

But she told me that it was something awesome to do, she loved imagining algorithms, structure the software, solve problems, that was her motivation. I think that hasn’t changed through time, engineers still all like doing that. But do you realize how far we’ve come now ? Every time I think about it, it really astonishes me. This makes me look at technology with even more marvel than before. So after all I was not so hopeless, I could for a moment be the virtuous someone who listens to the stories of the old person with respect and fascination.

Later my mom pulled out some punched cards and some logs she still had from her dusty archives. So I brought one back with me to put it on my blog, like some kind of proof maybe that I didn’t dream the tale she had told me.

Getting a UI boost

This made me wonder about what the future generations will be astonished about when they see how we do things now. I have some ideas. I think that in the future we will mainly deal with APIs or data feeds and ready to use functions, or if you prefer libraries. It’s already more or less the case, but enough services will exist so that you won’t have to recreate something from scratch anymore, and it will be easy and fast to implement. Future generations will say things like “really, everyone had to develop their own logging system?!”, “really, you had to develop a different software for every platform??!” I also think future generations will be astonished to know that we used images to create the interface. They will probably do it from a designing tool that outputs directly the interface for them. Kind of a photoshop to interface tool. They will create the visual effects right from this tool. Maybe like what the visual effects engineers already do now. Future generations will say “really, so there was a person to design the interface, and another one to code it ?! now we can do all in the same place!” “really, the engineer was not involved in the designing process ?!”. Ok, that last one is more from me, from nowadays.

Indeed, something I realized with this episode is that the job of a software engineer evolves through time. It’s always about creating software, but on the way, the job picks up more skills. Conception, coding, optimization, etc. And I think that one of the evolution of this job in the future is that engineers will also be UI skilled. That’s what I strongly hope for. As my mom said, who else than the engineer who created the software knows how it works and how it should be used ? That’s why they were the ones writing the user guides. Interfaces didn’t exist in the past, they are an evolution of technology, so they should also be an evolution of the engineer’s job.

Nowadays, UI is barely taught in CS courses. The closest course you’ll get about UI is about getting user input from a FORM. The form, so glamorous. Maybe it’s changing now, I hope so. But I see too many times engineers who snob the interface, as if it was not “real” engineering as they arrogantly put it. I also see too many UI decisions made by marketing or illustrators, who have other interests than the usability of the software. But if I recall well, the last big technology revolutions happened through the interface : GUI, operating systems, applications.

Fortunately, in spite of these frustrating aspects, I’m still optimistic and glad because this episode showed me that I’m on the right track. UI is the next skill to develop to be part of the engineers of the future. When you think interface think of the layer between you and the machine, that lets you interact with it and that brings information to you. It can be anything. The challenge is to imagine what it can be and then create it.

Time marveling

To conclude, I’d say that this is why I love technology : timescale. Every time it fascinates me. During my life I have the impression of having lived so many evolutions and eras with the advent of the Internet, the cell phones, the web 2.0, and more to come. And I am even able to talk with people who didn’t use computers or who programmed on punched cards. I could even see what a punched card is outside of a museum. Incredible. There is no other field like that, where you can change everything in such a short time, you can create things yourself, you can learn things yourself, it’s amazing. I mean, you couldn’t say the same for biology for example. You could never say, (bring on again the summer afternoon cliché), “Oh, I remember when vision kicked in, the world was never the same to me again. I remember when the first eye popped out, it was truly a revolution.”, could you? With technology you can be part of the change. Gasp.