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
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.
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.
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.
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.
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)
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.
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
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.
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.
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.
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.
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.
51 comments
[ 0.29 ms ] story [ 113 ms ] threadSomeone 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.
Second, is there seriously a significant demand for these kind of devs? Where are such jobs advertised? Are these mostly for sketchy ICO offerings?
https://www.computerworld.com/article/3235972/it-careers/blo...
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".
Maybe if you have software project management skills (complex migrations from legacy tech X to modern Y), these might be transferable skills.
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.
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.
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)
What are the traditional uses for Java that are hardly touched?
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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)
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.
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.