Ask HN: What is the best technology to learn right now?
11–20 of 70 posts
Re: Ask HN: What is the best technology to learn right now?
#12I'll throw my hat in here for learning Clojure. It's a modern Lisp that runs on the JVM, with a great community and awesome libraries. (For example, https://github.com/Engelberg/instaparse ) As others have mentioned, it all comes down to what you really want to do. I use Clojure both professionally (for web development, statistical computing/analytics software, natural language processing) and for fun on a daily basi…
Re: Ask HN: What is the best technology to learn right now?
#13Re: Ask HN: What is the best technology to learn right now?
#14Personally I moved from PHP CMS's (years ago now) straight into Python / Django and loved it, but I still kick myself for never mastering Ruby on Rails, as my experience has lead me to discover there are 5 Rails gigs for every Django gig, and being a Rails dev pays quite well these days.
If you build a solid foundation in Javascript and RoR you open yourself to a ton of opportunities, and you'll be able to adapt pretty quickly to any of the new tech on the horizon
Re: Ask HN: What is the best technology to learn right now?
#15I realize now that's not what you were asking for, but you might want to consider it anyway. If you have a PhD in EE, you should have sufficient math skills.
Re: Ask HN: What is the best technology to learn right now?
#16Learning how to build a web application from scratch is not an easy undertaking. Certainly there is the actual task of learning how to program from the ground up that is challenging but I will warn you of the more subtle challenges you will face. Existing packages, libraries, frameworks and more are there to help you but can be a crutch. Understanding the trade-offs of writing your own library verse using a preexisting library is important. The second problem is knowing how to parse information you find online. People learn new things and love to share those things online all the time. Tutorials and screen casts will likely be plentiful, but beware that there may be holes in what you are learning. A fantastic example would be a basic tutorial on storing information to a database--it likely will not show you how to sanitize the data. In my opinion learning how to build solid web applications should then follow a basic formula to overcome these challenges: Learn the basics of web programming, pick up a framework, and then seek knowledge where needed.
Stay away from a framework in the beginning. Rails, Django, and other popular frameworks are absolutely essential tools for building web applications but they abstract a lot of the little things. Not understanding the little things can make debugging tricky. It can also lead to security flaws in your code. A good example of the little things includes parsing form input, interacting with a database, and routing traffic to its intended destination. Having an astute understanding of the building blocks will help you architect, debug, and develop solid web applications.
Once you are comfortable with the basics and could build a complex web application without the help of a framework you are paradoxically ready to use one. I suggest that your first framework be one that is highly popular so you can find tutorials and help as needed. Rails or Django are fantastic to pick up. Since you understand the basics you can then focus on using the best practices that these frameworks declare in their documentation to build a web application that can scale and is secure. You will not need to handle what will now be the mundane task of parsing form input or interacting with the database.
Now that you are comfortable using a framework you can seek more relevant knowledge that is applicable to what you want to do. Perhaps you are hoping to build a web application that shows real time updates for game scores and so you look into advanced AJAX techniques (or web sockets) for feeding the data to the user in a lively manner. Maybe you want to tackle something truly challenging such as converting m4a formatted files into mp3 formatted files. Programming really gets fun once you start tackling challenges that aren't quite as well documented. From here you will find the material more advanced, but with a solid understanding of the basics and a good framework to keep the basics out of your way you will be able to commit the mental capacity required to tackle the more challenging tasks.
In the end my advice is to have fun and work hard. Don't skip the basics, but understand that they are not the end point in programming. It is similar to learning calculus in mathematics. If you do not have a solid understanding of algebra you will struggle more than you need to. Build trivial things. Re-invent the wheel. This is how to best learn.
Best of luck!
TLDR: Pick a language, learn it, and then find a relevant framework and learn how to wield it.
Re: Ask HN: What is the best technology to learn right now?
#17If you're interested in something like working at a startup... having advanced knowledge of Elasticsearch would make you a pretty desirable candidate.
Re: Ask HN: What is the best technology to learn right now?
#18Re: Ask HN: What is the best technology to learn right now?
#19Either JavaScript (and by extension, Node.js) or a mobile language (Objective-C or Java, pick the one for the phone you have). Python won't solve anything for you that you can't already solve between C or Perl. While learning that, learn a tool like RabbitMQ.
... unless you found Perl to be difficult to maintain, and C difficult to debug and monstrously low-level and segfault-prone for doing simple things like calling web APIs. When I first learned Python back in the day, even though I was a pretty decent C++ programmer and shell scripter, I found my internal "gumption" towards simple programming tasks increased tremendously, because I knew I could bang something out in Python and just have it work, as opposed to being sucked down into a debugging quagmire.
One could argue that C and Perl don't solve anything that isn't already handled by ASM.
Re: Ask HN: What is the best technology to learn right now?
#20If your goal is to become a programmer, I will advise you that regardless of the language or path you choose, you are in for at least a 1-2 year learning process in which you will learn a language, an accompanying toolset, and the basic set of skills required to debug and architect large, complex programs. You will also be learning a lot of terminology, which is indispensable for what I believe to be the main skill involved in programming, which is knowing how to Google things.
To answer your question directly: From my vantage point, the puck appears to be skating in two directions. Golang is a rapidly growing language developed by Google, and is considered to be one of the best amalgamations of features from modern programming languages. I highly recommend it. It has only been out for four years, so I can't speak to how approachable it is to a newcomer, but if your goal is to learn a language that will not become obsolete in 5-10 years, I think Golang is a good bet to make.
In the other corner, there seems to be a growing community about a language called Clojure. It is a little complicated to explain Clojure's appeal to non-programmers, so be warned that exploring Clojure is slightly "off the beaten path" compared to many "mainsream" programming languages like Java, Python, or Ruby.
In short, there is a language called Lisp which is highly regarded in the elite programming community as the best way to write software. In his seminal essay "Beating the Averages" [1], Paul Graham offers several compelling arguments as to why Lisp-based langauges (and programmers) are superior to other forms of programming. Since I am not a Lisp developer, I recommend reading his article, since I would probably butcher any attempt to explain its merits against other popular languages. Anyway, Clojure is a modern implementation of Lisp, has an incredible community, and appears to be gaining a lot of traction. Given your background, starting with Clojure might make a lot of sense. Rich Hickey (the creator of Clojure) is an incredibly influential figure in programming circles.
Finally, unless your goal is to write mobile applications, a rudimentary knowledge of HTML, CSS, and Javascript is required to be able to produce anything in our web-based world.
If you have any more questions, feel free to email me (my email is in my profile). I enjoy helping people navigate the confusing jungle of modern programming education, and I can point you in the right direction depending on what your goals and work ethic are.