I have tried to read the code of and contribute to Open Source projects like LLVM and MongoDB but its very tedious to get into. For almost the whole past year I haven't learnt anything new or atleast worthwhile. I tried getting into Machine learning but the Math was overwhelming.
What should I learn so that I can become competent for jobs other than web development?
EDIT: GitHub: https://github.com/ayushgp
As far as any employer is concerned, I should have at least something unrelated to web development to show for if I don't want to be hired as a web developer.
PS: I already have an internship in hand for the summer.
I work in Web Dev now. Know how much I knew when I got my first job? Nothing. I have a friend who works in Aerospace. Know how much they knew? Nothing. I have another friend who started at an interior design firm that builds custom CAD software. Know how much they knew? Nothing.
Just follow your interests and don't stress about it. No reasonable employer is going to expect you to be a wiz in their specific field as a junior developer.
In general it's best to compound your current skills and not go in a completely perpendicular direction to where you are going now.
Given that: - you are good in JavaScript - you haven't provided much filter of criteria - you mentioned a curiosity in machine learning - you care about job prospects and want a skill that will stay relevant
Have you considered data visualization? If you become a master at that, you can break into the higher level parts of machine learning/data science that require visualizing results to end-users/interested stakeholders. I'm good enough with D3.js to understand examples and create my own modified graphs, but I wish I had the skills to recreate all of the cool visuals you can see in their gallery.
Also last summer I interned as a front end developer at an analytics startup. My work there was to build prototypes of visualizations that were to be included in the product in the future. So yeah I have played around with visualizations as well. It's a pretty good field to get into as well.
GET http://ayushgp.me/ net::ERR_CONNECTION_TIMED_OUT
btw, machine learning is not about math.
Looking for a senior developer to work with, I would prefer someone with a breadth of knowledge over someone who just focuses exclusively on one thing. For example, it is no fun to explain basic Unix concepts to someone who you expect would have that knowledge. Of course, I would want good knowledge of web development, UI design etc., but things don't stop there.
Some things that look good to me:
1. Some knowledge of compilers, parser generators 2. Relatively decent Unix/Linux knowledge 3. Big Software engineering ideas and how to apply them 4. Big ideas in different programming paradigms and how to apply them 5. Low-level stuff: write some C code, tinker with assembly, learn about computer organization (you might be doing that already) 6. spin up a server and maintain it ... like an actual, bare metal server. deal with its problems. 7. Research and understand the pieces around enterprise systems ... a fun challenge is a trading system.
Even if you end up focusing on web development, coming in and saying something interesting about your breadth of knowledge and to utilize the ideas is always a good thing.
If you want help getting started with some open-source C++ projects, maybe include a link to your github or something in your profile so maybe someone will reach out.
You know node, great! Now how the V8 engine works, why it works like that? What tradeoff the designer did? Why?
You have used databases, great! How a database works? Why?
You know what is a web browser, great! ...
You know what is a compiler...
You can always go deeper and learn more.
Clearly being able to modify the V8 engine is way more valuable than being able to use V8 with node... Or at least if you can modify the engine it is a safe assumption that you can also use it...
Your question is meaningless without specifying what sort of job you'd prefer or what your interests are. There is no single set of things (other than "everything") you could study that would qualify you for all non-webdev jobs.
Echoing the commenter who suggested you learn C++, look at Haskell too. Of all the languages that I've worked in so far, Haskell is my absolute favourite. This free course got me over the initial hump in the learning curve: <http://www.seas.upenn.edu/~cis194/fall16/>