Main Question: Should someone gain good computer programming skills/experience through a software engineering job before entering a 5-year PhD program in Computer Science (Tentative specialization: Reinforcement Learning, Machine Learning, Deep Learning)?

The reason for asking about gaining programming skills & experience is:-

  • NOT from the perspective of resume/application strength (i.e., whether one would get accepted to a PhD program or not), but rather from the perspective of whether one would be more productive (hence faster) during computational research in AI (i.e., running computational experiments).

  • NOT related to being or not being able to complete the research and get the PhD degree.
    As mentioned earlier, it's about whether having strong programming and software development skills would enable one to implement and test ideas more quickly. As some PhD students say that a lot of their time goes into implementing the ideas, during the initial months of their PhD.
    Slow implementation of ideas → Slow progress.

Many (not everyone!) students interested in pursuing research and planning to get into AI research through a PhD program, have limited to no software development experience. Many of such students have only worked on research projects involving limited programming skills, often having no software development experience.
Clearly, such students would have limited ability to implement and test ideas, by running computational experiments.

So, would doing a software engineering job and gaining strong coding experience significantly help them during their (computational) experimental work in PhD?

Please consider that the potential candidate aspires:-

  • To disseminate research findings or knowledge (during PhD and beyond) not just by (traditionally) writing papers or blogs, but by deploying models on the web like Andrej Karpathy did through some of his famous projects like ConvnetJS, RecurrentJS, tsneJS, ReinforceJS, or by interactive visualizations like Distill, etc.
    To be able to do so, I believe that one would need to be good at software engineering.

  • Aspires to perform reproducible research and writing re-usable code, which can only be achieved by good software engineering practices, generally acquirable by working in software engineering sector.

To achieve such task, one would need to spend a significant amount of their time, during the initial PhD months, on getting good at programming and software development. Clearly, this amount of time and effort would have been better spent on doing research, and testing more and more new ideas.
So, that's what my question is focused on.

What advice/suggestions do you have on what should one do considering his/her current coding capabilities and above expectations from the PhD?


2 Answers 2


I think the answer largely depends on what role you are in.

If you are a professor on the graduate admission committee, and/or consider taking Ph.D. students, you are free to set your standards according to your opinions (that I disagree with, but irrelevant here).

If you are a student that is considering applying to a Ph.D. program in that area, or a Ph.D. student that is choosing research area now, I think it is unnecessary to delay the application process/research just to gain software engineer experience. While it is cool to write clean and nice style code, the software engineer skills, while still helpful, are unlikely the main focus in academic research. For the purpose you describe, I believe those skills can be obtained during the time in a Ph.D. program doing related research, and would not be too time consuming.


Sorry that I'm a bit late with an answer, I hope not too late.

I doubt that a software engineering job will get you closer to your goal. It might take you farther afield. You do need to be able to program effectively but that is different from working at a SE job. Your research work will, perhaps, depend on programming, though less if the research is highly theoretical than if it is more applied. But you will set the specifications for your programs, rather than having others do so. A SE job, on the other hand has you build things to the specifications of others and they may not be related to what you want to actually learn about software development in any way. And you might find it very boring.

Note that if your research is highly theoretical, then there may not be much required of actual programming. And you are unlikely to need SE skills at the level of "product" development in any case.

But if your programming skills are weak then it is likely that you have other weaknesses as well, such a algorithm analysis and complexity theory. You might want to find a way to address those. But a job won't advance you on that scale either.

You must log in to answer this question.

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