55

This is a shot in the dark, but I'm hoping for the best. My situation is as follows:

  • I have a Master's degree in mathematics and have been trying my best to get a statistics job, or better yet, data science.
  • Most modern statistics jobs require more coding skill than my degree offers. Frankly, a lot of job openings read like they want unicorns who somehow are fresh graduates that have mastered statistics, general coding, and database management.
  • I can code, but I don't have any paper to back it up. All that I have is a short Java course that was part of my degree and a lot of R work that I did during my Master's. I scored very well in both, but we're talking maybe 20 weeks of on and off experience over the course of four years. By now, I hardly remember the syntax.
  • So far, I think that I've got quite a talent for coding, but only in the sense that I can pick it up quickly - I'm obviously not on par with anyone who is qualified. Frankly, in most regards I'm less than a novice. If you gave me any FizzBuzz-like question, I would expect to fail it. However, I can confidently Google my through Java or R until they do what I want.
  • My country is currently in lockdown due to COVID-19. I suspect that the best use of my time will be to get something on my CV that proves that I can code. An obvious example is a coding qualification, but money is short and it's barely legal for me to leave the house. This forces me to learn online. Furthermore, judging by early comments and answers to an earlier version of this question, there appears to be a consensus in the industry that a lot of coding qualifications aren't worth much and that provable experience is strongly preferred.

This leaves me with my question - where can I make proof that I can code without leaving the house or paying much money? A coding qualification would be a step in the right direction and I'd certainly like to hear about what good options exist, but I'd also like to hear about any thing that I can do to put something else on my CV that proves that I can code. For example, are there some projects that I could join or some smart things that I can do by making a GitHub account? For qualifications, I've heard Codeacademy suggested and for practical work I've heard Rosetta Code suggested.

So far, the answers have pointed out that a prerequisite to proving that I can code well is to become able to code well, which my admission to being a probable FizzBuzz failure goes against. In this case I admit that the answers are right. In fact, this issue is part of why I am asking the question. My goal is to be provably good enough at coding.

  • 4
    "My country is currently in lockdown due to COVID-19" this seems like as good a time as any to learn! If you want to start with some basic stuff, you can get Automate the Boring Stuff for free online to learn how to do basic programming and then go from there. – GammaGames Mar 31 at 19:59
  • 12
    Having a blog post or some code in Github goes a long way to prove you know the basics of programming. The blog post could be mainly in your strengths (mathematics) but showing how you solve a problem with code. The open source could just the code of said blog post, no need to make anything too complex or a library. – Francisco Presencia Mar 31 at 22:12
  • 3
    Open source is your friend! Contribute, create, learn, and put your GitHub or similar profile link prominently on your CV. Best part is there's usually no (formal) barrier to entry since FOSS relies on volunteers, and since even a small task takes time there are usually plenty of tickets that newcomers can handle. – CCJ Mar 31 at 23:55
  • 2
    I don't have enough rep to leave an answer, but to comment on all the answers recommending putting code in GitHub - that's not just to show that you have written code, but also so that you can learn how to use source control and related tools, which is at least as important for a "coding job" as knowing how to code. – Vicky Apr 1 at 8:56
  • 12
    I can confidently Google my through Java or R until they do what I want This is "guess-and-check" programming, and I guarantee you that the quality of code you produce this way will not be suitable for professional requirements. – J... Apr 1 at 13:43

11 Answers 11

254

Not to be rude, but if

If you gave me any FizzBuzz-like question, I would expect to fail it.

Then you can't code at all. The only thing fizzbuzz do is weed out candidates who cannot code.

If you want

reasonably respected coding qualification

The only thing you can do is get mileage. And lots of it. Implement small webapps, small prototypes, write toy games, perform data analysis of some public dataset, even competitive programming would help.

| improve this answer | |
  • 3
    Comments are not for extended discussion; this conversation has been moved to chat. – Neo Apr 1 at 12:36
115

Speaking as somebody who has been a developer and a team leader in in this industry for a long time now...

I don't care about your qualifications. At all.

When I have your CV in front of me I care about your attention to detail with the CV (spelling, layout, font consistency), and I care about demonstrable relevant experience.

By demonstrable relevant experience I mean: your relevant employment history (which I appreciate will be absent for you just coming out of education), but also your portfolio: projects you built that I can find online, with source code I can see.

So, hypothetically speaking, if I was looking at potentially inviting you in for an interview: I'd prefer to see "Built [application] [github link]" than a qualification I've probably never heard of and probably wouldn't care to research.

| improve this answer | |
  • 46
    @J.Mini how come you feared this answer? It identifies that you can create your own projects to demonstrate that you can code. Find a real world problem, solve it, commit the code to Github and link it on your CV. All of this is "free" and lets your potential employer see what you can do. – My Head Hurts Mar 30 at 20:59
  • 8
    @MyHeadHurts Because it forces me to go out of my way to find the right thing to do. If the answer was just "do this course here", then all that I'd have to do is sign up and work hard. With this answer, it's much harder to figure out my next steps. Where could I find someone who would accept my help? – J. Mini Mar 30 at 21:07
  • 18
    I would fail your interview because all my coding has been marked as "proprietary" and I can't show it to anybody. I can show you products I've worked on (although some are no longer produced). – Thomas Matthews Mar 30 at 22:11
  • 29
    @ThomasMatthews yep - most professional coders don't own the code that they work on and can't post it online. I don't put much weight on GitHub during evaluations - too many old college projects, forked examples of neural networks that play snake or predict stocks, random OSS forks that've never been modified, etc. I'd rather have you describe what you did, and hopefully be able to talk intelligently about it if you do get that phone interview. I will second that bit about attention to detail on the CV though - syntax is important in programming, and your CV is my only impression of you! – A C Mar 30 at 23:03
  • 36
    @ThomasMatthews If your code is marked proprietary, it probably means you have a good employment history, which is the other part of the interview in this answer. – Nulano Mar 31 at 3:04
49

This:

Due to my programming time at university, in a roundabout way, I've already learned.

Does not align at all with this:

If you gave me any FizzBuzz-like question, I would expect to fail it.

Do you know where FizzBuzz came from? It is meant as a quick programming problem to screen out those who cannot code at all so that the interviewer doesn't need to spend more time on them. It is a filter question to remove people who can't meaningfully code, not a sign of skill.

I can always learn after getting the paper.

This may depend on the country, but I could not see this being useful to you. SQL knowledge is easily tested in an interview, so most places do test it. You will need to actually know some stuff.

I would recommend this: https://www.coursera.org/specializations/learn-sql-basics-data-science.

  • It is an SQL course in the data field.
  • It is cheap (at least by Western standards as I am not sure where you are located). Financial aid is also easy to get.
  • There is a solid name attached to the program.
  • It will have a lot more structure related to work than a general "learn SQL" course from CodeAcademy.
| improve this answer | |
  • Thanks, I've edited my question to reflect my lack of real skill. – J. Mini Mar 29 at 16:47
  • @J.Mini regarding the CV question, do you know what kind of job you want? It would be very helpful if you posted a desired job posting or something. – Matthew Gaiser Mar 29 at 16:49
  • I'm working on going through some adverts so that I can be confident that I know what I want, but searching "statistician" or "data scientists" on a job board returns a lot of relevant results. – J. Mini Mar 29 at 16:53
  • 12
    "Do you know where FizzBuzz came from? " It was a child's game for learning numbers in the UK long before it was a computer program. – Dragonel Mar 31 at 18:19
27

Start a project.

Think of something you are interested in, that a code based solution would work well for (a simple noughts and crosses game, storing statistics of a D&D session, simulating rolling dice and reporting the results to a number of users etc etc etc) and then do it - put the code up on Github in a public repository, and learn. Improve the codebase as you go, committing new code regularly that shows progression.

Then submit some of the code to the Code Review SE (following their guidelines) and learn from the feedback.

Once you have reached a point where you can't take the project forward any more, start another project and do the same.

But the point of this answer is to encourage you to learn through doing and by doing you have a publicly available example of your ability that you can show off.

Do something new, challenge yourself, choose to do things the hard way - join dev communities (eg there are Slacks for .Net and Go, there are probably going to be something similar for Java or whatever language you choose to use) and interact with other devs. Seek and accept feedback, and grow as a developer.

| improve this answer | |
  • Do you know anywhere good working in a project with R? Practical experience with data counts for a lot, but that's not the same as coding in R. – J. Mini Mar 29 at 23:26
  • @J.Mini no, Im not an R developer so Im not up on the community or projects unfortunately. – Moo Mar 30 at 0:04
  • @J.Mini could you just pick a dataset and perform some analysis on it? Just as a “fun” project, but one that could spawn further projects. Perhaps do some analysis if COVID-19 cases and then do an interactive website about it and see where things go? – Tim Mar 30 at 23:50
  • @Tim That option has been brought up in a few answers. I just might do it. – J. Mini Mar 30 at 23:52
  • I would also suggest Code Review as a good resource. You can ask people to commend on your code and suggest improvements. – Aleks G Mar 31 at 10:38
20

It's easier to teach a violinist to play bongos than the other way 'round

Remember that anytime you worry about your coding abilities.

Coding is a thing you do need to know how to do. But it is not terribly hard, especially since computers and languages were invented by mathematicians. So the mindsets inherent in programming should come naturally to you.

The main thing about learning (especially post-school) is people learn when they wanna. You've got a confidence issue getting in the way, so you have a complicated relationship with "learning programming". Can you do it? Of course you can. You have to find the faith, or to be more precise, let go of the fear, so you can find a passion project within the realm of programming.

I have a saying about all these newbies with a garage full of used-once power tools. Power tools don't create or replace skill, they allow skilled people to work faster. That's what programming is all about; there's no further mystery to it. The core purpose of programming is to automate some task better not done manually. So find a project that lends itself to automation, and there should be plenty of those in mathematics.

| improve this answer | |
  • 17
    I like your analogy. Note it also has a flip side: most violinist are not very good at driving a rhythm. For a violin in an orchestra that doesn't matter, but as a sole percussionist in a small group it completely ruins the project. Likewise, there are plenty of good mathematicians/physicists etc. who sure manage to quickly learn to code, but when actually confronted with some responsibility in a software project they quickly turn it into an unmaintainable spaghetti-code hell. And this is especially a risk for somebody whose “think I can code” involves copy-pasting code from the internet. – leftaroundabout Mar 31 at 9:05
  • 1
    as a piano and guitar player, don't expect any miracles from me on bongos... I utterly fails at anything percussion related. While the mindset of math and coding have some overlaps (like breaking down large problems into smaller ones that you can manage), there are still significant differences and debugging code can diverge massively from troubleshooting an equation. The OP said he can google his way out of coding situations, but at what speed / productivity? – Thomas Mar 31 at 19:25
  • 2
    Brilliant answer - I failed first year Computer Science twice at university, due to an inability to code. Now I am older (and working in IT), I realise it wasn't that I couldn't code, but I didn't really 'get' why I was being asked to do something. More recently I have had to create scripts etc for my work, and I can do this, because it makes my life easier - I WANT to do it! That incentive to save me a lot of work means I can work through a project. It turns out I did learn quite a lot at uni, I just couldn't apply it at the time in that learning environment! – Gizmo3k Apr 1 at 7:54
12

I am a Data Scientist with a Mathematics Master's degree! I can share my own experience.

Do Kaggle competitions!. Start with Titanic first, you can have a look at other people's code to give you ideas, write your own code and put it on your Github. Then you can try other competitions. This will give you experience on "real world" projects. There are not ideal as it's usually a static dataset, and the data cleaning is done but it's a good starting point for Machine Learning.

Also as someone mentioned, learn how to use Business Intelligence tools. I would recommend Tableau or Power BI, as they are the most popular ones right now. I have learned Tableau by myself using a Udemy course (wait for the $10 promotions), it's really easy if you are already used to Excel/pivot tables. You can then publish a dashboard on Tableau Public that you can share with recruiters. If you don't know what to put in your dashboard, there is a challenge called Makeover Monday that releases each week a dataset, you can use that dataset to build your dashboard.

SQL is a must, I don't know the course but you should try what Matthew Gaiser mentioned.

Learning about Cloud computing can be useful, though not as important as the other stuff. Probably not the best time right now but Microsoft does free in-person training in big cities for "Azure fundamentals" and gives free vouchers to take the certification. Keep an eye on Microsoft events website, they might become online events considering the situation.

| improve this answer | |
  • 1
    As a data scientist myself I put little to no stock in Kaggle competitions from a hiring perspective. As you point out yourself, they completely ignore the less sexy practical parts of data science. And those are the parts where general coding knowledge is often the most useful. – Max Mar 31 at 15:45
  • @Max: Aren't Kaggle competitions sort of equivalent to FizzBuzz, but for data scientists? They show a minimum of understanding. They don't get you a job, not even for a junior position, but they do get you an interview. – MSalters Apr 2 at 15:50
8

Having a degree in Mathematics is no trivial thing. A lot of people can code, but only a small minority of these people can easily translate a mathematical problem into code, and that is very often a crucial question in sectors like fintech and automotive. What's more, it's known that when someone studies Mathematics, one also has to get an experience in programming. So I believe you shouldn't worry so much about what your degree can prove to your future employers. Of course that also has to do with what kind of job you're looking to find. For example, it will be relatively easy to get a job in the above sectors. Now as for your question how to prove your knowledge, there are of course some certification serivices like codeacademy or google (checkout https://cloud.google.com/certification/data-engineer some years ago google provide courses and certs for a specific tool for free, now I don't know if there is still such a thing).

But my personal advice is to pick a problem in your field (it doesn't matter if there are existing solutions for that, you don't need to build a company out of it) that you are deeply interested in, select a technology stack you wish to learn and create a prototype of a solution to that problem. You can of course use the way others solved the problem but the important thing is to code it yourself. Give yourself a time schedule and get to where you want to be. As a data scientist you can get sources like the ones here https://www.data.gov/ or here https://data.europa.eu/euodp/en/data/ (found them here https://www.forbes.com/sites/bernardmarr/2016/02/12/big-data-35-brilliant-and-free-data-sources-for-2016/#4b5a37f1b54d) and manipulate yourself around. This whole process will provide you with some basic coding skills, or at least remembering again what you forgot, with some understanding of the field you are planning to work at (you 'll surely meet obstacles and challenges you haven't yet thought of but are regular in the field and well known to your future employers, so that will prove useful in an interview) and with something to show. You can even claim that this work was done as a freelancer and you can't disclose the customer.

This suggestions come from my own experience. While I have a degree in computer engineering, I never used it in my home country but later I moved to another country and decided to use the degree. Even though I had never worked as a developer before, I had created two personal projects and had become reasonably skilled at least at a junior level in the technologies I selected. And I managed to get a well paying job relatively fast in the country I moved to (well there was a very good market for developers here, so it wasn't that big of a challenge). I wish you good luck and always keep in mind that if you invest yourself in something, there is no way you won't get the fruits out of it.

EDIT --- Guys you are right about the lying part. The thing is, personally, the first app I decided to create was something useful, functioning and in my fields of interest (a Rest app for a specific industry branch). I offered the app to someone already known to me, that had a company, where the app could be useful. I didn't ask for money (the app was working but without the pretty stuff), I just offered the app for test use for a couple of years with the hint that if the app was useful, we could arrange the payment issue. That was by no means misleading as I truly needed to test the app in productive environment and I truly did that in the following years. I didn't even ask for a payment, but after that time period I was offered a small but not indecent amount, which I of course accepted. While you are perfectly right that lying is no thing, if someone creates something with solid quality criteria (as if it was a request from a client) then the distance from it being truly in the hands of somebody else for productive use can be sometimes pretty small. But no, no lying is necessary, I stand corrected.

| improve this answer | |
  • 8
    I agree with almost everything in this answer, but would not recommend lying. There is nothing wrong with saying "I got some programming practice during isolation. Here is some code I wrote." – Patricia Shanahan Mar 30 at 7:21
  • 6
    I almost upvoted this. The thing that kept me from upvoting was this: "You can even claim that this work was done as a freelancer and you can't disclose the customer." Don't lie. Don't ever lie. It doesn't matter how skilled you are if you aren't trustworthy. This is especially true if you are dealing with data or statistics that businesses use to make decisions. – David Cram Mar 30 at 14:58
4

Two additional points:

A lot of what professional programmers and Data Scientists do is interact with systems like Spark, Docker, Git, GitHub*, Power BI*, SQL Server*, Jupyter Notebooks, Azure*, AWS. Each of these is extremely popular and there's tons of free learning content on, even for the ones that are pure cloud services. And there's always a spot on a team for someone who is a strong technologist, even if they aren't the strongest coder.

The other is just Learn Python. It's an important language going forward for Data Science, Data Engineering, and general-purpose programming. And there's tons of free material. Start from scratch, or take something you did in R and re-do it.

And and you can start with a super-simple Python project and get to the point where you can discuss Python Virtual Environments, Docker Image Creation and Deployment, Migration from Pandas to Spark Data Frames.

*shameless plug

| improve this answer | |
  • 3
    And again we're reminded that microsoft bought out GitHub...Embracing open source, I see.... – Lio Elbammalf Mar 31 at 14:36
  • 1
    All good points but... maybe overwhelming to learn 6 new techs and Python. I'd say pick Git/GitHub first, commit SOMETHING. Then build from there. – josh Mar 31 at 15:43
  • @LioElbammalf Ive been promised the Extend and Extinguish now by the Slashdot crowd for nigh on 20 years. Still waiting. Time to end this stupid political anti-MS stance thats based on behaviour from 30 years ago and accept that MS changed. – Moo Mar 31 at 22:11
4

There's a mix of good and bad advice in the answers already, with few actionable items to work from, so I'll focus on what you can do right now and without spending any money, or as little as possible.

Here's a list of sites that teach you coding for free. I have used some of them and I'm affiliated with exactly none of them.

Learning:

GitHub

Get yourself a GitHub account. It's free, you can play around with some of their online editors, and you can share stuff you've made. Many places look specifically for GitHub accounts when looking for developers. I've linked to my account so you can see what mine looks like. I haven't done much with it, though. Post anything you want to share the source code for here, and people will be able to easily see it. This is not a hosting site, so it won't run your code, just store it.
https://github.com/computercarguy

CodeCombat

I've never used it, but the premise looks good.
https://codecombat.com/

17 of the best online coding courses

This is a list of 17 different sites that offer online coding resources. Some are free, but some aren't. It covers what I'm trying to do here better than me, and I'm not going to copy & paste the article, in case they make useful updates.
https://www.creativebloq.com/web-design/online-coding-courses-11513890

CodinGame

This is a really fun and free way to learn coding. All the graphical interface is done for you, you just have to use basic programming concepts to solve the problems. There's a wide variety of challenges, from really easy to really hard, and in a wide variety of languages. Not only are there site provided challenges, but users can provide their own challenges, so there's an ever growing amount of things you can do, try, learn, and have fun doing. I've also linked to my user account to show what I've done with it.
https://www.codingame.com/profile/40cc0ecd21fa0060c59f2fb560b9a6695602602

RoboCode

This might be beyond what you're looking for, and I haven't used it, but it seems interesting. There doesn't seem to be any fee and fighting your robot against others just seems to be a Reputation Points kind of thing.
https://robocode.sourceforge.io/

ClassCentral

I haven't used this, but it seems to be a massive list of free online school-type classes to take. Some of them appear to have a certificate of completion, and some of those require payment for the cert, but not the course itself. Apparently, those courses are working on the "in-app purchase" idea of free to play/use, but pay to get recognition of successful completion.
https://www.classcentral.com/subject/programming-and-software-development
https://www.classcentral.com/subject/game-development

There's far more sites out there than I can realistically post here, but hopefully I've given you a good place to start.

Hosting:

If you do any websites or things that can be shown in a browser, you'll need to get some hosting space. That can get pricey really fast, but there are low cost or even free hosting options out there. However, there's a lot of limitations to these as well as quite a few irritations and problem these sites have in an attempt to get you to upgrade to a paid account. Here's two articles that attempt to discuss and review these sites, for better and worse. Again, I'm not affiliated with any of the sites or articles listed below.

7 “Best” Free Web Hosting Sites (2020)

14 Best Free Web Hosting Sites (2020)

Just to show an example, here's my personal online portfolio. I need to redo it, but you get the basic point. There are far better portfolios out there than mine.
http://intensecomputers.com/portfolio/

| improve this answer | |
  • If the idea is to learn, I'd recommend getting a cheap or free virtual server and setting up the hosting yourself e.g. Digital Ocean, AWS, Google Cloud, etc. With that said I don't think the OP had web design in mind. – Jon Bentley Apr 2 at 0:54
  • I can't answer, so I'll comment here, as the most closely related. If the OP can really code already, there are several sites that offer puzzles, challenges, or just ask for idiomatic code snippets. Posting on projecteuler.net, rosettacode.org, or similar sites can show what you know. I like Project Euler especially, because it's a little harder to cheat, and you don't get to discuss solutions with other participants until you have a working one. – Quantum Mechanic Apr 6 at 12:32
3

The advantage you have over other candidates is your mathematics. Mathematicians can learn to code, but generally speaking computer science graduates mathematical ability is on a steep downward trajectory after graduation. I should know I am a physics and computer science major and can barely do math 30 years on from university now just doing commercial coding.

It is important for you to brainstorm a small, doable project that demonstrates your ability to solve real world, mathematical, useful problems that people will pay money for. You may be able to engage with academia to find such a project. The trick is the size. I'm sure there are academics that exist that have small projects they haven't been able to secure funding for and you can do it for them for free in exchange for a reference. Obviously the project can't keep you tied up for years, it has to be 3 months tops for a seasoned professional, as it will take you a lot longer.

God luck with your quest

| improve this answer | |
  • I was a double major, math and CS, and from observation: No. A lot of my fellow math majors did not have any programming aptitude at all (but were good mathematicians). Our basic curriculum had mandatory intro level CS for math majors (literally Python 101, same class as the CS majors took) and most of them barely squeaked through. Even the ones who were computer literate had difficulty with "computer thinking", especially coming up with efficient algorithms. The ones who actually were good, were generally double majors with the understanding that CS paid the bills. – user3067860 Mar 31 at 18:01
  • Good grief, when did "can learn to code" mean "are always able to code" – user114216 Apr 1 at 8:37
  • I mean at the end of the semester they still did things like just copy-paste the same thing a bunch of times because they couldn't figure out loops. Or, "couldn't do FizzBuzz"...even with hints. – user3067860 Apr 1 at 13:06
2

Frankly, a lot of job openings read like they want unicorns who somehow are fresh graduates that have mastered statistics, general coding, and database management.

This isn’t as rare as you might think. A few online courses will give you all the general programming background you’ll need for an entry level data science job. Combine this with the statistics knowledge from your degree and you’ll be in good shape.

My goal is to be provably good enough at coding.

The only way to become provably good enough at coding is by practicing. For motivation, think about why you want to work in data science. What kinds problems are you interested in solving? Think of a project you'd like to work on and then come up with a plan. This usually involves:

  1. Data collection. There are numerous publicly available data sets but if you can't find what you need or you want to take things to the next level, consider learning to scrape data directly from the html source code of websites.

  2. Preprocessing. Figure out how your data needs to be formatted for the type of analysis you need to do. Develop a strategy for dealing with missing data points. Build some nice looking visuals to explore/present preliminary findings.

  3. Analysis/inferences/predictions.

Publish your results in a visually pleasing form, be it a slide deck, a nicely formatted Jupyter noteboook, an interactive web interface, etc. Include a link to the project as well as the underlying source code (Github is typically the standard) on your resume.

The main purpose of these exercises is to build up your knowledge but it helps to have something to show at the end.

| improve this answer | |
  • A few online courses will give you all the general programming background you’ll need for an entry level data science job. - such as? – J. Mini Mar 30 at 21:48
  • @J.Mini My point is, they're probably not looking for advanced algorithm design. For example, if they say "knowledge of Python," they most likely mean "can you effectively leverage existing libraries," not "can you build a random forest class from scratch." – AffableAmbler Mar 30 at 21:54
  • I'm hesitant to endorse any specific course or program but I've done some from DataCamp, Udemy, and Coursera and I always learn at least a few new things. – AffableAmbler Mar 30 at 22:00

You must log in to answer this question.

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