I am starting to get saturated with building regular apps and doing DevOps (some of them quite cool and challenging). So I picked up Rust to get into low level systems programming. It's chugging along, but I am yet to make something cool with Rust.
I also try very hard to have an exponential personal growth. It's not been very successful so far. I do keep learning but not at a speed I consider meaningful.
This made me think, should I go ahead and pursue a Masters degree in Computer Science? Specifically in my interest subject of Distributed Computing. Is it too late for me to pursue it? Is it even meaningful given my info above? Has anyone had success with learning something Masters level without external motivation?
EDIT: I already have a Bachelor of Engineering Degree (non US)
[0] http://www.omscs.gatech.edu/
Preferred qualifications for admitted OMS CS students are an undergraduate degree in computer science or related field (typically mathematics, computer engineering or electrical engineering) from an accredited institution with a cumulative GPA of 3.0 or higher. Applicants who do not meet these criteria will be evaluated on a case-by-case basis; however, work experience will not take the place of an undergraduate degree. The following are required for admission"
Never mind what you have done in the last decade or so, hopefully you got a CS degree and had a 3.0 GPA.
I could understand stating that instructors will not slow down for unprepared students, and that people with a low or missing GPA don't get to sign up for classes until after other students have done so. That makes sense. Denying admission is improper.
https://medium.com/@mycahp/thoughts-on-the-omscs-program-at-...
What's the cost of the entire program?
Even in those instances, I don't think any of them happened in the last decade or two. If anything it's probably more difficult than ever to e.g. impress the right faculty member and thus bypass graduate admissions these days (Lockhart did this after meeting Erdos at Columbia in the late 80s). The amount of bureaucracy has only increased over time. More importantly much of it has been systematically automated, so you longer even have a clear system for a human to bypass a requirement in exceptional cases.
I think it's also hard to make a really good case for it. I know someone who was admitted to Harvard at 16 years old. Upon admission he already had two full years of undergraduate credit completed through a gifted youth program at Stanford. He finished his bachelors degree before he turned 18 and received his PhD at 21. He didn't "need" undergraduate education in the usual sense of the word, but he still got it (albeit in a non-traditional way) before going to grad school.
It might sound harsh but when people like that exist and still get a bachelors degree, universities don't really have to make exceptions. There's just no pressure to do so, and in their eyes anyone without the qualification is an unknown quantity with an unfamiliar bureaucratic exception process tied to it.
Also, in my experience, you won't pick up a language by doing something unspecific. If you want to learn Rust, start a specific project which lies on the border of what you know; let's say - a HTTP proxy, preferable with some feature that you think is missing. You'll very likely fail to produce something more useful than what's out there already, but you'll learn more than what would by following tutorials.
Whether you should be pursuing an actual degree depends a lot on where you are and want to go -- but keep in mind that getting a degree is more than just taking the classes (learning environment, classmates, etc.). So, if you're primarily doing online classes alone, you might have a harder time than if you we're in a more typical university setting. So, find somebody in the same situation to use as a workout buddy!
HTH!
Once the ML promises hit the real world, where the demand for recognising cats is less acute, and datasets are much smaller (since they're so expensive to curate), it does get less sexy and glitzy. Specifically, I currently work on fraud detection at a government agency, using ML and graph databases.
We have some people who do the ML stuff full time, where I'm the back-up and sounding board (as in I'm the senior/mentor)
So, I wouldn't have been working there, doing that, if it weren't for my drive to learn on the side, I guess. ML is not my primary extracurricular interest anymore, but it feels good to know that I can code up a neural net, or discuss the tactics of building a model pipeline with (mostly) anyone.
I have recently taken on a Computer Science graduate who is doing a Masters in Data Science because we needed a good "All Rounder" with a focus on Data Science and Engineering.
- You have a bunch of money sitting around and want a structured environment to pursue your knowledge goals.
- Your employer will reimburse expenses and is supportive you pursuing this for a few years.
My wife was able to do the second option in her field and enjoyed the experience immensely -- she found school much more rewarding after having the experience of working and the wisdom of not being 18-22. :) But having a 75% reimbursement is what made it possible, there was no ROI to justify a huge financial outlay.
Also if there are particular courses you want to take it's worth contacting professors who have done that course in the past and make sure they don't have a sabbatical/retirement coming up. While this may not guarantee anything I have seen people disappointed by ending up in that situation where the particular lab ended up working on a major project and the number of courses available for master's students was less.
You need to have a plan for what you want out of your Master's and then choose to do it in my opinion, just assuming a Master's is going to take you to the next level betrays the fact that a Master's degree is usually a first tier true postgrad specialization, where a doctorate would be a second tier, and postdoc/principal researcher/etc would be what I consider a third tier of specialization. You have to do the due diligence to understand what you are signing up for.
You haven't mentioned anything about teaching/mentoring others, or hobbies. Maybe it's time to focus less on your job?
It depends on your motivation, is it to learn a lot about something you are interested in or is it to earn more money?
To clarify, masters degrees are about advanced learning about a specialised topic. Typically there is a capstone project which requires some research and a thesis. But for extensive research into a topic you pursue a PhD. The criteria being that you make a contribution to the existing body of knowledge. Whilst with a masters you learn the body of knowledge as it stands at that time of your studies.
If you expect to earn more, then you would first need to research the jobs in your area of interest and see if any require a masters degree. Some companies prefer industry experience over academic credentials and others are the other way around. It wouldn't hurt to apply for some jobs in your area of interest and see what the feedback is.
Edit: Education is pretty much free here, the only thing you’ll have to spend is your time.
And if you are the kind of person that can only be happy while you are personally growing, the motivation is learning in itself.
The hype has attracted manager like people who call themselves AI experts who have read a book on what AI can do and simply write blogs on the dangers of AI.
Most masters are still teaching degrees - you’ll learn and practice using things but I guess you do that daily anyway?
Maybe consider a MRes, MPhil, or PhD if you have a passion for creating things? I went back to do a PhD after working, but only four years in my case.
Personally I found doing a MSc in Statistics after 3 years of working to be incredibly valuable. I think part of it was it gave me permission to view myself as an expert (although you don’t really need a MSc to do that as you can tell by switching on the news lol)
And don't worry about 'exponential' personal growth. Linear growth is still growth and it feels better to succeed at a linear goal than fail at an exponential one.
After you have a BS you pretty much know how to study and what interests you, so you get much higher returns on time investment by picking your preferred subject and reading a few books on it.
And for exponential growth == Start medium level side project and dedicate yourself to grow number of users for it.
There will be tonnes to learn from a regular job.
Remember how, as a kid, doing the wrong thing was thrilling? For me, that's what enjoying learning is like and it does often start from a willingness to be wrong or fail (ever ridden a bike into a bush - not as soft as you think at high speeds).
For example, yesterday I ended up randomly understanding Godel's proof for his incompleteness theorem and it's significance because I was trying to find out why the validity of substitution/equivalence seemed to be an assumption of all logics (if anyone can point me in the direction of what I'm misunderstanding there, that'd be great).
Now, almost everyone I've ever met tells me I'm crazy and/or an arrogant asshole depending on context. It does worry me but not enough to stop because how I feel is like a slow burning version of jumping off a cliff.
It's scary and hard to get started but once you do, you experience something fleeting and hard to grasp and then a sort of calming shock as you hit the cold water and look up, somehow feeling relaxed about having a long way to swim to the surface.
(Bear in mind that I'm paranoid about checking for rocks before jumping and that is somewhat analogous to learning - some of what you do is swimming around at the bottom diving down to see how deep it is or finding a vantage point where you can see the bottom from. It's also hard to trust someone when they tell you it's safe. All of that features in learning for me as well.)
One of the things that happens if you do things like that is that you get fitter because you've been climbing up to the top of that cliff over and over. If you then have to do something a bit boring like, say, read the manual for Rust, it isn't very hard because you're stronger, fast have better endurance and are less likely to trip.
What I'm saying there is that you may have started at the crappy end of the experience :) Go have some fun, find a motive and then worry about it.
Re: distributed computing... If you want to do something cool, I'd suggest starting with Aphyr's blog and his Jepsen test suite.
This is written in Clojure, which is JVM based but has a javascript version, ClojureScript.
Lots of Clojure packages work out of the box in ClojureScript and last time I had a play the "Leiningen" package manager understood that and came to the party.
From there, you could adapt Jepsen to testing a distributed system of your choice communicating via WebRTC and a STUN server running in a serverless browser environment.
If you go straight to conflict-free-replicated-datatypes (CRDTs), I think that'd all qualify as cool - especially if you can automatically test them (I'd suggest spinning up multiple browsers using puppeteer).
Remember that composition still exists and it's possible to achieve slightly less abstract programming conditions by creating a hard dependency on a reasonable context that covers some of the requirements of CRDTs.
/endbraindump glhf
I think I read something about Rust having Capnproto and Emscripten compilation to web assembly these days.