gleem said:
I think
@rkr could have some valuable insights/advice for you.since he/she seems to have some experience in/ knowledge of data science.
Thanks for the tag.
berkeman said:
BTW, usually when you are looking at job postings, they will specify which programming language(s) they want experience in. What have you found so far in your job searching?
I think that this post answers your question. If you already have a set of firms you're applying to, they're in the best position to tell you. You'll have firms that prefer React to Angular, Ruby to Python, JVM (Scala, Java, Groovy) to C (C++), functional to imperative, Julia to MATLAB, R to Octave, C to Fortran.
Revature looks like one of those modern hybrid recruiting + code camp firms that make a profit from referring candidates to employers. They're incentivized to teach you because the cost of instruction is much lower than 1 successful referral, which is usually 15-30% of your first year guaranteed compensation, and firms may prefer to work with them because of a track record of placement or the foreknowledge that they're doing a more active part than simply running a LinkedIn search. There's a few respectable ones like this that only take PhDs and have high placement rate at FAANG firms, but I don't know much about Revature myself.
Here's how I think of maximizing your employability, in descending order of importance:
1. Most interview processes focus on your knowledge of algorithms and data structures. Be good at solving these in your go-to language.
2. Be good with at least one (i) imperative language that has (ii) class abstractions, (iii) within the "top 20" (search TIOBE or Stackoverflow surveys). This is means one of Java, C, C++, C#, Python, Ruby, Swift or Go.
3. Pick a language where there's low activation energy for you to do fun and meaningful projects. Project experience is generally more important than knowledge of a language and its syntax per se, unless you have a niche job involving compiler or interpreter design. There's no point picking the sexiest and most popular language if you get bored of it fast and/or get little done in that language.
4. Familiarize yourself with a basic set of modern development tools: debuggers, distributed version control (git, mercurial), a decent text editor (vim, emacs, sublime, VS Code, Atom), basic UNIX/UNIX-based utilities (cd, ls, cp, rm, grep, head/tail/less, seq/awk etc.). These pay off in productivity over the course of your lifetime, and no point being amazing at everything else above and showing your interviewers that you work in Windows Notepad.
5. Once you're done with all of the above, invest some time in something orthogonal - databases (schema design, SQL), async programming, coroutines and parallelism (nodejs, F#, Haskell, Erlang, Clojure), web development frameworks (React, Bootstrap) and so on.
Only thing I may add is that my advice contradicts with the approach that most web development bootcamps take - which is to just straight into a LAMP/MEAN stack. I think that it's easy to pick that up in step 5 so you'll get there, and I strongly believe that you learn a lot of horrible habits by starting out in a JavaScript-centric world - so I would avoid that if I had a few months of extra time buffer.