Before entering into a computational research PhD, should one gain strong coding & software engineering skills? 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)?  

IMPORTANT NOTE:-
The reason for asking about gaining programming skills &amp; 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?
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.