After Hours Academic

Learning to self-learn again

I enjoyed computer science (CS) in one form of the other from a very young age. My earliest recollections are being curious about what C:\ and D:\ mean and making a slide deck (complete with animations) as a 12 or 13 year old. The deck was about bikes, of course. A few years later, I really took to HTML and coding up web pages. A couple years after that I learnt coding in C and Java and made simple little programs. All of this was self-driven out of an innate desire to learn CS (which mostly meant coding at that point).

Then I pursued Maths and Computing in undergrad and studied all sorts of CS topics. But at some point, I stopped looking up new stuff by myself and just stuck with what was being taught. I had realized this change and was didn't pay a lot of attention to it -- I was going through a cynical phase and chalked it up to that. In hindsight though, it was more jadedness than cynicism. I was learning about 5 new CS areas/concepts every semester. Understandably, it diminished any desire to seek out and learn more CS by myself.

This pattern more or less carried over to my grad school as well. I focussed on the stuff that was important for my research and very rarely branched outside of that. I kind of regret doing that because I was surrounded by really smart people and had a chance to learn about their specialities but I let that slip away. But it was a somewhat logical thing to do and it did serve me well. My success depended on making progress on my chosen topic. Learning about other things, while interesting, was not going to help me graduate.

But once I entered industry and began working as a software engineer, I started missing learning new CS stuff again. The incentives are still not aligned towards learning but towards delivering on a somewhat narrow focus. However, the difficulty is that the narrow focus is often not exciting or intellectually fulfilling. Most of software engineering does not require learning new ideas. There have been times where the narrow engineering focus was indeed exciting and intellectually fulfilling. And during those times, I did not desire any external self-driven learning. But a majority of the the industry work is quite uninteresting and does not provide enough learning opportunities for my taste. This makes my software engineering experience different from my undergrad and grad school experience. And it has rekindled the desire to learn new things by myself on the side.

This also hits home the discussion I had with my advisor and another professor at CMU when trying to decide between industry and academia. Both shared something along the lines of "an academic learns/teaches, an engineer does" (teaching encompassed more than just teaching in a classroom, it encapsulated the idea of disseminating knowledge at large). I chose doing at that point because of a mix of personal and professional reasons, but it turns out I miss learning and teaching. That being said, given a chance, I would probably make the same choice again mostly because of the same reasons that dictated the original choice.

I have been trying a couple of things to reconcile my somewhat conflicting interests in academia and engineering and get the best of both worlds.

First, I have been trying to find a company/team/role where learning is a key part of the job and is incentivized as such. Such roles are pretty rare though. I have changed jobs twice in the last 5 years since graduating and I am on the cusp of yet another change. This hasn't been easy logistically (specially being an immigrant) and I have been warned about how it doesn't look great on my resume either. But I am willing to pay that price to find a role that I really like. When I was making the last change (stepping away from a startup where I was one of the founding engineers), the founders of the startup made a very compelling argument that staying put and seeing the startup to success would provide a much stronger career story. And they were probably right. But I was optimizing for my definition of learning and intellectual fulfillment which had started to diminish towards the end of my time there. I am happy with a career story wherein I sample a bunch of roles before finding something worth staying put for. The sampling has enabled me to think about the pros and cons of different places/cultures and helped me identify the things I care about and want in a job. And I am really hopeful that my upcoming role would be the one where I stay put for a long time!

The second way I have tried to bridge the gap between engineering and academizing(?) is by starting this blog. I started it as a place where I write about research papers that I read (recently, I have expanded this to include my personal blogs as well). The challenge with this approach has been in finding the time and deciding on what to read/write about. The good part about school was that it has a curriculum and I could just follow that. Now, I can set the curriculum to be whatever I want. And I am interested in too many things; partly because "the more you know, the more you know you don't know" (... and want to know). So on one hand I want to read about distributed systems, but machine learning also looks interesting... oh and database systems is a whole another interesting area in itself... and what about computer architecture or formal verification... and the list goes on. For now, I have decided to not focus too much on "what" and instead build back the muscle of learning independently. I have also been skeptical about how well I will recall my learnings if I am not using the ideas frequently enough, but I am hoping the first solution (being in the "right" company/role) would help with that.

#computer-science #life