Ask HN: Would you prioritize learning WebGL as an aspiring junior developer?

4 points by HamwakHall ↗ HN
Hi HN,

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 ] thread
WebGL is not a skill I'd put high on your list. Really knowing Javascript and learning how to be productive is far more important. WebGL IMO is still niche to specific use cases and doesn't have a broad appeal, so the positions you are seeing are likely a microcosm of the overall job market.

If 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!

1. Nothing wrong with wanting to make money.

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).

Yeah, sorry, didn't mean to come off like I was denigrating other bootcampers for wanting to make money. Just meant that I didn't get into developing for the gold rush—that I care about the work itself.

And thanks for the advice! Building small things sounds good; I should set some goalposts for myself to that end.

I've been a professional engineer for over 15 years now and have been working in the games and simulations space for about 5.

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.

Thanks for your thoughts! And for your offer to talk—I'll absolutely take you up on that.
What positions are you looking at where you're seeing WebGL and Unity frequently?
Jobs at design firms, 'creative studios,' those sorts of things. WebGL more than Unity, but definitely both. Part of it seems to be the result of a big VR/AR push, going off of the job descriptions. This is all inference, though.
I'm seeing a dramatic up-tick in companies wanting WebGL content to be built, either in-house or externally. WebVR is only going to accelerate this trend. So, sure, picking up skills around WebGL content creation should be a safe bet but avoid learning WebGL at a low level. Tools like PlayCanvas are there to help you get excellent results in a fraction of the time - you're much better off learning that.
GL is one area where just using a high level library is not going to help you master it. If you intend to use it as a black box, well you can use anything that wraps GL in your domain of choice (games, simulation etc).

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 branded technologies change with the breeze. This is not progress, or an emergent property of progress so much as it is by design (but that is a completely different conversation).

The best investment of your time is in the fundamentals; the things that don't change or change very slowly:

                  Stats: Useful in both data science and machine learning
             Algorithms: Duh
  Differential Geometry: must-have if you're a graphics/games guy
          Discrete Math: Good stuff for dealing with machines that process things in bits.
         Linear Algebra: Comes in handy in so many different problem domains.
      Ethernet + TCP/IP: It's not going anywhere.
  Hardware/Architecture: Still running a von Neumann architecture last I checked. Things go 
                         much more smoothly when you know what the physical limitations 
                         and bottlenecks are before you start coding.
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.