Regular readers of this column already know much of my personal story, including the fact that I am a self-taught software developer. They know that I started programming my Casio fx-180p programmable calculator in the 1980s. They also know that in 1992 I bought my first PC, a venerable 380 SX tower with a whooping 128 MB hard disk and 2 MB or RAM, where I wrote my first “Hello, World!” program in QBasic. What they do not know is how I dropped out of college. Not once, but five times.
I paid a hundred and twenty thousand dollars for someone to tell me go read Jean Austen. And then I didn’t. – John Mulaney.
My family history somehow predestined me to go to university.
My maternal grandmother, Herta Schlerff, was born in Philippopolis 3 days after a certain Neumann János Lajos saw the light in Budapest; both were born on adjacent empires. She was among the first women to graduate in the faculty of sciences in the University of Geneva, with a “Licence ès sciences mathématiques.” Her diploma hangs proudly on the wall of my home office nowadays. She was also one of the few members of the statistical office of the League of Nations, that failed predecessor to our current United Nations. I can hardly put in words the pride that I feel when I think about her.
In my family, the historical connections to the software industry run deep. Both my uncle and my mother worked for IBM back in the 1960s, precisely at the same time during which a certain Fred Brooks brought the System/360 project to life. My home had plenty of old IBM manuals that my mother had kept from her days at Big Blue; sadly we left them behind as we moved to Europe. He had a degree from ETHZ. She did not go to college.
As far as I am concerned, it was not to be my call to simply graduate from college. I simply hated every single day I sat at a university hall. Crushed between my family’s pressure and my cronic self-doubt, I forged for myself a tortuous path across colleges in two continents.
Learning, as it is practised in the universities I have attended, simply does not work for me. I have many friends with PhDs and I know that many of them (not all) have loved the experience, and keep on piling postgraduate and postdoctoral degrees on top of each other. In my case, well.
- 1993: I entered the University of Geneva to study physics; yes, the same one that my grandmother attended. I dropped out in 1996.
- 1998: I joined the Universidad de Buenos Aires to learn business management. I lasted until 2000.
- 2001: Applied to the Universidad de Palermo (also in Buenos Aires) to study marketing. I left after 3 months.
- 2002: Started studying computer science in EPFL. I lost interest after 6 months.
- 2019: I wanted to learn some business-related thingy in ETHZ. I could not stand it more than 3 months.
Of course, every time I had to bear the chorus of disappointed family members, repeating ad nauseam that my decision was wrong or misguided or even inappropriate. The thing is, I am not made for university campuses.
I just cannot avoid the feeling of losing my time in an overcrowded university hall. Listening to an almighty teacher trying to fill my brain with dogma and boredom, two or four hours a week, so that I could go and regurgitate it all in a term exam at the end. Rinse and repeat enough times and you have got yourself a paper hanging on the wall.
I wanted to make things. I should have gone to a more technical school, or applied to an apprenticeship. Heck, I wanted to be a musician when I was a kid, dammit.
In the meantime, however, I got a Degree of Master of Science in Information Technology of the University of Liverpool, that took me 3 years to complete. I got accepted into that program in 2005, solely thanks to my professional experience, as I had no bachelor degree whatsoever. It was a distance program, but got the privilege of receiving my diploma in person in 2008, wearing my gown, hood and mortar by Ede and Ravenscroft Ltd., official robe-makers of the University of Liverpool and other institutions since 1689.
Yes, I have photos of me dressed like that, even a DVD. My mother cried so hard when I showed her the pictures and the video, it is still shocking to me to think that such a path might have been so important to her.
Going to college is the hallmark event for all generations of 20th century-minded people. These days, based on my experience, I would not recommend anyone to go to university if they are not the PhD type. It turns out that a lot of people I met in university went on to finish their degrees just to please their parents, and then found jobs in other realms, doing what they actually cared about. Which, funny enough, in many cases was programming. In my case I just went directly there, to the thing I enjoyed the most.
I remember in 1993, while studying physics, we had a programming class. Our professor taught us Pascal, and we had to submit exercises written in Turbo Pascal. Of course we had to pass exams, but oddly enough, written in paper. Wait for it: we had to write programs in Pascal in paper, and we would have points removed if we forgot semicolons, or made other syntax errors. Thankfully I have never again had the sad privilege of attending a more backwards, stupid, ridiculous teaching experience in my whole life. If there ever was a great way of making lots of people deeply hate programming, it was exactly that one. Kudos for a dreadful experience.
Speaking about learning experience, I enjoy online classes the most. In that sense, I am a proud member of the Internet generation. I enjoy forging my own path across books, papers, and references. I have a dead-tree book library that is certainly getting heavier and heavier to carry around, together with a more virtual collection of papers and ebooks. I like to learn at my own rhythm.
In a strong and direct way, writing a new article for this monthly publication is another mechanism of my own learning experience.
Was it completely pointless? Of course not. Studying first and second year physics gave me a very strong maths background; this has helped me a lot in my career. As a counterexample of my programming class above, I can mention the classes of Algebra and Analysis. Regarding the latter, I still have the book written by my Analysis teachers, Ernst Hairer and Gerhard Wanner. They taught us analysis following history, from the Renaissance to the 19th century. A fantastic idea, even though I had to pass the exams three times until I passed. It was hard (oh yes) but very, very enjoyable.
(As an anecdote, I should add that one of my classmates back then was Sir Martin Hairer, 2014 Fields Medal winner. I am thankful to him for the immense patience he had while explaining me various subjects, countless times even. I’m not at all surprised he got that far.)
As for the aforementioned Algebra class, I must mention my teacher, Jean-Claude Hausmann. In particular I remember him explaining the RSA algorithm to us, well before SSL certificates even existed. He was funny and witty, too, which is something many other teachers lacked. This class was, by all standards, a hallmark of my student years.
From my time in Buenos Aires, I must mention my teacher of economic history, although his name evaded my memory at the time of this writing. It was he who showed us Eric Hobsbawm, Amartya Sen, and Hannah Arendt. This course opened my eyes to history, and it was without any doubt the major trigger of my passion for software engineering history.
Of course, not having a traditional academic path can definitely close some doors, but in retrospect I can say it opened countless others. As my father once told me, “an academic degree is just another opportunity, nothing more, and nothing else.”
When I look backwards, there are at least three things that have helped me to stay relevant, “marketable” one would say, during all these years.
The first thing was to learn a new programming language every year. Here is my current list, updated as of 2020:
- 1992: QBasic
- 1993: Turbo Pascal
- 1994: C
- 1995: Delphi
- 1997: Java
- 1998: VBScript
- 1999: Transact-SQL
- 2000: C# & Prolog
- 2001: C++
- 2002: PHP
- 2003: Objective-C
- 2004: Visual Basic.NET
- 2005: Ruby
- 2006: LINQ
- 2007: Erlang
- 2008: Python
- 2009: Go
- 2010: Common Lisp
- 2011: Haskell
- 2012: Lua
- 2013: C++ 11
- 2014: Scala
- 2015: Swift
- 2016: Kotlin
- 2017: TypeScript & NASM
- 2018: F#
- 2019: Rust
- 2020: COBOL
Learning new programming languages did not only bring the obvious professional opportunities; it helped me find commonalities, pain points, and learn new and different toolkits. Usage of those programming languages has made me migrate from Windows (which I used from 1992 to 2006,) to the Mac (from 2002 to 2018,) and now to Linux, since 2014. I got out of my confort zone many times in my professional life, and I am still doing it. I migrated across galaxies quite often. Last year I jumped from mobile app development to Kubernetes and cloud services. One of the best decisions I could make.
My second trick was to read. As much as I could, as often as I could, every year, I would read at least six books about programming. That is the magic number. An average of a book every 2 months, with a strong proportion of them being about software history. That is the big subject that I always look for in those books. How computers and programming languages came to be, who designed them, why, where. By the way, the HOPL IV conference this year was postponed, but the papers are freely available online, and are a delight.
Last but not least, my third survival tip was to teach. Our friend Daniel Steinberg once told me that teaching is the best way to learn. Maybe he borrowed this phrase from somebody else, but it does not matter; it is simply true. Explaining the same concepts over and over again helped me realize many things abour programming. One has to master the subject, and questions from students are the primary mechanism by which knowledge increases.
In the meantime I had the honor and the pleasure to guide many friends and acquaintances into becoming professional programmers, with many of them making a living out of that knowledge ever since. Although it is not the usual kind of achievements one features in a resumé, it is probably the thing I am the proudest of in my life.
I suppose I should finish this piece with some kind of advice for younger generations; what I can say is that, thankfully, we are living in the 21st century. Today there are many more options to classical University degrees than there were back in the 1990s. Online education is a reality, and it is not only affordable, but also (in general) of excellent quality. Some of you, like me, will enjoy it more than the classic campus life. Some of you, however, can learn easier in a classroom with a teacher, and that is perfectly fine. Know thyself, and find what works best for you.
We must stop considering a university degree as a requirement for working in our industry. It is not, it has not been so in a long time; we live in an unprecedented age of information at our fingertips, and we are undergoing a revolution in teaching. I look forward to hearing from the next Jean Piagets and Seymour Paperts of the world, to see how we can rethink and redefine teaching, learning, and the corresponding assessment thereof.