Ask HN: What new development technology in the last 3 years is worth learning?
23 comments
I would say the serverless model in general, is going to take off (it already is) really fast. Infrastructure as code, security as code. Big data, machine learning, neural networks/deep learning is taking off so without doing a PhD, at least high level awareness of the field is definitely worth learning, from Spark to Tensorflow, it's good to have familiarity with the field.
Understanding JWT and how it works as it seems to gain momentum.
Angular2, React, Vue I think are all worth learning and playing with as each developer will have a different taste. It looks like React is getting a lot of traction everywhere.
ES6, Promises, Async/Await, TypeScript, Babel, WebPack etc are definitely worth getting familiar with.
Understanding JWT and how it works as it seems to gain momentum.
Angular2, React, Vue I think are all worth learning and playing with as each developer will have a different taste. It looks like React is getting a lot of traction everywhere.
ES6, Promises, Async/Await, TypeScript, Babel, WebPack etc are definitely worth getting familiar with.
I really hope to see TypeScript take off more outside the angular community. It's life changing.
the vision is great, but last time I checked (september) it was dependency hell.. definitions that didn't fit the actual code, definitions at npm, github, definetlytyped and so on.. will be great once the ecosystem stabilizes
React Native is gaining a lot of traction for cross-platform mobile development. My company has started to transition to RN over Xamarin for our enterprise app development.
Functional languages have begun to gain popularity and coverage as well.
On the frontend Elm is excellent. On the backend Elixir and the web framework Phoenix offer top notch developer experiences.
If you have experience in the dot net world... Dot Net Core is shaping up to be a revolutionary rewrite of the dot net ecosystem. It's fast and lean, as well as cross-platform.
If you are into lower level languages, Rust & Go have picked up a ton of steam in the past few years. Until recently they have been stuck in the systems level programming niche, but Go especially is beginning to take hold for API and more "front side of the backend" development.
Functional languages have begun to gain popularity and coverage as well.
On the frontend Elm is excellent. On the backend Elixir and the web framework Phoenix offer top notch developer experiences.
If you have experience in the dot net world... Dot Net Core is shaping up to be a revolutionary rewrite of the dot net ecosystem. It's fast and lean, as well as cross-platform.
If you are into lower level languages, Rust & Go have picked up a ton of steam in the past few years. Until recently they have been stuck in the systems level programming niche, but Go especially is beginning to take hold for API and more "front side of the backend" development.
.Net core seems really cool, but I don't see it getting anywhere for a while. Most of the enterprise is still using .Net standard. It is near to impossible for me to get a job working on an ASP.Net Core codebase right now, because everyone seems to still be using .Net standard.
Fair point. For enterprise the transition will likely take 3-5 years minimum before Dot Net Core really catches hold.
But for startups or faster moving enterprise shops, Dot Net Core does present a more exciting (and flexible) ecosystem.
But for startups or faster moving enterprise shops, Dot Net Core does present a more exciting (and flexible) ecosystem.
Assuming that by ".Net standard" you mean the traditional .NET Framework, the irony in this comment is awesome.
.NET Standard is the newest of the new.
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introduci...
The terminology is getting hard to follow :)
.NET Standard is the newest of the new.
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introduci...
The terminology is getting hard to follow :)
Whoops! Yeah, all this is sorta making me put off getting into the Microsoft Stack.
Interesting. What is preventing them from upgrading? I ask because I was thinking of picking up .NET Core as a stepping stone to one day transitioning to a Microsoft-based skillset (I'm a Ruby dev). If it's proving to be unpopular within the .NET community then I may reconsider.
Enterprises generally don't upgrade anything unless someone convinces them it's necessary. They don't want to follow the bleeding edge of tech, they want to follow the most stable/secure tech with the largest pools of talented workers. Hence the popularity of Java and .NET at the enterprise level.
Picking up .NET core would make a great start to transitioning to a Microsoft-based skill set. That's generally the way those skills are gained - by starting with the latest available to the platform and working backwards as necessary. I started down the path with .NET 4.5 and don't think I've had but a small handful of opportunities to utilize the features in it because most of the servers I work with have .NET 4 as the latest version.
Picking up .NET core would make a great start to transitioning to a Microsoft-based skill set. That's generally the way those skills are gained - by starting with the latest available to the platform and working backwards as necessary. I started down the path with .NET 4.5 and don't think I've had but a small handful of opportunities to utilize the features in it because most of the servers I work with have .NET 4 as the latest version.
Most enterprise's on .NET are windows shops. There is very little incentive in my opinion to run .NET core when you're a windows shop as it doesn't provide any real-world benefits/features yet that are beyond what you get from the full .NET framework. .NET Core's story as it stands is making .NET properly cross-platform. If you don't need cross-platform at the moment you don't net .NET core in my opinion.
I think the reason that migration isn't happening faster is because of the dependencies a project may have that don't yet support .net core. That one PDF or SAML library that's on full .net only prevents the move.
I wouldn't say it's unpopular, just not ready yet. Most .Net development is for corporations and they tend to be conservative about new technologies.
>React Native
now also NativeScript and up and coming Weex (React Native for Vue, built by alibaba)
now also NativeScript and up and coming Weex (React Native for Vue, built by alibaba)
I'm excited to check out Weex... but I find NativeScript to be terribly buggy and slow compared to React Native. Have you had a positive experience with NativeScript?
I do see a surge of interest for Elixir but I don't see the same for Elm. Where do you see it gaining traction?
Mind if I ask why you chose RN over Xamarin? I'm currently going a similar decision and would love to hear your thought process.
Iteration speed is the main reason. Our devs can develop, test, and push tweaks absurdly fast with RN. Most of our applications are CRUD apps shooting the data to web.
There's nothing wrong with Xamarin. We have a few apps still maintained in Xamarin. But I find developing UIs and even the general data flow to be better in RN. Perhaps I just prefer JSX and the Redux pattern.
I find that Xamarin is still better documented and it's easier to find help than with RN. But we tend to live on the bleeding edge a bit.
There's nothing wrong with Xamarin. We have a few apps still maintained in Xamarin. But I find developing UIs and even the general data flow to be better in RN. Perhaps I just prefer JSX and the Redux pattern.
I find that Xamarin is still better documented and it's easier to find help than with RN. But we tend to live on the bleeding edge a bit.
It depends on your definition of "worth learning". People are replying, rattling off laundry lists of technologies that are "taking off" and "getting traction" but that doesn't necessarily mean they are worth learning.
To me, learning is a time / long-term-benefit trade-off. You're giving up your precious and valuable time now to get something that you believe will pay off in the long term. I'd love to learn everything under the sun but I only have time to learn a few things. So, I will spend the time where I think the biggest payoff is. A bucket of 30 slightly-related but "hot this month" technologies is a lot of cost for unknown benefit.
If you asked this question 20 years ago, there was a similarly-sized laundry list of hot technologies one could have learned, but I'd argue only a few really would have resulted in lasting long-term benefit. C++ was probably one of them. Linux was probably one of them. HTML probably. WebTV? Probably not.
To me, learning is a time / long-term-benefit trade-off. You're giving up your precious and valuable time now to get something that you believe will pay off in the long term. I'd love to learn everything under the sun but I only have time to learn a few things. So, I will spend the time where I think the biggest payoff is. A bucket of 30 slightly-related but "hot this month" technologies is a lot of cost for unknown benefit.
If you asked this question 20 years ago, there was a similarly-sized laundry list of hot technologies one could have learned, but I'd argue only a few really would have resulted in lasting long-term benefit. C++ was probably one of them. Linux was probably one of them. HTML probably. WebTV? Probably not.
If you're interested in computer vision, rather than using OpenCV you should learn about convolutional neural nets. The field is exploding right now and anything you learn is potentially applicable to a wide range of problems, even outside of computer vision.
You may get skeptics who scoff at the new approaches and say you should learn traditional computer vision or machine learning first. I strongly believe these people are wrong.
You may get skeptics who scoff at the new approaches and say you should learn traditional computer vision or machine learning first. I strongly believe these people are wrong.
Upvoted because I think you are very correct.
I would expand this to include machine learning in general, with a healthy dose on deep learning architectures.
Specific tools/tech:
* Python and C++
* TensorFlow (and TensorBoard for vis)
* Keras (soon to be part of TensorFlow)
* Theano (not as popular as the previous two, but look into it)
* CUDA/CUDNN
Per the last one - if you're going to be playing in this sandbox, get used to using NVidia's tech; AMD for some reason isn't there yet - though they do have some stuff. Maybe it's a lack of marketing or something.
If you want to get your toes wet a bit - check out:
http://playground.tensorflow.org/
Finally - there's been recent research on using deep learning to create and enhance deep learning networks - so for all I know, in the future a developer role in deep learning may not even resemble an actual software development gig...
I would expand this to include machine learning in general, with a healthy dose on deep learning architectures.
Specific tools/tech:
* Python and C++
* TensorFlow (and TensorBoard for vis)
* Keras (soon to be part of TensorFlow)
* Theano (not as popular as the previous two, but look into it)
* CUDA/CUDNN
Per the last one - if you're going to be playing in this sandbox, get used to using NVidia's tech; AMD for some reason isn't there yet - though they do have some stuff. Maybe it's a lack of marketing or something.
If you want to get your toes wet a bit - check out:
http://playground.tensorflow.org/
Finally - there's been recent research on using deep learning to create and enhance deep learning networks - so for all I know, in the future a developer role in deep learning may not even resemble an actual software development gig...
Are there any resources you recommend for learning convolutional neural nets?
I would love to recommend this Stanford course,very beneficial.
http://cs231n.github.io/
http://cs231n.github.io/
Agreed, cs231n is a great course. For neural net information less specific to computer vision I would also recommend looking up video lectures from Nando de Freitas and/or Hugo Larochelle.
I also have to put in a plug for Geoff Hinton's Coursera course. It's not for the faint of heart. It's essentially a graduate level college course with the commensurate required time investment. It's getting a little old now but it was my introduction to neural nets and if you want to learn from a pioneer in the field it's still a good option in my opinion: https://www.coursera.org/learn/neural-networks
I also have to put in a plug for Geoff Hinton's Coursera course. It's not for the faint of heart. It's essentially a graduate level college course with the commensurate required time investment. It's getting a little old now but it was my introduction to neural nets and if you want to learn from a pioneer in the field it's still a good option in my opinion: https://www.coursera.org/learn/neural-networks
A clear, quick high-level overview is: https://www.youtube.com/watch?v=FmpDIaiMIeA
From an infrastructure perspective: Docker, Ansible or Chef, Kubernetes, any public cloud (AWS), the HashiCorp stack (Terraform, Packer, Vagrant, Vault)
The Unity game engine married to HTC Vive is really easy yet powerful. I'd recommend that.
What are the best resources to learn this? I got a vive and downloaded Unity, and gave up after I realized how much work it will be for a simple game. I got to a point where I see the controllers and can grab a ball and drop it. But that required a couple of you tube videos and tons of snippets... Did it mature since it just came out? any good resources / starting kits (I don't mind paying a little for good courses / starter packs / game engines / plugins)
You have to remember that game development is really programming + 3d modeling. Idk if you know 3d modeling but I feel like some programmers (mostly game hobbyists) ignore this part of game making and then are surprised why their games look the way they do.
+1 on this. I had taken catia classes in college and have built a number of models in different programs for 3d printing. But building models for games is WAY more difficult. a AAA level gun can take weeks to build and model.
If you're looking for models and assets to get started with, the Unity Asset Store really helps. Many of them are free and the ones that aren't are reasonably priced.
VRTK is your best friend. It's a third-party Unity asset that you can use to get yourself going really quickly.
https://www.assetstore.unity3d.com/en/#!/content/64131
Get the asset and watch those YouTube videos.
https://www.assetstore.unity3d.com/en/#!/content/64131
Get the asset and watch those YouTube videos.
[deleted]
Swift.
The best tool in your toolbelt. You could easily build apps for the desktop, mobile, server, watch, tv, linux, etc. It's the digital clay to build whatever you want to build. Your imagination is the limit.
The best tool in your toolbelt. You could easily build apps for the desktop, mobile, server, watch, tv, linux, etc. It's the digital clay to build whatever you want to build. Your imagination is the limit.
Is there still no official compiler for Swift on Windows? How are the unofficial ones?
Official compiler? What's wrong with https://github.com/apple/swift
Sorry, meant for Windows.
[deleted]
Not a swifter, but there looks to be one: https://swift.org/compiler-stdlib/
React Native, Tensorflow, ESP8266, Elixir/Phoenix, Discord, Docker/Kubernetes.
I'm not a HW person, how do you use ESP8266 (this is the first time I'm hearing about this)?
https://en.wikipedia.org/wiki/ESP8266
https://en.wikipedia.org/wiki/ESP8266
We use the ESP8266 and ESP32 at my company for really quick, cheap prototypes. It started out as a way for us to add wifi to a microcontroller, but now we just use it as the microcontroller itself. We use it for all kinds of small hardware devices, sensors, and actuators. Its pretty fantastic to be able to prototype cheaply in microPython and then later port the board and code to C/C++/Rust when we need to go to production.
How often do this microcontrollers fail at HW level? You buy always from the same provider? Which one? (If you can share it, no problem otherwise)
I'm not an EE on our team, so I can't be sure, but I do know it happens. I don't know what they do to keep quality up. Even if they do fail, they're cheap enough that its not a problem to replace the whole sensor. There are also fail-safes so that nothing mission critical can happen if a few things go down.
Maybe a dumb question, but why is porting it necessary?
You might not know what features you really want and writing it in microPython lets you try it out faster. I think that the chip they eventually might run it on might also be different.
Sorry, I should have been more clear. I mean why is it necessary to move off the esp.
ESP is cheap and good enough for a lot of things...but there are plenty of projects where we need something smaller, lighter, faster, more power efficient, etc. If I don't need WiFi, why have it sucking up battery? Most (nearly all) of the projects we do use other long range wireless protocols. WiFi is just nice for prototyping. There are lots and lots of reasons to move from one board to another or to build your own.
As far as MicroPython goes, same thing. It's great for prototyping, but it's still somewhat hackey, slow, not that memory efficient. It doesn't need to be for its use case...but for production ready sensors I need to be sure to work the best they can off the shelf, I'm gonna write that in C/C++ or most likely Rust (if there is an LLVM backend for the chipset).
As far as MicroPython goes, same thing. It's great for prototyping, but it's still somewhat hackey, slow, not that memory efficient. It doesn't need to be for its use case...but for production ready sensors I need to be sure to work the best they can off the shelf, I'm gonna write that in C/C++ or most likely Rust (if there is an LLVM backend for the chipset).
This looks really nifty, gotta check it out.
To start on OpenCV and deep learning and image recognition you should check out http://www.pyimagesearch.com/ I've found his tutorials and books to be very good.
- Serverless architecture
- Immutable architecture via Docker & containerization in general
- React & React Native
- Most of the fully-managed services on AWS... a lot of them are turn-key for things that used to take a lot of overhead
- Blockchain
- Immutable architecture via Docker & containerization in general
- React & React Native
- Most of the fully-managed services on AWS... a lot of them are turn-key for things that used to take a lot of overhead
- Blockchain
Here's our stack, I like it a lot and I feel like its fairly progressive without being too hip-for-hipness-sake:
Android: Java -> Kotlin
iOS: ObjC -> Swift
Web App: React + Coffee -> React + ES6 (Backbone models)
Website: React/ES6/Redux/Babel/Webpack with server rendering
Backend: Clojure at the core; Python for heavy number crunching
Android: Java -> Kotlin
iOS: ObjC -> Swift
Web App: React + Coffee -> React + ES6 (Backbone models)
Website: React/ES6/Redux/Babel/Webpack with server rendering
Backend: Clojure at the core; Python for heavy number crunching
Speaking as a sysadmin, definitely ansible. (Yes, it's over 3 years old, but it certainly blew up in the past 3 years.)
Sometimes it's hard for me to believe we run everything on Docker and Ansible now. These things barely existed a few years ago, and here we are running full on production with them. Blew up indeed.
So yeah, I guess I'm seconding Ansible, and adding in Docker as well as many have done.
So yeah, I guess I'm seconding Ansible, and adding in Docker as well as many have done.
Is there any discussion about replacing Ansible + Docker with Nix? As someone looking to get into DevOps it seems like Docker solves the namespace/dependency-isolation problem, Ansible solves the reproducibility problem. Nix seems to solve both.
I haven't messed with nix, but I've used guix, which I think nix is a similar concept to. It's basically ansible on steroids, with every aspect of the system defined declaratively. Guix at least isn't quite "there yet", but it probably will be before too long...
[deleted]
https://nodejs.org/en/ and http://electron.atom.io/ Node is the server-side of JavaScript and Electron the cross platform desktop app (also JS and compatible with node). People have a lot to say on the subject of what is worth learning. I learned ASP/Perl/Java and I am not using them today, I still love them to bits, but there is no time/space for it today. Worth learning just may mean "what will be fun to use", meaning "what can you grow with today, that will take you to fun places in 2027". Can you see a future without the Web Browser? Can you see a Web Browser without the language that enables the Browser today? To be fair, ask is JavaScript evolving? And it is. ES6 is OK, it is the right path to take. Promise/let/const/Class and the arrow functions have fixed a lot of it. HN had RxDB on the front page today: https://github.com/pubkey/rxdb I paused when looking at "..for these plattforms" which listed: browsers, nodeJS, angular/ng2 (TypeScript), react, react-native, ionic, cordova / phonegap, nativescript, electron.
TLDR: ES6 and its surrounding environment.
TLDR: ES6 and its surrounding environment.
Clojure & ClojureScript (over React)
- tensorflow
- ESP8266
- ethereum
- software defined radio projects
- ketamine as an antidepressant
- https://www.addgene.org/vector-database/
^ note, I just think these are all technologies that have yet to reach their true potential
- ESP8266
- ethereum
- software defined radio projects
- ketamine as an antidepressant
- https://www.addgene.org/vector-database/
^ note, I just think these are all technologies that have yet to reach their true potential
[deleted]
C++14 and C++17.
Looks like, most people here answer to the question "What tech stack are you excited about right now?".
I would second the serverless idea as well.
Also one thing that is going to be of incredible value, getting a friendly UI to the crypto currency / smart contracts world.
Tough selection but will pay off dividends if you get it right
On the front-end React and Redux would be excellent to learn. I'm also a big fan of EmberJS. If you don't already know Java, adding that to your toolbox could be very helpful if you ever want to end up in the enterprise world.
[deleted]
[deleted]
Not limited to web programming; OpenCV and other technologies are neat too!