Computer science is comprised of many many different areas such as theory, graphics, vision, AI, systems, databases to name a few. Naturally, one can not expect to master or even grasp the basics of all the different areas. But there is a difference between not getting a chance to learn all the different areas, and having studied but not understood the different areas.

Oh, the irony

The irony that I’m talking about is this. Throughout my undergraduate and graduate education, I was mostly a “systems and networking” person. Obviously I took classes in several other areas as well, and I think I learnt or retained something from most of these classes, with one exception. I took a database course in IIT, and then once again at UCSD, and both times I failed miserably to appreciate the subject.

At this point it would be easy to blame the faculty for not doing a good job, but I’m confident that the fault was no less my own. I remember sleeping through a lot of my database classes :(

Anyways, the point is that here I was, with a systems PhD, with zero background in databases and having pretty much zero appreciation for databases as an area, and where do I end up working at? A company that builds distributed database systems. I think its funny in a way. But the great thing is that I’m learning so much about databases now and appreciating the kind of engineering insight and effort that goes into building a performant, robust distributed database system.

One comment

  1. Justin

    I feel the exact same way about some of the math classes I took a while ago.

    For me, there’s no better motivation than working on a problem in practice to have you appreciate the theory and principles behind a subject.

Leave a Reply