#Computer Science, What is the most valuable #programming language to know for the #future and why? on quora and shared on Forbes.com
Answer by Boz Bundalo:
This answer has been cross-posted on
UPDATE: I've updated with some stats since some people needed reasoning behind my claims.
The latest numbers show that consumers/mainstream audience uses more and more native applications and mobile devices and less web based apps and desktop. Desktop web usage (the main consumption of traditional web) is on the decline while mobile app usage is on the rise. PCs are being replaced by mobile devices and this trends is increasing at a rapid pace.
Desktop sales sharp decline:
Source: Comescore (Feb 2014)
IDC: "Smartphone adoption, meanwhile, increased 39%, according to research firm IDC. This trend will likely continue thanks to improved user experience on mobile apps "
VENTURE CAPITAL -> From an investment standpoint most of the investments are going into mobile devices/apps ecosystem.
A lot of people can see this clearly as well. Chris Dixon (Entrepreneur/Investor and former CEO of Hunch) puts in nicely :
"This is a worrisome trend for the web. Mobile is the future. What wins mobile, wins the Internet. Right now, apps are winning and the web is losing.
Moreover, there are signs that it will only get worse. Ask any web company and they will tell you that they value app users more than web users. This is why you see so many popups and banners on mobile websites that try to get you to download apps. It is also why so many mobile websites are. Resources are going to app development over web development. As the mobile web UX further deteriorates, the momentum toward apps will only increase.
The likely end state is the web becomes a niche product used for things like 1) trying a service before you download the app, 2) consuming long tail content (e.g. link to a niche blog from Twitter or Facebook feed)."
Facebook and Twitter's audiences are now mostly using them on mobile device and through their apps:
Twitter now has 75% of it's users accessing the service through mobile apps.
This was from late 2013, Twitter now generates 75% of their ad revenue from mobile.
Twitter, Facebook, LinkedIn and quite a few others have tried the HTML5/JS approach for mobile apps and developing complex applications and have failed terribly. They admitted it and all have native applications.
LinkedIn's Kiran Prasad (senior software engineer) said it nicely:
"We have definitely shifted from HTML5 to native. The primary reason for that is, we’re seeing that more and more people are spending more time in the app, and the app is running out of memory."
Segment starts 2:45:
But let's talk about languages. Java has a new revolution. Why? Because it is a solid language that covers a lot of things and has HUGE backing and support from the community and is incredibly mature. You can build back-end services, you can build native Android applications, you will be building applications for cars, for TVs, etc.. and you will be doing it natively with the APIs from new devices.
There is a reason why many big companies have started with other languages and back-end architecture and they eventually went back to Java.
Granted, Java is not perfect, but if you acknowledge that Android rules the world and the new devices and services come out, you will have far more work and opportunities with it. I would say a lot of people who have issues with some things Java, will tell you that Scala is better and I think Scala is pretty great. Twitter uses it.
I think knowing Java will also allow you to jump to other similar languages. Today we see that Apple is moving to Swift, C# is very popular with Xamarin that allows you to build real native applications with it and they are all very similar as they come from a C family.
I think a lot of people need to ask themselves whether or not they think Web apps will stay relevant or the native type applications with direct connection to hardware APIs will be the way forward.
All the statistics and what we are seeing are telling us that we are moving towards the latter. Native applications with the web services/cloud back-end.
This is only intensifying.
While I agree that you should understand general computer programming principles, design patterns, OOP and data structures I would tell you that you should learn the following languages for the next 10 years in this order:
1. Java (Java has matured so much and Java has some of the cool stuff like generics, lambda expressions, Improved type inference
If you look at job requirements across the world the demand has skyrocketed for Java (holds number 1 place), Objective-C and Swift now, C#.
You can see that the top five languages are all native (and for a good reason). Java is second to C only.
We are moving towards mobile devices, cars with apps, powerful TVs that will add even more functionality, home automation etc etc and this is a world where web as we know it has little place in unless it is a cloud and web services that we use to store/retrieve data.
And if you think about it, we went full circle, from desktop apps without connectivity, to web only approach and now we are coming back to smart devices with desktop/native type applications and we use the web for what it's really great for, network connectivity and less of front end usage.
I encourage you to watch the Forrester Research CEO George Colony talking at Le Web 2011 (everything he talks about is already happening now)
Good stuff starts 5:20 but I definitely encourage you to watch the whole video:
In conclusion, if you are going to be taking a language, consider this and go native all the way and you will have a bright future.