Ask HN: Which industries, domains, or programming languages will be top earners?

41 points by kevindeasis ↗ HN

51 comments

[ 0.29 ms ] story [ 113 ms ] thread
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
Wtf is a blockchain dev?
Ethereum (solidity), Dapp development, etc.
You would indeed need to pay me an awful lot to write anything sensible in Solidity, awful stupid language!
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.

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?

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.
Being a blockchain dev is slightly horrifying, mostly because it's really easy to fuck up in ways that costs normal people multi-millions.
Unpopular answer: anything that's about to become legacy. See COBOL programmers.
In other words: Java? :)
Java is going nowhere.
Especially with Oracle in charge eh!
Many mlocs of existing enterprise Java code aren’t going anywhere either (and nor are the poor souls who maintain it all).
Kind of where I was nudging in my comment, though I realize I probably should have been more verbose than just pointing to COBOL.

I worked an internship about 4 years ago in a state government IT role, they were using JSP and Websphere just as Java 8 was being released.

With that said- I don't think Java is dying any time soon, it's too good at articulating business logic for us to just toss it by the wayside. I'm thinking more along the lines of "hot Java framework from 5 years ago". If Spring starts to head towards legacy status, I'd expect that to become the hot "legacy job".

Agree: anything that's going to become legacy will still need maintainance. Specially if it can be dockered and run anywhere because it will remain alive for a looooooong time.
Almost always there will be less opportunities of that niche in the future; and it is probably difficult to get promoted (or build a career) on the basis of a technology that will be replaced in the long run.

Maybe if you have software project management skills (complex migrations from legacy tech X to modern Y), these might be transferable skills.

The Crystal programming language seems to be making a lot of buzz lately. But I'm no rocket scientist.
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.

Advertising and payments industry is still going strong. I don't see it changing anytime soon.
GDPR, among other things.
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.

> - 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)

> but traditional uses for Java are hardly touched.

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

Web servers mainly. However, Go is starting to make inroads in that space.
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.
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.

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.

> 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.

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
Not sure you gonna be a "top earner" with any of these.
Personally, i have been taking time to look at kotlin ( as a "swiss army knife" language for the JVM, both android, server-side and desktop ) and dart2 ( with flutter.io for cross platform mobile ) and web front-end. I'm a complete n00b on iOS, but swift seems suspiciously too similar to scala, so it should be good enough...

Given the cpu-speed rat race was replaced by the multi-core rat race, anything that fits naturally with concurrent programming should deserve a long look, hint: FP.

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.
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.

This means there will be a glut of Java devs and lower rates though as a consequence doesn't it?
It does. And will be like that for any programming language.

I guess the question is more about what still will be in high demand in the future and takes a very long time to learn or has other barriers, so there will be effectively no competition.

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.

There’s nothing in Python that prevents you from using any architectural pattern you can implement in Java.

You know why you don’t have mature IoC frameworks in Python? Because you don’t need them! You can easily inject and mock attributes in dynamic languages

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.

(comment deleted)
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.

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.

> 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)

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.
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.

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/

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.

Same as nowadays, the finance sector.