As a counterargument (or perhaps as a corollary), backend programming is also a treadmill these days. It may not have the churn of the world of front-end Web programming, but the world of backend programming in 2020 is quite different from that of 2010. As someone who does mostly backend work, within the past decade I've seen the rise of cloud services, non-relational databases, the Hadoop ecosystem, distributed storage systems, containers, the increased use of languages outside of C/C++/Java for systems programming (e.g., Python, Go, Rust, Clojure, Scala), machine learning, and CUDA, among many other technologies that were either nonexistent or were in their infancy in 2010. A person who stayed stuck in the world of 2010 might be overwhelmed by how much has changed in the past decade. Heck, even C++ has changed dramatically over the past decade; someone coding in C++98 would need to get up to speed with C++11's fundamental changes as well as changes added in later versions.
Now, there are some levels that haven't changed as much in the past decade. The kernels of today's most widely used operating systems are still written in C, and x86-64 still remains the dominant instruction set despite an increased challenge by ARM64 and the possibility of RISC-V. Someone writing kernel-level code in 2010 would feel at home today in 2020, notwithstanding the natural kernel code changes that have always happened. However, the job markets for kernel developers, compiler developers, and those writing low-level system software are much smaller than the job market for backend programmers overall, and it's possible that a laid-off low-level systems software engineer would have to get up to speed in all of the advances that happened in higher levels of the stack in order to more easily find another job.
> As someone who does mostly backend work, within the past decade I've seen the rise of cloud services, non-relational databases, the Hadoop ecosystem, distributed storage systems, containers, the increased use of languages outside of C/C++/Java for systems programming (e.g., Python, Go, Rust, Clojure, Scala), machine learning, and CUDA, among many other technologies that were either nonexistent or were in their infancy in 2010.
You've missed what is maybe the worst offender - kubernetes and microservices.
I've got a feeling that in the SOA days the services were just "services", not microservices. I.e. people were not pushing for 200 lines of code microservices, like they do now. For example, I have a team of three devs at work who wrote a backend of around 10 microservices... Total cargo cult.
My first professional programming job was in 1996. I was writing C for DEC VAX and Stratus VOS mainframes and reading about undefined and implementation defined behavior on Usenet in comp.lang.c. My second job three years later was writing C and C++ for Windows computers along with MFC and some standard cross platform C++ using the STL.
Recently, there was a blog post submitted on HN with “trick” questions in C where they ask you to describe what the output would be. I immediately recognized all of the code would result in undefined or implementation defined behavior. I call myself still keeping abreast of the latest C and C+ standards out of morbid curiosity even though I have used neither in over a decade, changes have been glacial compared to the front end.
within the past decade I've seen the rise of cloud services*
I know AWS pretty well, from the development, Devops, and even operations/networking side. I hate to be “that guy” but for the most part the cloud is just someone else’s computer where they manage databases, messages services, caching services, monitoring etc.
The largest changes in mindset were infrastructure as code, “cattle vs pets” and immutable architecture.
non-relational databases, the Hadoop ecosystem, distributed storage systems, containers,
Especially in the cloud, distributed storage systems is just an API call. NoSQL databases do require a change in mindset, but the world is still dominated by RDMS’s. In fact they are still dominated by the same three or 4 as they were in 2010 - SQL Server, Oracle, Mysql and Postgres. I’ve been going back and forth between Mysql and Sql Server for almost two decades and six jobs.
the increased use of languages outside of C/C++/Java for systems programming (e.g., Python, Go, Rust, Clojure, Scala)
Besides Python, you can still safely ignore all of those languages and just stick with C/C++, C# and Java and be good. Those were the same languages that were in demand when I (belated) jumped back in the job market in 2008. The other are all niche languages in the grand scheme of things. Go is starting to pop up more admittedly.
machine learning, and CUDA, among many other technologies that were either nonexistent or were in their infancy in 2010.
You can also safely ignore those and still be marketable.
As far as low level developers, the submitter seems to be a standard everyday “enterprise developer” (no insult intended , I am too). So low level code, CUDA and machine learning wouldn’t be relevant.
I can’t believe how cloud has been so popular and every company is pushing towards cloud and I totally agree with you cloud is basically someone else computer but people make it seem like its something big
You know what i mean
Now, there are some levels that haven't changed as much in the past decade. The kernels of today's most widely used operating systems are still written in C, and x86-64 still remains the dominant instruction set despite an increased challenge by ARM64 and the possibility of RISC-V. Someone writing kernel-level code in 2010 would feel at home today in 2020, notwithstanding the natural kernel code changes that have always happened. However, the job markets for kernel developers, compiler developers, and those writing low-level system software are much smaller than the job market for backend programmers overall, and it's possible that a laid-off low-level systems software engineer would have to get up to speed in all of the advances that happened in higher levels of the stack in order to more easily find another job.