DEV Community

Discussion on: Do you think there is a language better suited for solving data structures and algorithms?

Collapse
 
bousquetn profile image
Nicolas Bousquet • Edited

If you only know javascript and want to get some "full stack" job and greatly widden your possibilities as a software developper, you should give a try to Java.

The language isn't the best, the most shinny or with the most hype. Yet it is quite robust, as the widdest echosystem and suppport of all languages right now (there libraries for everything), it is also the most used overall. This is very important. That where the most jobs, typically for backend or full stack dev.

For you to learn, the language is statically typed, is fine for algorithms, has extremely good support in IDE and comes with an extensive set of standards libraries. The building blocks are also much more robust and organized than what available in node.js.

I'd advise taking at least some coursera or equivalent course on java, try a few home project and importantly, get certified. Getting the 2 basic java certifications for Java8 will show a potential employer you know your job despite you having no diploma in computer science.

On the Java echosytem, the next steps for you would be then to learn the spring framework and dependency injection, likely with JPA, some DB and how to deal with Json/XML parsing to do some full stack project.

For the algorithms parts, a great book or great source online on algorithms and implementing them in java would do the job. Learning search algorithms, graphs, how a map work and so on...

At some point, if I were you'd I'd try to get a diploma in computer science and go to university. They'll teach you very interresting stuff that will deepen your understanding of the subjects, things that are not so easy to get otherwise like how to make your own compiler, the theory behind databases and how to design your data domain well, how a CPU really work and why not if you are interrested design a basic one, what BigData is about and how to get most of the data and so on... Software engineering, how to build complex product and maintain them and so on...

Maybe less in the US than in other places, but it would also help you a lot to get a significant income boost. It is not uncomon in Seatle to get 6 number figure 100K+ salary with a master degree in computer science for a job around Java with some experience. I know just a colleague that got a job at 160K at Seatle, well he is quite experienced, but that give you an idea.

Once you done all of that, you'll want to broaden you vision yet again, and let Haskell and a lisp dialect like clojure. This will give you new ways to do things that even if they are not applicable in most cases to your day job as languages with help you understand advanceds concepts and techniques that can be transposed to your day job.

Another way to go deeper, once you done all the rest is to really ensure you get statistics, data analitics and machine learning. This is were the future seems to be currently with the most interresting jobs. So that would be ensure you get basic maths and statistics right, specialize in machine learnings and learn languages like R and maybe scala with spark or python with the libraries specialized for data manipulation.