I'm doing my PhD in computer science and I'm almost finished (maybe one more year).

In fact, my background was engineering, but in my MS study I got interested in CS and took courses about "pattern recognition", and "distributed AI" and "robotics" so I tried to continue that line in my PhD which is about machine learning and data analysis.

I tried to become an expert (in a PhD level) in my topic of PhD as I read a lot of papers and got focused on one topic, but here and there I see my colleagues (same discipline) are talking about methods and principles that I'm not familiar with.

The fact is that I want to continue in this field as a post-doc and even more, but I feel a gap in my background, and I'm wondering how I can fill it? For example, should I take online courses related to commonly taught materials in a bachelor/master CS program?

  • 2
    "For example, should I take online courses related to commonly taught materials in a bachelor/master CS program?" : IMHO, that will be a waste of time, you'll subscribe, think about it for a week, and then forget about it because you'll be busy doing other (more critical) stuff. To me, the best way to learn at your level is to teach: if you can find a post-doc with some teaching duties, that would fill some gaps and corresponds to your job description, so that you'll have an insensitive to do it, and to do it properly. And don't worry, you'll learn faster than your students when the time come.
    – Clément
    Jul 6, 2018 at 16:08

1 Answer 1


Let me give you a bit of perspective, as well as assurance. In mathematics it is no longer possible for a person to be knowledgeable in every aspect of the art. That possibility ended early in the 20th century. Henry Poincaré is often given as the last person who was conversant in everything mathematical. Math has evolved a huge amount in the interim. So, even Poincaré didn't know all that we now know about math.

In any field there is a tendency toward specialization. Research normally requires this. Over time, being a good researcher requires less and less of the whole both because of expansion of the field and the much narrower needs of a specific sub-topic.

While it is good to know a lot and your goal of expanding your horizon is a good one, don't be discouraged if others, especially other researchers have different ideas, use different tools, and especially utilize different thought patterns than you do.

Probably the most effective means, given that you like your research area and that it rewards you properly, is to branch out from there, studying similar things that you don't explicitly need, but which might come in handy. But rather than focus on the details of the related topics, pay special attention to whether the thought patterns you hear discussed are somewhat different from your own. Think Different was a slogan (Apple Inc.), but it has a deeper meaning.

Another way to expand your horizon from a given base is to study something very different from what you know, but to which your current knowledge might be applied.

I don't know of CS has reached the stage yet where you can't know everything, but I suspect we are pretty close to the boundary. You can have a broad education, and you should. You can also go deep into one or a few areas, as you also should. But there is (likely) too much there to do it all.

Modern Academia tends to reward specialists, as I'm sure you are already aware.

  • 4
    "I don't know of CS has reached the stage yet where you can't know everything" I can guarantee you it did, a pretty long time ago already.
    – Clément
    Jul 6, 2018 at 17:31
  • 1
    @Clément, If I were naming names, I'd think Edsger Dijkstra may have been the last "polymath" in CS, though Don Knuth might be another candidate (Don is alive, of course, hence my hedging the bet). Quantum Computing made the game harder, of course.
    – Buffy
    Jul 6, 2018 at 17:39
  • 2
    In 1970, when I was a young programmer, I thought that if I studied hard enough I could learn a substantial proportion of what there is to know about computing. Almost 50 years later, I am still learning, but the field has grown far faster than I can study it. Even in the narrow field of programming languages, I have programmed in a smaller percentage of them than in the 1970's. Jan 14, 2020 at 19:30
  • @PatriciaShanahan, it would be good to think that our learning is superlinear (in some sense), but the expansion of the field is exponential. Even if the exponent is small... But synergy implies we have a bigger and bigger playground. Growing faster than anyone can explore.
    – Buffy
    Jan 14, 2020 at 19:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .