How I came to studying computer science

‘William, you are a rebel against circumstances; you are a fool, and know not what you want; you have chosen trade and you shall be a tradesman. Look!’ I continued mentally – ‘Look at the sooty smoke in that hollow, and know that there is your post! There you cannot dream, you cannot speculate and theorize – there you shall out and work!’

—Charlotte Brontë, The Professor

In January, I was made to work as an unpaid two-week programming ‘intern’ at a small local bank by my mother, who holds the mistaken belief that any ‘work experience’ is better than none. My task was to hand-craft some test cases for their alerting system, which required more highly specialised institutional knowledge than technical expertise, and, as I gazed at the 100+ MySQL tables trying to make sense of them, a most nauseating feeling came over me, which prompted me to contemplate my life choices and my future. Luckily, only after two days I left due to some complicated circumstances that I won’t go into here. But the question still nags at me: did I know what I want when choosing to study computer science? Do I know now?

On 19 March, back in 2020, a year and a half before I learned to printf Hello World, I was trying to save a local, DRM-free copy of the book Wintercombe by Pamela Belle from the Internet Archive page by page, by right-clicking and saving each scanned image. So soul-destroying was the task that I lost all interest in the book itself, a historical romance—my favourite genre. Right then, I knew that I needed to learn how to program.

It was not only scraping copyrighted materials that interested me; I was certain that computers could make my life better in more ways than one. There was another case that I remember vividly: I was trying to create a SWORD module for the Revised Chinese Union Version of the Holy Bible, and of course I was totally frustrated after perusing the manuals for hours and not understanding a single word. So I decided, ‘If I were to study computer science, I would be able to do this.’

So, this mastery of the machine, or, as educators call it nowadays, ‘digital literacy/competency,’ was my original motivation. CS is an extremely useful subject that could be immediately applied to improving my daily life. Needless to say, studying computer science is downright overkill for my modest ambition. Along this immature line of thought, I might as well pick up sewing and teach myself the combinations of colours and patterns, of textures and materials, just because I find shopping for ready-made clothes most awkward and uncomfortable.

However, as I began to appreciate the practicality of the subject, I became genuinely interested in some of its theoretical aspects. In the autumn of 2019, I made the switch from Windows to (virtualised) Linux to better protect myself from digital surveillance, and my interest in security was piqued. I set about following latest news of vulnerabilities and exploits. I also started to learn about computer networks to better combat censorship in my country; indeed, I had grasped almost everything my undergraduate networks course had to offer while in upper school. At that time, I was also an avid reader of a popular Chinese-language blog kept by a programmer (who has now been jailed for dissent). I was fascinated by his posts on CS written in layman’s terms, and I suppose in my subconsciousness I had set him up as a role model.

Did I mention money and job opportunities? As might be expected, I had full support from my parents. Therefore, my lot seemed to have been cast: I was to study computer science. But I had my doubts. I knew that to excel in the field, I would have to be good at mathematics, which I was and still am not. In fact, I don’t think I am gifted in any of the science subjects. So, eventually, I did choose CS, but chose to study it in a university better known for its humanities and traditional sciences, instead of a technical one, so that when my prospects in CS should dim, I could easily transfer to English or history.

However, things turned out far better than I had feared. I did do poorly in mathematics in the first term, but I showed great talent in programming. I was able to pick up the basics of C programming in two weeks, and I obtained the highest mark in the final exam without even revising. Encouraged, I quickly gave up the thought of transferring to the humanities, and continued to do well in CS subjects.

A turning point came in my second year. Pressured to gain some research experience, I mailed a professor who had said he was recruiting new students, and just two days later, he agreed to take me on. I was to work on a computer vision project, the details of which I won’t delve into here. I had absolutely no prior experience in the field, or any foundational knowledge of deep learning, but computer vision was all the rage at the time (well, it still is), and I was eager to learn. Two months was sufficient for me to surpass many postgraduates in the lab, and I was able to produce some preliminary results that seemed publishable enough, until I discovered an old paper with almost the same methodological approach. Undaunted, I continued to work on the project, but could not achieve satisfactory results. Over time I began questioning my interest in the field; I looked high and low in my heart for anything that could called ‘passion,’ or just a mere ‘taste’ for it, and found none; finally I lost all motivation to continue, even when I still had an untried idea in my mind. I was also disillusioned by the professor’s total lack of guidance and support, and the academic culture I had witnessed in general. Then I quit, which was a decision I have never regretted.

Speaking of passion, do I even have any for CS? I am not sure. I definitely love programming. How time glides away when I am coding! But am I to take one of subfields and wed myself to it for life? Am I to spend the rest of my days on earth, say, poking around software systems hunting for vulnerabilities? Reason assures me, ‘It is the embodiment of all you seek in a life-long pursuit: it is intellectually stimulating and challenging, it is practical and useful, and your profession shall be stable, respectable, and undemanding on your time and your health.’ But there is a loud cri de cœur vehemently protesting, ‘I will not bring myself into forced love!’

I believe there are two classes of researchers. The first are those who are driven by a burning desire to solve a particular problem. Of course all the great men and women of science belong to this upper caste. Their lower brethren, on the other hand, are ‘technicians,’ professionals trained to read academic compositions, to survey and summarise literature, to hypothesise and experiment, and to write up and present their findings. They are more motivated by the idea of ‘doing science’ than by science itself; to them, reading and writing papers is an obligation rather than a pleasure, and the latest advancements in their field trigger no excitement strong enough to be christened ‘love.’ I don’t know about professors, but the vast majority of postgraduate students I know—better to be called ‘technical apprentices’—belong to the latter; if I were to continue in academia, I am afraid I would be one of them.

Enough purple prose for now. Down to earth, the life-path I shall tread seems less obscured so far. I will be a software developer: I am never averse to writing code, and I am good at it. Constructing useful software systems is enjoyable and fulfilling, and I would have a handsome salary and enough free time for my leisurely pursuits. What more could I ask for?

I’d be more than content; the word ‘ambition’ always repulses me. But one question remains: am I squandering the talent I am entrusted with? My intellect is keen, my memory good, my ability to learn new things fast exceptional, and I am told by parents and teachers that I am capable of great things. Therefore, shall I make it my life-goal to contribute to the sum of human knowledge and to advance the frontiers of science? Not those of computer science, I am afraid. My obsession is with words; my preoccupation is the permutations of letters and sounds. Then after all, I might as well transfer to a humanities department? No, my expertise in CS shouldn’t go to waste. I am taking a course in natural language processing now, and working on a project to rank the influences of writers and books. Let me wait and see if this endeavour will bear fruit. If everything goes well, to the field of digital humanities I shall go. If not, I’ll just be another coder. There’s also the possibility of becoming a research software engineer, which looks fairly attractive to me. I haven’t mentioned another factor worth considering: a doctorate in whatever subject will be a great asset when I exchange my passport for a liberal democracy’s.

In conclusion, I do not regret my choice of studying computer science a bit, and I would make my living out of it and be satisfied in whatever career I eventually choose. Studying computers has improved my daily life to an extent I had not imagined, and I simply cannot contemplate how I’ll live without my scripts and my personal projects. Now, if learning something that is practical and I am interested in could bring me so much joy, why not take up a needle and thread and start familiarising myself with the art of dressmaking? I do adore Victorian and Edwardian fashion and vintage dresses, and have my own ideas of the ideal pattern and the perfect silhouette…