Abstract vs Concrete Knowledge

Posted 2 months, 3 weeks ago | Originally written on 9 Feb 2024

I have a growing realisation of a noxious temptation to want to know more than I need at any one moment. Recently, I've found myself veering towards exotic mathematical ideas I was exposed to as part of my engineering education. For example, I was recently going through Maxwell's equations that describe the relationship between electric and magnetic fields. While I appreciate that I got new insights ("the fact that the divergence of a magnetic field is zero means that magnetic phenomena are exclusively an electric––and by extension, electronic––phenomenon" and "the curl relationships are actually coupled vector PDEs hence Ampère's and Faraday's laws") I am aware that there is virtually no scope for me to apply these new ideas in my current practice. In other words, this is purely abstract knowledge. I appreciate the understanding they bestow but am helpless to make use of them.

On the other hand, for my upcoming responsibility in data science (just a fancy name for statistical software development) there is a growing feeling of inadequacy. I have worked in various aspects of data science least of which was my doctoral studies but I feel the temptation to 'want to know it all'. I think that human beings are inherently limited in their capacity for understanding especially given the breadth of avenues for understanding. For example, while one can master the academic perspective (as most professors and researchers do), the practical/pragmatic perspectives (actual applications in industry) are a whole other dimension. There are many perspectives of any branch of knowledge (social, technical, academic, legal etc.) and I would be quite suprised to find someone who can master them all. This might be why teamwork can be so explosively productive: having a group of individuals working towards the same goal with broad perspectives will always defeat a single individual, regardless of how inspired and brilliant he may be.

I always put my heart and soul into each project. As long as I have sufficient runway to explore and time to execute, I aim to be professional even if I may be only just getting started. For instance, when I began my work at EBI, I was sorely aware of how much I had to learn (and still do) in software development. In my previous role as a postdoc, I had aimed to master object oriented (OO) Python by working almost exclusively with it. Therefore, while I was intimately aware of the power of applying OO, I had this nagging feeling of guaranteeing quality. Sure, my code worked in amazing ways but I just didn't have the 'proof'. So, when I began doing proper software full time I aspired to write code that would allow me to sleep well at night. How could I prove that my code was reliable and would not blow up? How could I add to it without the fear of breaking everything I had worked on in the previous day, week, month, year? Come to think of it, this is a rather daunting task. Then I discovered unit testing and it completely changed my thinking of writing software. Later on I realised that design really was key––you really need to nail the design early on. But the approach to integrating professional skills was a game changer.

Therefore, I am aware of a strong tension between the desire to amass abstract knowledge with no outlet for application and the gnawing gap of my current state of concrete knowledge for the task at hand. I put my faith in finding out what best-practice is, have an insatiable ability to master the current state of art then make it work as seamlessly as possible. In other words, I have found that adaptability and professionalism are far more reliable than trying to cram lots of seemingly useful, but quite often abstract, knowledge which just takes up space.