Getting any role in IT can be daunting as a first timer, whether it’s your first ever job or you’ve changed career or you’ve had a break and are returning as a junior in a new field or anything else. Getting one in any part of AI can be even more of an up hill struggle. Job posting and recruitment agencies are asking for PhDs, academic papers and post-doctoral research as well as years of experience in industry. How can you get past that first barrier? I get a lot of people asking me this when I present at Meet-Ups so thought I’d collate everything into one post.
I’m going to break down how you can demonstrate the skills that businesses need and how to talk confidently abut what you can offer without the fluff.
Firstly, all businesses are different. There will be some that will rigidly stick to specific qualifications (particularly PhDs and post doctoral research, NeurIPS papers etc) and disregard you at the application stage if you don’t tick these boxes. There’s nothing you can do about them and don’t worry about it. These companies are either doing bleeding edge research that requires deep academic knowledge, or are just snobs, either way they won’t be a good fit for you.
Don’t ever claim to have a qualification that you do not have. Employers check. We can spot inconsistencies in CVs and it’s the easiest way to get you blacklisted from reputable recruitment agencies as well. We’re data scientists – spotting anomalies is what we do. If you are dealing with sensitive data you may also be required to have security checks and these will uncover anything that isn’t picked up by the data fanatics who will pour over your CV. Be honest about what you have and put it in light of what you can do.
With an MSc taking 1-2 years and a PhD taking 4+ they are big time investments and a high cost. While I would never advise anyone to do a PhD just to improve their job prospects1 For some people an MSc may help to top up your knowledge, but that could be classroom or distance learning, and it’ll be a personal choice whether you feel you need one or not.
So what skills do you need to show?
An understanding of statistics is the no compromise starting point and you need a deep understanding of what different statistical methods tell you about the data and which techniques apply in which circumstances. This is expected in any data science or AI job. So much so it might not even be mentioned in the description – I’ve known some companies to talk about this at the interview stage so make sure you know your techniques.
Coding requirements can vary depending on the job title, but you will need to code. Choose R if you want to work in an environment that is more on the data science side and Python if you want to move towards more AI. While the skills are transferrable, if you focus on the one that matches what you want to do then you won’t spread yourself too thinly. Some companies are more flexible with languages than others. In a small company – I don’t have time for someone to learn a new language, but I don’t expect them to be an expert in python. Other companies will happily cross train. Know the libraries that are available and how they’re used and be able to implement your statistical solutions in code with visualisations. If you’re looking at deep learning then you should be able to demonstrate implementing a neural network in tensorflow and understand the impact of different optimisers and learning rates.
Practical experience is key for any business to answer the question whether you can do the job – what problems have you solved and what was the impact of these solutions? If you’ve already done something similar then it’s a lot easier for an employer to take a chance on you.
That, admittedly doesn’t sound like a lot, and to be fair, what is actually needed to do a job in data science is a good set of essential skills, a set of ancillary skills that help you stand out, and a whole heap of skills that are hard to define on paper but are critical.
For any role involving coding you should know how to use source code control. You won’t be working in isolation. You’ll be picking up other people’s code and changing it and they will be doing the same with yours. While there are several, learn Git. Do this while you are learning to code. Get in the habit of committing changes, branching to try new things and merging code together. There are plenty of great posts explaining how git works, and I’d recommend also learning how to undo mistakes. Never code in the master branch and never force push your code.
One of the wonderful things about this industry is that there are a lot of open source projects. Rather than just knowing the theory of source control and using it in isolation, demonstrate that you can do it by contributing to a project. There are lots of very simple bugs that are low priority in many projects. Find one and follow the process for fixing and submitting a solution. Generally this will require you to branch the project, do the fix and then submit a pull request. Someone else will review you code and suggest changes or accept it. This will all appear on your public github profile and demonstrates your coding ability and your understanding of the process. Naturally, just fixing a few Python 2.7 to Python 3.6 print inconsistencies won’t count for a large amount, but start there, build your confidence and do more. If you can find a library that’s not yet been converted to Python3 then do that and give it back to the community2.
Other coding best practises you should know:
- PEP 8 for writing great code
- Basic optimisation – don’t repeat function calls unnecessarily
- Testing – be able to write a test harness for your code
Development environments are very useful to know. I code in vim on Ubuntu and always have done. This is how I’m most productive so I’m not best placed to make recommendations on what’s best to learn! There are loads of options out there and most IDEs have very similar functions. Find a free one and learn how to use it. This is an expected skill that won’t be asked for. Your IDE should integrate with source code control and allow you to debug your code. More advanced ones will support you with your variables and functions to ensure you don’t use things out of scope for example.
Many companies use cloud servers. Get yourself a free account on AWS and Azure and learn their interfaces. If they offer free training, take it. These companies will allow you limited personal accounts for free so make use of them as part of your training. If you can code locally and you source code control to deploy your code to the cloud this is a great demonstration for some of the skills business needs.
For explainability, Jupyter notebooks or documents with pweave are great ways to go. Understand how you can explain and visualise your results. Knowing what data has gone into which models, which version of the code was used and how the results were obtained. Understand the legal and advisory requirements of the data that you look at and be aware of how this varies between countries.
Less relevant but still useful is a knowledge of containers (Docker) and virtualisation. For deployment, it’s essential to ensure consistency and versioning of libraries and code, as well as scaling. I’ve recently given a talk on this and will consolidate some of that into a blog post at some point.
Then there are the softer skills. These are a given for any role and you need to show that you have them: good communication skills, problem solving, understanding of business needs.
Many companies use evidence of a PhD or Masters to tick the first two boxes. This isn’t strictly the case – depending on university you might have neither of these, but that’s usually pretty evident at interview. As an example, I ask candidates to bring an academic paper and explain the concepts to someone from the creative team who does not have a data background in any way. You should know your field well enough to be able to explain it clearly to a non-expert. If you are looking to get into AI then you should be aware of the academic papers. Follow ArXiv Daily on Twitter and read the papers. If you can get to the point where you can implement the solutions then great.
Similarly for problem solving, prior to interview I generally give a time-sensitive problem that could be solved in multiple ways to see how the candidate thinks.
Both of these are things are easy to demonstrate at the interview but showing them before can be difficult.
For communication, the easiest thing you can do is write articles. You don’t have to have your own blog like this one, you could write one off articles for the likes of dev.to or towardsdatascience.com3. These articles can be a new angle on something you’ve learned or a getting started guide. Don’t assume everyone else knows things that you do, or that they are easy to find. A few well written posts show your communication style and your contribution to the community. If you feel like taking it a step further, speak at meet-ups or submit to conferences. There’s plenty of opportunity to get out there and talk, and this doubles as a networking opportunity. As a speaker you’ll get time with the other speakers so they’ll remember you should a role be available.
Problem solving is harder to demonstrate. If you’ve worked with data then you will have some case studies from previous jobs, even if you had a job title that wasn’t “data scientist”. If you are completely starting from scratch then websites like Kaggle.com will give you access to data sets. Enter competitions and look at other people’s solutions. Don’t just focus on the algorithms, think about the data and what you will do to it before you start. Any top 10 percent placements put on your CV, including any tricks that helped you get your placement. A great example is Jeffrey De Fauw’s 2015 diabetic retinopathy entry – he realised that each pair of retina pictures were taken with the same camera so could subtract the artefacts from the image pairs before training. This sort of cleverness is exactly what businesses want. Anyone can turn a handle with an algorithm and spit out a result – show what problem solving ideas you can bring and how you’ve implemented them.
Demonstrating that you can understand business needs is probably the hardest without actual experience. You will have to draw on any experience you have to talk about this. Was there a time when the best solution was not possible in the time but you worked with the end user to get an interim solution that was “good enough”? This isn’t about pulling an all-nighter to get a project delivered (although that may happen) but is about keeping your customer happy. You don’t need to chase the most accurate system and deliver in a year, if a system that informs an end user could be delivered in a month.
With all of the above, you still need to get your foot in the door. Many companies advertise for juniors and interns on their own company websites as it’s just not effective to use job boards or recruitment agencies. You’ll need to put in the work to find them. Meetups and conferences are great places to speak to people and many presenters will make it known when they are hiring, but you need to network. Get some business cards made up with your name, “Data Scientist” and personal contact details including your linkedin, github, blog and anything else, and keep all of these up to date. Give them out to people hiring and people you want to connect with. You’ll be far more memorable than a 2 page CV.
And good luck!
- You will be miserable every step of the way. A PhD is an immense feat requiring a lot of dedication and sacrifice to push the boundaries of knowledge in your field. Computer science and AI is moving so quickly that you may find your niche area is obsolete very soon after you complete your research (if not before). ↩
- This is a standing rule in my team whenever anyone asks to use python 2.7 because of a library, I say no and make them convert it 😉 ↩
- Although I feel uncomfortable with the Medium website family given that they are quite pushy with sign up and subscription yet don’t share that with their contributors. ↩