3 ms·
I think it's matter of personal taste, and depends a lot on which domain your project is in. (Web, mobile, desktop, scientific, big data, machine learning etc..
by eranation 13y ago
I think it's matter of personal taste, and depends a lot on which domain your project is in. (Web, mobile, desktop, scientific, big data, machine learning etc...)
My preference (since I do a lot of JVM work) and first recommendation is Scala, it has good libraries for all of the above, web, scientific, big data, and even Android development (and all Java / Clojure libraries you can find, as well as Jython, JRuby and even with Java 8, some Node.JS clone). Another reason I like it is that it let's you write both in a functional style and in a object oriented style without compromising or enforcing either. (it gives you a nudge towards functional style when possible, but let's you write imperative and OO code with the same ease). Cons - a bit long compile times (bearable for me) and some say it has a "too complex" type system, I think that for most programmers the type system complexity doesn't really have any impact.
If you like dynamic languages, I'd try Clojure, it's been very popular here and from the little I played with it I appreciate it's simple syntax and way of thinking. As others have mentioned your background is mostly imperative / OO background and Clojure is a great way to venture into functional programming (especially if you need a JVM language)
If you don't need a JVM language, try Haskell! (same reason - learn some functional programming paradigm for great good)
Out of the above 3 you can find paying jobs, but I have a feeling Scala will render more openings (though usually with Java experience requirement as well)
If you aim at Systems programming, I'd try d / Rust rather than C++.
If you want web orientation, Python and Ruby are a must (sorry) Ruby is a nice language once you let it grow on you, you'll get used to the pipes.
If you are into scientific programming, Python, Julia and even Scala are good choices.
If you want to get a fast high paying job - depends on where you are located, if in SF, go with Rails, Django, Node, knowing the framework is as important as knowing the used language (Ruby, Python and JavaScript respectively)
If you are in Atlanta, stay with the .NET stack or pick up Java.
In NY Java will serve you well (also in SF, but perhaps in less startups and more Google / Twitter kind of companies)
I think Java is good to know even if you hate it, it's everywhere (and with the new Java 8 it's almost bearable again to code in it)
My last point is that the programming language is the least of a developer's concerns. A developer needs so many more skills than knowing language X spec by heart. Things like SQL, Linux, Git, HTTP, HTML5, CSS3, Good design and coding standards (read the pragmatic programmer / clean code / code complete etc...)
And most important - interview skills and other soft skills.
All of the above are way more important that the language of choice IMHO. (I'm sure you have all these, but I think that the impact of which language to go with next has much less weight in making you a great developer than what people usually seem to depict. E.g. I don't see often a "which soft skills should I pick up next" or "which general design book should I read next". I think it's because programming languages are more interesting :) (at least to me) and simpler to define. They have strict rules, and you either like it or not. General programming skill and soft skills are so hard to quantify and not easy to explain I guess. But I work on myself to try and spend more time improving these, than learning yet another language. (I fail at this too often though)
- mattkrea 13y agoI'm actually strong with most of those other items you mention (admittedly only the basics with Git because when I code its mostly me committing to my own repo). Consumer-facing design has been one of my weak points but as far as system management, server maintenance, etc I manage cloud deployments of several (some my own, some not) for the company I work for out in PA. That side of technology I am very comfortable with. It was only two years ago that I started coding but I've seen my own code evolve over time--significantly I might add. I think I will end up getting into systems programming. I've got the rust compiler installed but it does seem a little young.