Ask HN: Is it a waste of time to teach yourself data science without a degree?
I see a lot of people teaching themselves data science and machine learning but it seems that in the real world you won't be allowed anywhere near such a position without having a degree in the subject.
This is opposed to regular programming gigs where you can get work based on a portfolio.
Also there are efforts to commoditize common methods and algorithms by wrapping them up in APIs and SDKs.
So is it a waste of time to learn it on the side with the hopes of getting a data science job ?
143 comments
[ 3.8 ms ] story [ 188 ms ] threadP.S. It's called ’statistics’.
The question you're asking is essentially "what's the point of going to the gym if I won't ever become Mr. Olympia".
The comment above responded to the OP by treating his/her question as trivial and followed it with a snarky "P.S. It's called ’statistics’." remark.
P.S. @qubex Some people don't have degrees and would actually like to work in data science regardless. The OP is asking about the practicality of that scenario.
We have statisticians (yes, plural) on my team who have published in Nature, and plenty with other backgrounds.
Even ignoring the data engineering side, there is plenty that statisticians don't do or know which is useful data science.
Take the two attitudes to p-tests, or what a "reasonable number of features" means. You drop the Jeff Dean "consider training models with billions of features" quote on a statistcians desk and see their eyes open.
Statistics is great, but data science is just as much programming as it is stats.
I wouldn't rule it out, but it would be useful to have accomplishments to point to, or a personal recommendation.
We have a stack of maybe 25 well qualified PhD data scientists waiting for interviews. It takes a lot to get to the head of that line.
No, it's not. Read Breiman's "Statistical Modeling: The Two Cultures."
http://www2.math.uu.se/~thulin/mm/breiman.pdf
"Statistics" has largely been concerned with the "data modelling culture" Breiman talks about; a lot of data science is focused on algorithmic modelling, things like neural nets, random forests, and so on. A lot of these techniques have been refined outside of modern statistics because of statistic's focus on data modelling.
This also ignores all of the things that fall outside of the purview of the modelling steps altogether, things like data cleaning, data engineering, and so on. All of those are properly "data science" but often fall outside of what's in a statistics textbook.
If you are going to do data science, you should know statistics. You should know a lot of it. But that is far from the only thing you should know.
As to your larger point... yeah, well, jobs allow people to eat and get health insurance and all that, so it's understandable that OP might want to be able to do those things and not just apply it for his own pleasure. My take on that is that it's hard, both to acquire the skills needed and to signal to employers that you have them. If you're going that route, you need to build a solid portfolio of work. Kaggle might be a good place to start.
After, meet your boss and tell him something like "I can make this process 10-20% faster with a 3 month projects"
If he accept, you will have data science real world experience in your CV and it will increase your weight on the CV stack when you apply for data science jobs.
For example in my company there would be plenty of opportunities for applying machine learning or computer vision. Nobody knows enough to know how to approach these problem so nothing happens. We could use somebody who knows how to move forward.
It's possible to maybe help another team and sequel that into a data science job internally, but outside, forget it.
If you are like AWS and say that using logistic regression is machine learning, then yes, you can teach yourself data science. Learn SQL, read a couple of books on logistic regression, use some open data for building a couple of models. There are many companies where you can have a decent job and an easy living with SQL and logistic regression on your tool belt.
If you say that data science starts with automating stock trading or building the intelligence of self driving cars, than no, you can not teach yourself data science. You will need at least one degree. Or more.
Why not? What is it that prevents anyone from learning anything without getting a degree? I disagree with your statement, I think it might be harder, but I don't think anyone "cannot teach themselves X".
Just design models that deliver business value.
1. Company hires this data scientist, but regulators are skeptical of the efficacy of his/her implementation. 2. Companies adopt this notion that everyone can be a data scientist, build self driving cars, and the cars turn out to be a very error prone, imposing harm.
Businesses have to set a bar somewhere to ensure their expected return on data scientist is positive. Just like pharma execs & investors vet their scientists, highly complex data science positions will require convincing the players (investors, regulators...etc.) that your guy is legit. A pharma company would never endorse Walter White as their scientist responsible for delivering drugs.
But the problem is that you're competing against job applicants who already have a degree in machine learning. So it will often be the case that you're lucky to make it past an initial HR screen. If they want to interview ten people, life is easier for them to pick ten who already have the right piece of paper.
However, to your point, "you can't teach yourself" and "you can't get a job just by reading a book" aren't the same thing. I'm not so sure you can't get a job by teaching yourself machine learning and making your own self-driving toy car or some other fun project, though.
The people with advanced degrees want to protect the value of their investment.
As others have noted, the reality is you can generate a ton of value to business by "learned at home data science". Will you be doing cutting edge ML research? Of course not. But 99.9% of everyday problems can be solved with simple tools.
(and it's one of the best self driving software out there)
Of course you need to study(a lot), but a degree is not required.
I think the widely accepted definition is "Statistics, but on a Mac"
I'm new to the startup community, e.g. still in school but excited about startups, is there a general aversion to Windows and why is that?
1. Start-ups love OSS. OSS loves NIX. 2. Mac's just work (mostly). 3. Cult of Apple.
1. OSS is generally free. Windows software, esp. on the server side, tends not to be. For a start-up it means you might need to invest some sweat but you can spend your cash elsewhere (typically on hires or feeding yourself). OS X being a NIX allows easier porting of OSS than Windows.
2. Apple tech has a reputation for "just working" and continuing to work. Windows is still perceived to need a spring cleaning to reinstall it every year or so to keep it purring. Apple being a closed ecosystem from end-to-end doesn't have to support as much random stuff as MS. It keeps the problem space narrow and presumably that results in higher reliability.
3. The cult of Apple. Apple has a brand that is perceived as creative, fun, enlightened, whatever. MS is viewed as big enterprise. , which is often the Goliath that start-ups are looking to slay.
--
Anecdotally one company I was an early "many hats" hire I standardised on Macs because it meant less effort for support and licensing was easier.
If someones Mac was acting up/it fell down the stairs we could swap the drive to another machine and not faff with driver setup. If someone left the company, we could easily transfer the licenses which isn't always as straight forward between Windows and OS X.
One drawback is that we had one developer who preferred Windows. He was probably less productive than he could've been as a result. I would generally advocate to allow developers to pick their hardware when they start and take it when they leave. Once the company was big enough for a full-time IT support staff we diversified but it's a tradeoff either way.
Only suggestion I'd make is learn to use the Command-Line with your tools (where possible) and practise writing scripts to optimise your workflow. If you do that it'll make the transition to a NIX a little less foreign.
Isn't it a little presumptive telling others they can't teach themselves something? Or do you mean to imply that they can't get a job without a degree? Those are different things.
Their programs express job placement as a perk of graduation.
https://www.udacity.com/nanodegree
Educating for the "jobs of the future" is one of Udacity's goals, data scientist being one of those jobs.
Note that only selected nanodegrees come with the job placement guarantee, and that the guarantee seems to essentially mean a refund, if you fail to find a job within 6 months. https://www.udacity.com/nanodegree/plus
As a sidenote - the deepest (meta) learning I've gotten is that paying for the course made me much more engaged and determined to invest time in understanding the material and completing assignments.
The first three months are basically a walkthrough of Peter Norvigs AI book, and the second part will be about deep learning.
I'd say if you don't want to work for a large, respected company first, it's a waste of time. Your degree is your entry ticket to your first job, not more. Later on, you can even work at Google if you want - just make a great product and get acquihired.
Three tips on what you should do instead:
1) BUILD something and show off your skills. Like, continuously. Always have your own challenges, do something about them, put your code online on Github. Host it so it can be seen and played with. Work towards a goal and learn what you need to learn on the side.
2) Focus on applying to companies not listing a degree in their job ad. You'll see there are quite a lot of them.
3) Don't focus on your lack of a degree in any interviews. Don't deny it, but just don't make it seem a deal. Often times, people won't even ask.
I wouldn't necessarily say that.
I don't have a degree (well, an Associates that ain't worth much). I've been employed as a software developer for 25+ years now (since I was 18 years old).
I wish I had pursued a degree, though.
Back then, when it came to my education, I was pretty lazy - at least when it came to more structured learning. I liked to pursue stuff on my own, though, at my own pace. I've done well in that manner.
In 2011, I "discovered" the idea of a MOOC: I took Andrew Ng's "ML Class" - and successfully completed it. That led me Udacity's CS373 course in 2012 - which I also completed successfully.
That isn't to say I didn't struggle with both of those: I had no experience with probabilities and stats, and I hadn't touched linear algebra since high school. But with the help of resources on the internet and elsewhere (along with help from others on the internet, and fellow classmates), I managed to complete both successfully, and I learned a lot in the process.
Last year, I started Udacity's Self-Driving Car Engineer Nanodegree. Today, I'm working on term 2. We're dealing with localization - basically learning SLAM, which was covered in the CS373 course, too. Prior to that, we learned about how Kalman filters (standard, EKF, and UKF) all worked to integrate sensor data. In the first term, as part of one of the projects I implemented NVidia's End-to-End CNN to drive a virtual car around a track.
All of these experiences, and others outside of all this, have taught me that perhaps I cut myself short by not pursuing a degree when I was younger. My current plan is once I finish this Udacity course, I'm going to get my BS online, then work toward an MS in comp sci. It isn't a matter of "I think I can do it" - I know I can do it. It's more a matter of absoluting proving it, and likely learning a lot more along the way.
I don't think a degree is a waste of time, unless you intend never learning more stuff as you "grow older". If your only goal is to "make money" and all that, maybe it is. To me, though, had I gotten my degree back then, I believe I would be much, much further along today. I can't change that, though - so all I can do is move forward.
Why? I'm in a similar boat, but don't really regret it or wish I had done things differently.
Same. I am also doing the course, just finishing term 1 (in the Feb cohort). Although I have a degree, taken around 23 years back. But I think, its the always learning attitude, thats more important.
As of now, I'm not exactly sure, as to how I can utilize the learnings in CarND nanodegree, but I'm enjoying learning about stuff, all the same. Had never coded in Python before I started taking Udacity courses, so learnt Python along the way, and that's just one of the several things.
For me, I find, I am not satisfied with knowing some things at a high level. Until I'd started taking these courses, I'd always get confused between the terms AI/ML/DL for e.g. also other buzzwords would be learnt in some vague way, and soon forgotten. Now the minimum value-add of this, is that that I can distinguish between BS/hype or not, when read articles on ML/etc. Also have advised some friends on what it can do and what it can't. That's a big achievement by itself to me. And lastly although, I am pursuing my own startup, so not actively looking for a job, but if some opportunity arises, I will seriously consider it. Because, heck, why not?
Companies are looking for what you as a candidate can do for them.
Self-study or taking a class signals some level of "I tried to learn this thing." So that's a start.
Even better is "I built X", where X is obviously based on skill you learned. In which case you can omit the class because you have proof of learning, not just trying to learn.
Even better is "I provided business value V to my employer by building X." Because now you're showing how this skill is useful to someone else. So using skill at work is another thing to try.
Ideal is you write the above, but emphasize V (or choose between multiple things you can list) in a way that suggests you can help the needs of the particular company you're applying to.
So there's having the skill (which is good), but there's also how you present it to show it will provide value (also important).
More on the contrast between having engineering skills and marketing yourself here: https://codewithoutrules.com/2017/01/19/specialist-vs-genera...
Definitely not my experience. I can count on one hand the number of employers who didn't want to proceed because of a lack of degree.
Remember, this question isn't about general CS.
> Remember, this question isn't about general CS.
What's your perception of data science vs CS, especially with respect to hiring?
I'm in a similar position right now, but every time I think about being subject to the bureaucracy again I shudder and choose to write interesting blog posts instead... It's not about the costs or the time; I feel like my dignity as a professional (and possibly even as a human being) would be threatened. It could be because of the way the higher education is set up in my country, though.
Would you mind elaborating on this?
It's hard to imagine without experiencing it firsthand. How could it be that big of a deal? But it is: you're treated not as a customer, not as a partner, but as a lowly supplicant in all your interactions with the institutions. You're expected to just "put up with it for a while" (like 3 to 5 years...) and drink some vodka if you get frustrated a bit too much.
http://cdn.oreillystatic.com/oreilly/radarreport/06369200290...
So no, not futile.
Also many jobs that aren't data science jobs per se offer many opportunities to do data science type things. Get a job at a company that works with a type of data you find interesting, and that perhaps doesn't have a dedicated in house data scientist, and every time an interesting data related challenge shows up just go "I have a good idea on how we can approach this" (assuming you actually do). Next thing you know people will coming to you with their data science problems and before you know it you have several years of data science experience on your CV.
Like this Open Source Data Science Masters: http://datasciencemasters.org/
something to ponder: you just have to know enough to actually deliver on something management wants, and know more about it than everyone else at the company.
But, honestly, I think it is very difficult to learn data science by yourself. Someone with experience teaching you will make a huge difference. Data science is different than programming as in programming you can see step by step what is happening, in data science most of times it either works or doesn't. And you know it after your algorithm has run through all data for at least an hour. It is really hard to learn this way, you need hints that only someone with experience can provide to you. Moreover you can do a lot of mistakes without knowing it, for example, when cleaning the dataset people use the whole dataset to fill gaps and them split it for training and test. It feels right but that it is a huge mistake that invalidates the whole experiment (because you use information from the test set in the train set, to fill the gaps).
Also to add to that most of the work in ML is feature engineering, data cleaning, testing and building pipelines which all require a good software engineering background.
I do a lot of the grunt work of getting the data sourced, cleaned and ready and am called the 'data wizard' and other such annoying names.
What's frustrating is I can run the last lines of code and read and understand the output of the last step, but as the original question asked, management would prefer someone with a phd or masters in customer analytics to be the expert of the data output.
And of the few job listings I've seen, most have high standards (PhD or min. Masters, x years of experience) with old companies (banks, car companies).
What's funny is that a lot of people in my circle in Canada are actually doing work for companies outside of the country (U.S., China...)
I'm not trying to learn about ML for purposes of employment, It's somewhat relevant to my current job, and I may have some interest in using it on my personal projects. But mostly I'm just learning for the 'fun' of it :)
I don't have the time, money, or inclination to pursue a MS in data science atm (My current 'formal' education consists of a BS in Comp Sci and an MBA), but I may go back to school when the kids are grown, more for personal edification than anything else, however. A big shift in career, from software engineer to 'data scientist (or whatever they call it)' is probably not possible at my advanced age (37).
I agree that it is "high level" and glosses over (purposefully) the nitty-gritty details of the "black boxes" for the most part. I say this as someone who took the first incarnation of the course, which was known as "ML Class" in the fall of 2011, before Coursera came about.
Despite it being high-level, though - this is what one of my "classmates" was able to create, about halfway or so thru the course:
http://blog.davidsingleton.org/nnrccar/
In 2012, I completed Udacity's CS373 course (https://www.udacity.com/course/artificial-intelligence-for-r...).
Today, I'm currently in the second term of Udacity's Self-Driving Car Engineer Nanodegree (the current lesson I'm on actually is a part of CS373 - so it's a kind of review lesson for me - heh). I'm having a great time learning about more in-depth understanding and knowledge relating to self-driving vehicles. Much of the learning can be applied to other areas of ML as well (learning how to use and abuse TensorFlow and Keras, for instance).
> A big shift in career, from software engineer to 'data scientist (or whatever they call it)' is probably not possible at my advanced age (37).
Don't let that stop ya! My plan after finishing this Udacity course is to actually work toward getting my BS and maybe MS in Comp Sci. By that time, I'll be well into my 44th year of age. I don't know if any of this will lead to a different direction in my career, but that isn't something I am really worried or planning about. I'm currently happy with where my career is; it pays the bills and allows for some fun, too. But if it should lead in another direction, so be it! I figure having this knowledge can't hurt me as a employment candidate, and will likely be seen as a plus. Worst case scenario, it will make my hobbyist robotics projects more interesting.
I figure I have another 20 or more years in me doing software development (assuming it remains a career option, of course); I personally have met more that a few other developers that age or older who are still making a living at it. So I'm not ruling out the possibility of a lateral move toward something involving my knowledge of machine learning.
Good luck with your studies!
It never hurts to learn new things. Another HN poster suggested this channel for beefing up on linear algebra, and I absolutely love it [2].
[1] https://youtu.be/qWJpI2adCcs?t=58m
[2] https://www.youtube.com/playlist?list=PLlXfTHzgMRUKXD88IdzS1...
With that said, a lot of companies hiring for data science roles fall into the category of software startups -- larger companies like Google or Facebook are looking for specialists who tend to hold degrees. But at smaller companies, you can be more of a generalist and there, the old mantra of "show me what you've built" often applies. You could build out a data science career if you found just the right company.
By no means is it easy, but I wouldn't say it's a waste of your time (unless you have some incredible opportunity cost you're using up).
If you were to go about doing it, I found this blog post that can help you with your plan of attack: https://www.springboard.com/blog/learn-data-science-without-...
Even brushing up on probability and linear algebra has benefits. Your learning a skill set that you can use in other areas of life. Heck, if you have kids or will have kids someday, you will have the knowledge to teach them valuable skills.
The skills required for each DS role vary a lot. I wouldn't expect a cloud expert to have learned about the Hadoop stack or HPC workflows in school, at least not to a useful degree. The same goes for DBA or business analyst or data wrangler.
But statistics and ML lie at the other end of the spectrum. These roles require a hierarchy of formal skills that are rarely mastered outside of college. They're expected to keep up with the research literature or formal techniques, which almost always requires the math skills of an engineer or mathematician.
Remember, HR everywhere is technically clueless. If management doesn't tell them the precise set of skills needed for the job, they'll minimize risk and ask for more expertise and experience than is needed -- usually in the form of excess degrees or prestige or buzzwords. The best cure for this is to bypass HR and go straight to a technical manager who knows what s/he wants. That's hardest at large corporations, who tend to outsource their HR needs to the lowest bidder.
At a smaller company, a lack of degree will matter less. If you can convince them you know what they need RIGHT NOW and can learn future material quickly, that's what they want to hear. (That's probably what the bosses of the startup did).
Or if you're targeting a specific project, then if you can show (e.g. via Kaggle or an online portfolio) that you clearly have the needed skills and you're not just a script kiddie, that speaks a lot louder than a mere degree (especially if it's over a decade old).
Would a four year PhD, let's say in ML, be a worthwhile investment from a data science career point of view?
FWIW, I hire data sciency people all the time, and I don't care about PhD's. I think that the qualification means that someone was stubborn enough to finish, and can do (some) work independently, and that's about it.
The actual skills that I tend to like are the following: - data cleaning experience: this is the majority of the job
- scepticism, especially about one's own theories
- statistics and experimental design: you don't need to be able to prove theorems, but you should be able to follow them. Experimental design is one of the highest value skills in the world, and a lot of people don't have it.
- Communication skills: it doesn't matter what you did if no-one else can understand it
- For the avoidance of doubt, programming (not just SQL) experience (on HN, I would probably assume this).
Full disclosure: I have a PhD and lots of friends of mine in this area tell me that its very difficult to get the better jobs without it.
Those exist? Be careful, very few doctorates are short and well-scoped.
Source: three letter, several of my friends were 7+, masters or not.
Including Master's (which was when I did most of my graduate course work), I took about 7.5 for a PhD.
- Getting Phd is a long, unpredictable process that can take anywhere 4~8 years. Data Science may be hot right now, but it is not necessarily true by the time you graduate.
- You will pay a ton of opportunity cost doing Phd. For the same amount of time, you can earn so much money and learn on the job.
- Phd doesn't give you the real world industry experiences. I know a lot of fellow doctors who are trying to transition to data science but struggling.
I would say you should polish your programming skills and get hired as a software engineer in big data related field. Then involve in some internal data science projects and transition into data science.
yes, most likely they won't hire you for a "Data Scientist" position, but there are related jobs out there you can be qualified for if you have programming skills and understand DS stuff to some degree.
I've seen setups where a PhD with a "scientist" in his title would act as an architect/co-team lead with a senior engineer running a team of developers.
Someone has to implement DS' ideas after all and unless we're talking a really small team (or a jack of all trades DS) where DS has to write all the code himself - there is a need for developers with "some DS background" in those situations.
Don't get so caught up in the "degree."
I've met individuals with graduate degrees in computer science (i know OP asked for data science, but the overall point here applies to any field) that didn't hold a candle to self taught developers. If you're actually passionate and interested about something, you will become extremely well-versed in it. On the other hand, if you're not excited about data science, a degree with probably benefit you more than without one since it will force you to learn the topic.
In a nutshell, it's up to you to make yourself valuable and present that value to the world - a degree is just a shortcut for recruiters to filter on, but you can skip recruiters and talk to anyone in any company.