Ask HN: Would you prioritize learning WebGL as an aspiring junior developer?
I recently graduated from a full stack JavaScript bootcamp in New York. I know that bootcamp grads are sometimes received less-than-warmly on here, so I just want to preface by saying that I didn't change careers because I think that it's an easy way to make a bunch of money, and I don't expect to be competing with people with formal degrees in CS. I have a degree in an unrelated field, discovered that I love programming a couple years ago, and attended a bootcamp because making a curriculum from online materials was a laborious process.
Now that I'm finished with the bootcamp, I've been filling in some gaps in my education, tidying up projects, poking into contributing to open source projects, looking for work, and learning technologies that either seem to be in high demand or that I find interesting. As you might imagine, this is a lot of stuff, and I've been feeling uncertain about what I should be prioritizing.
In particular, I've been noticing a surprising amount of positions indicating that applicants should be familiar with things related to 3D graphics—WebGL libraries like three.js or Babylon.js, sometimes even Unity. I find this stuff super interesting, but didn't expect to see it in these job descriptions and have little personal experience with it. I'd be happy to put some time into learning it, but only if that time is going to be well-spent re: short-term employability. If you were in my shoes, would you be learning WebGL? If so, what resources would you be using?
Secondly, more broadly, what would you be studying in general in my position? I understand that in my position I should probably mostly be focused on front-end positions. For those positions, should I just be drilling down into JS and leaving other languages for the future? What would you do?
Thanks for reading!
10 comments
[ 3.7 ms ] story [ 62.3 ms ] threadIf you want to be employable, study and know javascript, know your front end stuff solid. Don't worry about knowing lots of different technologies, know a few key things really well, like Javascript, html and CSS, with those alone you have good employability. Each company will have their favorite framework and you'll work with it, so knowing how to come up to speed on Angular, or Ember or choose your flavor is more important then knowing them initially. And the core ability to do that is being solid in the basics.
Good luck!
2. "Formal degree in CS" doesn't mean someone will be better than you. It might, it might not, depends on the job. Often it has no relation to actual job requirements.
A job skill that will serve you well no matter what you do: learning new things quickly. So instead of deep diving into one thing, maybe spend some time building a few small things with a bunch of interesting technologies. (Other comment about knowing basics is correct: knowing core technology is important prerequisite, do that first if you're not there yet).
Then you can tell employers "yes, I'm inexperienced, but look, I can learn fast, here's proof." You're pretty much never going to know the whole tech stack at a new job, so that matters a lot.
Another thing to focus on: learning how to build robust code (i.e. testing, both manual and automated). It's not exciting or flashy, but being able to say "and I can make sure my code actually works, and here's how" is worth a lot to smarter employers (though not all employers).
And thanks for the advice! Building small things sounds good; I should set some goalposts for myself to that end.
My advice to you: only focus on it if you really love it. The pay is (most of the time) not as good as what you'd get writing CRUD apps in the enterprise space.
The other concern is, WebGL is a really niche topic inside an already niche field. As someone that does a significant amount of games and simulations work, WebGL is still far too low-level to be of any real business use. Even with the expectation that things will improve in the next few years, you'll still mostly likely get the most bang for your buck using a game engine like Unity and letting it manage the "compilation" to WebGL.
If you're really passionate about games, learn a game engine and start building games. The "game" space is a really weird subset of CS disciplines and it'll help to get familiar with the entire production pipeline (coding, art, animation, behaviors, etc).
If you were really ridiculously passionate about low-level 3d programming, you'd either A) not be asking us for advice, or B) too busy playing with it to ask for advice. :)
With all that said, I'd love to talk to you about this industry and point you in the right direction if you're curious. My email address is in my profile if you want to know more.
However, what I have seen is that knowing the low level GL stuff is really important when you get stuck and have to debug your way out. Write your own shaders etc. Most recently I figured my way out of a tricky skeletal animation problem only because I knew the low level details as well.
My recommendation: Work through this book: [1]
I even wrote a scene graph in CL while working through this book and after learning SceneKit(iOS, macOS 3d framework). So I am backing up what I am suggesting:[2]
If you want to be in the graphics field in the long run, better know the low level stuff. This is just my 2$ thought. YMMV. And as @blister suggests, he is right that you need to pick the graphics domain as it is niche as compared to Web programming and the pay will be on the lesser side comparatively, especially if you are starting off.
My email is in my profile, feel free to reach out if you need any help from me in learning GL.
[1] https://capnramses.github.io/opengl/ [2] https://gitlab.com/cl-3d-graphics/cl-scene
The best investment of your time is in the fundamentals; the things that don't change or change very slowly:
If you go all-in on WebGL and get a job, keep an eye out for the next new hotness, because you will officially be on the treadmill then.