I am an MSc student at the University of Edinburgh, specialized in machine learning and natural language processing. I had some practical courses focused on data mining, and others dealing with machine learning, bayesian statistics and graphical models. My background is a BSc in Computer Science.

I did some software engineering and I learnt the basic concepts, such as design patterns, but I have never been involved in a large software development project. However, I had a data mining project in my MSc. My question is, if I want to go for a career as Data Scientist, should I apply for a graduate data scientist position first, or should I get a position as graduate software engineer first, maybe something related to data science, such as big data infrastructure or machine learning software development?

My concern is that I might need good software engineering skills for data science, and I am not sure if these can be obtained by working as a graduate data scientist directly.

Moreover, at the moment I like Data Mining, but what if I want to change my career to software engineering in the future? It might be difficult if I specialised so much in data science.

I have not been employed yet, so my knowledge is still limited. Any clarification or advice are welcome, as I am about to finish my MSc and I want to start applying for graduate positions in early October.

  • 1
    $\begingroup$ This question appears to be off-topic because it is about career advice. Career advice has been proven to result in opinion-oriented, broad questions or sometimes extremely restricted questions, most of which result in no useful discourse. If you disagree with this opinion, please raise the issue on Data Science Meta. $\endgroup$
    – asheeshr
    Commented Aug 3, 2014 at 6:18
  • 1
    $\begingroup$ Ask Quora might help. $\endgroup$
    – zihaolucky
    Commented Mar 26, 2015 at 3:41

3 Answers 3


1) I think that there's no need to question whether your background is adequate for a career in data science. CS degree IMHO is more than enough for data scientist from software engineering point of view. Having said that, theoretical knowledge is not very helpful without matching practical experience, so I would definitely try to enrich my experience through participating in additional school projects, internships or open source projects (maybe ones, focused on data science / machine learning / artificial intelligence).

2) I believe your concern about focusing on data science too early is unfounded, as long as you will be practicing software engineering either as a part of your data science job, or additionally in your spare time.

3) I find the following definition of a data scientist rather accurate and hope it will be helpful in your future career success:

A data scientist is someone who is better at statistics than any software engineer and better at software engineering than any statistician.

P.S. Today's enormous number of various resources on data science topics is mind-blowing, but this open source curriculum for learning data science might fill some gaps between your BSc/MSc respective curricula and reality of the data science career (or, at least, provide some direction for further research and maybe answer some of your concerns): http://datasciencemasters.org, or on GitHub: https://github.com/datasciencemasters/go.

  • 2
    $\begingroup$ +1 You do need a lot of engineering experience to be an effective data science, but you don't get that at school. Use school for the theory and use jobs for engineering skill. $\endgroup$
    – Sean Owen
    Commented Jul 15, 2014 at 11:07
  • 3
    $\begingroup$ I liked your "A data scientist is someone who is better at statistics than any software engineer and better at software engineering than any statistician." $\endgroup$
    – wabbit
    Commented Mar 28, 2016 at 8:48
  • $\begingroup$ Could you kindly answer this question regarding Data Engineer career guidance. $\endgroup$
    – Shaiju T
    Commented Feb 1, 2019 at 6:44
  • $\begingroup$ @stom For various reasons I can't answer your question, but I'm happy to share with you the following relevant and IMO excellent resources: 1) medium.com/@rchang/…; 2) medium.com/@rchang/…; 3) medium.com/@rchang/…; 4) medium.com/@richard534/…. As you might notice, the first three links are to a series posts. Hope this helps. $\endgroup$ Commented Feb 1, 2019 at 10:35

From the job ads I have seen, the answer depends: There are jobs which are more technical in nature (designing big data projects, doing some analysis) or the exact opposite (doing analysis, storage etc. is someone elses job).

So I would say that SOME software design skills are extremely useful , but you don't need the abillity to build a huge program in C# / Java or whatever. Why I like some SW skills is simply that your code probably looks way better than code from someone who never programmed for the sake of programming. Most of the time, the latter code is very hard do understand / debug for outsiders. Also, sometimes your analysis needs to be integrated in a bigger program,an understand of the needs of the programms certainly helps.


Absolutely. Keep your software skills sharp. You can do this in an academic program if you simply implement by yourself all the algorithms you learn about.

Good selection of courses, btw. Consider getting an internship too.


Not the answer you're looking for? Browse other questions tagged or ask your own question.