Ask HN: Which industries, domains, or programming languages will be top earners? - kevindeasis
======
eb0la
After all this time seeing web aplications taking over windows/osx "native"
applications, I guess we'll see more "native" apps in the near future. At
least for cases where latencies matter (like heavy editing).

For languages, I see right now strong demand for:

\- Python: as a first language of choice replacing Visual Basic or Java.

\- Scala: as an alternative for both Python and Java for big data loads.
Probably it could also work as an embedded language instead of LUA, but who
knows.

\- Swift and Kotlin for Mobile development.

\- Systems and embedded programming (aka building native binaries): GO and
Rust. Go looks very good since it was developed by the fathers of C and AWK
(Pike, Kerningan, Ritchie). Rust seems more complicated at first sight.

\- Javascript: plus some html5 (react,react native, vue, vue native, etc.) for
web+mobile agencies.

~~~
bloomthrowaway
> \- Python: as a first language of choice replacing Visual Basic or Java.

I don't see this happening in practice. Python has taken over the niche of
Perl/PHP/Ruby/Bash almost completely but traditional uses for Java are hardly
touched.

VB is dead, the only thing out there right now that seems like it may replace
Java is C#.

Scala gets a bad rap from most JVM devs, but Kotlin may be a contender for
Java replacement on both mobile and desktop.

Top earners? Likely to stay Java and C/C++ because they're not going anywhere
and they're harder to learn than most languages. Maybe Swift for a while too
because less people know it (because its Apple specific)

~~~
bb88
> but traditional uses for Java are hardly touched.

What are the traditional uses for Java that are hardly touched?

~~~
BjoernKW
Enterprise CRUD applications is one area where Java probably is still the most
widely used language. Particularly with relatively new frameworks such as
Spring Boot I don't see this changing any time soon.

~~~
bb88
Yeah... I think that's a fair statement.

I think the entire business CRUD segment is due for a massive disruption,
though. I'm beginning to think one language to rule the front end and the back
end is starting to make sense.

To that end, JS killed Java applets, and should have killed Python/Ruby on the
backend by now with Node.js. But it still hasn't.

~~~
bloomthrowaway
I don't like Javascript at all, even with all the linters I could find its too
easy to make mistakes. Too many old broken language constructs they can't fix.
Java's strongest sell has always been an extremely reliable platform, strong
typing, and solid standard libraries, things I also can't say about JS.

Typescript on the other hand is glorious. My favorite language now. Fixes all
the issues with using JS for large applications besides flaky libraries. I
still don't think its ready for server-side development, not until they add
threads (WTF is taking so long). When you're running on a 32 core system node
doesn't make any sense.

Yes, I know there's various workarounds like launching multiple copies of your
app, but that still limits parallelism on the app level and its pretty lame.

~~~
bb88
> I still don't think its ready for server-side development, not until they
> add threads (WTF is taking so long).

Having debugged deadlocking threaded code in production, frankly, I prefer
async/await style of code, which btw is in Typescript, Java, Python, etc.

For parallelism, there's concepts like python's multiprocessing (which I think
does it right) because it's easier to think about parallelism when the OS
doesn't constantly pull the rug out from under your state.

~~~
bloomthrowaway
I don't mind threads when they're done right. Every Java app server is multi-
threaded and I don't remember the last time I ran into deadlocks. It's best
for performance and readability to have both threads and async support. This
is achievable with some work in Java by using Comsat/Quasar

------
murph-almighty
Unpopular answer: anything that's about to become legacy. See COBOL
programmers.

~~~
mamon
In other words: Java? :)

~~~
ssijak
Java is going nowhere.

~~~
aldanor
Many mlocs of existing enterprise Java code aren’t going anywhere either (and
nor are the poor souls who maintain it all).

------
davidjnelson
A prominent VC who gave a talk I attended recently said 90% of the next wave
of tech is machine learning, and that Google is hiring all the people with
this skill set with very large compensation packages.

~~~
mehh
ANN are great for a certain domain of problems, and a domain we have not been
able to satisfactorily solve previously, which will indeed unlock lots of
innovation.

However that doesn't diminish 'regular' software engineering, which isn't what
your saying, however I have seen people interpret it that way. Programming is
dead ML is the future.

------
bb88
1\. Obscure languages.

I just talked to an AS/400 programmer that knows RPG, and has had a job for
the last decade being "the RPG" programmer, because the Java people don't want
to touch it. He even moved away from Seattle, but they didn't want to lose
him, so they let him work remotely.

2\. Growth languages (in-demand languages).

[https://www.tiobe.com/tiobe-index/](https://www.tiobe.com/tiobe-index/)

C has a growth rate of 8%. This seems to suggest that C coders are on the rise
professionally, which makes them harder to get. Java has only a 0.88% growth
rate, which means the market is pretty saturated with them.

I moved from C++ to python years ago, and never really looked back. But based
upon this, I think it's time to put some C back in my skill set.

------
mehh
You'll earn most in the direction of demand.

Some have spoken here about shortage of supply, Cobol etc, which might be
true, but do you really want to upskill in an area that by its nature is
diminishing?

In demand at present is not any language, thats implementation detail not what
drives a business to spend money.

~~~
cjalmeida
People still hold very dearly the myth they can keep a decent job for a
lifetime by becoming an expert in a legacy tech.

The truth is you can find those, but it’s a lottery bet. Not only there are
many people skilled on those technologies, but most large companies supposedly
learned a lesson or two about managing large system and are more proactive
about making easier to maintain system.

Parent posted us spot on: move toward the future, do not aim at the past.

~~~
candiodari
> supposedly learned a lesson or two about managing large system and are more
> proactive about making easier to maintain system.

One thing you learn pretty quickly is that there is a massive difference
between stated intentions and reality. It only takes one dissenting voice to
get a big enterprise stuck in the past.

Usually far more are available.

(and I might even agree that from a business perspective it's usually the
right call at some point. Software engineers will rewrite, rewrite, rewrite
again and again and again)

------
evoneutron
Think about how many enterprise-level software apps have been developed in
Java and will need to be maintained for years to come. Think about how much of
such software is being developed now as you write this.

While I like Python for its seeming simplicity it lacks some nice
architectural paradigms that Java has employed for years - think Inversion of
control, or data access frameworks hibernate or ibatis.

Python is in a somewhat of an infancy stage to support that type of
enterprise-level architectural paradigms.

For OP, if you want to get into machine learning domain then Python is
definitely the language of choice.

~~~
growlist
This means there will be a glut of Java devs and lower rates though as a
consequence doesn't it?

~~~
evoneutron
I think that depends on whether Python will exceed Java in popularity.

But in theory, in 10-20 years any widely used programming language will have
no intrinsic value and will have enough developers to not pay them 6-figure
salaries.

Developers that will be valued and making tons of money in 10 years will be
domain-specific developers.

------
dmoreno
My bet is in highly distributed and parallel programming languages as Erlang,
elixir, pony... As computers get more cores, these process/actor oriented
languages have an edge. And they provide transparent distributed computing.

Good enough as Go (not distributed by default) are indeed worth watching.

After thought languages as java/Akka, c++... They will be there for sure, but
will not give any edge.

------
stealthmodeclan
Advertising and payments industry is still going strong. I don't see it
changing anytime soon.

~~~
ralusek
GDPR, among other things.

------
imhoguy
Managed private cloud - compatibile with AWS APIs, however by default
completely isolated from the Internet and other DC tenants. That includes on
premises, dedicated DC cabinets, cages, rooms, staff etc.

------
seibelj
Strong blockchain devs are basically not possible to find, and earn a premium.
Whether you think the technology is here to stay, it’s already a profitable
and underserved niche

~~~
fabianwatkins
Wtf is a blockchain dev?

~~~
jMyles
Someone who knows some fundamentals of solidity, follows development of vyper,
knows Piper's ethereum toolchain reasonably well, and most importantly, can
think critically about the power dynamics of decentralized applications and
how they apply in real terms in a codebase.

Someone who has given ample time to thinking about concepts like vesting,
staking, slashing, locking, and strategies for saving gas over large numbers
of transactions.

Understanding ECDSA, ECDHE, key encapsulation, etc. are pretty good too.

And yes, such people are hard to find - these are wonderful skills to be
learning right now.

~~~
jnbiche
First of all, this sounds like an Ethereum dev, not what I'd imagine a
blockchain dev is.

Second, is there seriously a significant demand for these kind of devs? Where
are such jobs advertised? Are these mostly for sketchy ICO offerings?

~~~
ofrzeta
I don't know about significant but there's some demand because insurances,
banks and even stock exchanges are wanting to do something with blockchain.
This could be over soon, I guess, so I wouldn't bet on it.

------
KaiserPro
Large scale networking (ie metro-lan or bigger) because everything needs
fibre, and its hard to install manage.

Large datacenter management (storage, networking, power) because these skills
at scale are dieing out. There will always be another facebook/google/AWS
around the corner, and they'll need people who can build effecient
datacenters.

Ultra low power microcontrollers. Because there is soon going to be a need for
no-battery sensors at scale.

Radio/comms. Lower powered "edge computing" (ie battery.harvested powered
sensors) can't be waisting joules on JSON, so effective binary protocols with
strong security are a must.

------
mabynogy
Same as nowadays, the finance sector.

------
jamesholden
The Crystal programming language seems to be making a lot of buzz lately. But
I'm no rocket scientist.

------
purplezooey
x86 assembly

