I used to work as a programmer. In 2017, I had to stop working because of health issues. I remember Rust was a cool project, JS had plenty of frameworks fighting between themselves, SPA was a thing albeit I was skeptical of it, and I was in love with Go. Big words like Data Science and Machine Learning were thrown everywhere. Whas has changed in this scenario? Are there new stuff I should know about? Thanks.
Probably the most surprising thing for you: Go is getting generics. No exact timeline, but it's happening for Go 2.0.<p>Rust is seeing production use in many places and its being accepted more as <i>the</i> sane alternative to C for modern development of high performance software. Ecosystem still not big or mature enough to make big waves, however, but that depends on how you interpret "big waves".<p>SPAs are used and abused, the tooling to make a performant progressive website with them has gotten better but the know-how is not widespread enough.<p>React has essentially won the mindshare battle and they are focusing more on functional components. But there are other things with their own healthy niche like Svelte compiling components that manage their own DOM, Elm is still around (and still not 1.0) and it has inspired other "Elmish" frameworks.<p>Desktop software quality has gone downhill and seemingly everyone is using Electron.<p>For many companies, Kubernetes is the new normal mode of operation. You should know it, but it's still far from "the way to do things" for industry in general, mostly due to its complexity and learning curve.
The most interesting developments have been in infrastructure.<p>AWS has started to take on third-party, open source components e.g. Cassandra, ElasticSearch, MongoDB as they run out of things to build. Expect them to continue further up the stack possibly into applications.<p>Kubernetes has really taken off with every cloud provider having a solid implementation. And it's getting massive adoption within the enterprise as companies look to reign in their cloud cost, simplify their infrastructure and have better DevOps. It also allows them to standardise the NFRs across multiple applications e.g. metrics, logging, security, routing which is more important than ever.<p>Data Science has seen massive adoption in the last few years within the enterprise space as companies go after the low hanging fruit. Also seeing lots of traditional Data/Reporting Analysts been cross skilled in Data Science and vice versa. It's definitely here to stay for the long term just without the hype.
Perf is becoming more important than it had been. Rust is still around and growing. WASM is becoming mainstream. You see some people migrating away from things that require garbage collection. Edge is becoming real, with Cloudflare and Fastly doing edge functions/workers, and AWS having come out with outposts, local zones, and wavelength (deploy AWS VMs to Verizon 5G hubs).<p>AWS is still eating the world, Azure is doing well and growing faster in enterprise markets but devs still hate it, GCP seems mainly startup and ML loads and they have an ultimatum to become top 2 or bust by 2022.<p>Open source is a little under fire. AWS made a closed source MongoDB clone. I feel like things have moved a bit away from DIY toward settling on whatever the big three provide.<p>JS framework overload has settled down and it's pretty much React and Vue. NoSQL has too, there's still mostly the same players as in 2017 but I'm seeing far fewer new entrants. In general I'd say things have slowed down <i>as a whole</i>, and the level of innovation isn't what it was a couple years ago. Shiny new object fatigue has set in a bit and people just want to make things work.<p>Docker in production is very real (our team uses docker in production <i>only</i>, not dev), and k8s has the mindshare.<p>ML is still fairly hot, but various experts saying we're starting to hit a wall wrt ML capabilities, and others saying plow forward and see.
If you're still suspicious of SPAs, you can be sure there's still an alternate universe outside of the Valley bubble that builds server-side web apps on modern frameworks, though now we use Vue.js instead of jQuery. PHP has continued to be a top language of choice for the working class dev, and Laravel is an example of one of the most beautifully crafted (and wildly popular) web frameworks ever made.<p>Examples of the kind of tooling built by the community that betrays the cultish appeal of Laravel (yep, people actually make a living off Laravel-specific tooling)<p>- <a href="https://tinkerwell.app/" rel="nofollow">https://tinkerwell.app/</a>
- <a href="https://laravelshift.com/" rel="nofollow">https://laravelshift.com/</a>
A lot of good answers here, but none seem to mention that asp.net core is improving a lot and getting traction.<p>Microsoft bought GitHub and LinkedIn.<p>Oracle is disliked like before.
GPT-2<p><a href="https://openai.com/blog/gpt-2-1-5b-release/" rel="nofollow">https://openai.com/blog/gpt-2-1-5b-release/</a><p><a href="https://talktotransformer.com/" rel="nofollow">https://talktotransformer.com/</a><p><a href="https://github.com/openai/gpt-2" rel="nofollow">https://github.com/openai/gpt-2</a><p>(GPT-2 docker image needs a version tweak to get it working)<p>and BERT:<p><a href="https://github.com/google-research/bert" rel="nofollow">https://github.com/google-research/bert</a>
I think React is "winning" the framework competition, if we're judging from number of jobs. It seems like a business decision for many people - React can make websites and apps, and it's probably easier. I haven't had enough experience to say, but it seems like Java; not necessarily the best tool, but something easy to hire for.<p>Flutter is also coming in hard on mobile. Also not something I've had enough experience to comment on, but there's also little criticism, which suggests it's a good thing.
There seems to be a lot more skepticism towards AI/ML and especially anyone pitching their product as using it. I think the requirements to do data science as a job description have ballooned as well - we’re talking requirements for having a PhD and lots of experience.<p>I could be misrepresenting from just what I’ve read here but trying to be helpful. Ymmv
Nothing has changed. It is still programming. You take some input, you manipulate it and then you do something with the output.<p>How you do that comes down to mostly a matter of preference with a smattering of "engineering".
I feel like nothing really changed. Rust still is a cool project, JS still has plenty of frameworks, SPA still a thing, Go still a thing, Data Science and Machine Learning is still thrown everywhere. Blockchain hype is dead, I guess.
SPA:s are now being overused for no particular reason, particularly by junior talents, who by now have been taught this is the one and only way to build Professional™ web sites.<p>The Javascript frontend scene almost literally exploded, in various ways.<p>Webasm got some serious traction. Old serious people like this, becuase it may eventually allow them to avoid the increasingly crazy javascript scene.<p>Computer vision (by means of machine learning/deep learning) got quite a bit easier to use, even if you're not a PhD in Computer Vision. Real-time inference from static photos is now easy. Real-time inference from video is still sorta hard/expensive, depending on your deployment target (embedded, backend).<p>Python people are still using Python even though it's dead slow.<p>A bunch of people moved from Java to Go and suddenly felt a lot happier.
Serverless is starting to become less of a buzzword and more of an actual movement. I see more and more new projects start with serverless as a sane default before going the containers route. Yeah I know, serverless is not server less, it’s a marketing term, the cloud is just someone’s else computer. But I see more and more preferring someone else to manage auto scaling, load balancing, networking, have much smaller attack surface and not having to have a PhD in k8s to launch a web app.
Let's see people still can't write SQL. Most data related issues can we done in SQL. But we hit with a pandas data frame hammer and cry that it hurts instead.<p>Everyone is data scientist. Load Excel into python? Data science. Divide x by y, and run some algo, data science and ML.
> <i>" I remember Rust was a cool project, JS had plenty of frameworks fighting between themselves, SPA was a thing albeit I was skeptical of it, and I was in love with Go. Big words like Data Science and Machine Learning were thrown everywhere."</i><p>From this description, it sounds like nothing has really changed in the past 3 years. This could easily describe today.<p>There have been some shifts in the fighting JS frameworks though; Vue is a big rising star, has overtaken Angular and is now challenging React for the top spot. Angular is still used a lot, but I think it's on the way out. React is still strong. Typescript is becoming standard.<p>Server-side rendering is big, though. People talk a lot about static sites (which can still be dynamic), and serverless (which still has a server, obviously).<p>Rust is more than a cool project; I have no experience with it, but it sounds increasingly like the low-level language of the future. On the JVM, Kotlin is on the rise, has overtaken Scala and Clojure and is second behind Java.
I think DevOps and cloud services have had the most movement. Kubernetes is seeing rapid adoption as is TerraForm. I'm also seeing a bit of whiplash where enterprises are getting pretty comfortable going all-in on their preferred cloud vendor and just diving into proprietary fully-managed services. AWS is still tops, but Azure is making huge inroads.<p>Also, everyone has given up on chatbots. Voice assistants are increasing in penetration, but they're just defaulting to transactional modes and not conversational.
In the JVM space there are now new web frameworks that specialize in Microservices. The advantages they offer are very low memory usage, better performance, fast startup time and finally the ability to generate a native executable via GraalVM [0].<p>[0] A lot of JEE Frameworks heavily rely on reflection and other dynamic features that cannot be used in a native image.
Frontend hottest: Next.js/Typescript/React w/ hooks.<p>Backend hottest: Rust, Graphql is gaining adoption at the enterprise level.<p>Edit: ML is still very hot but tough to get a job as a Data Scientist without actual experience.
C++ is getting Modules and Concepts in its newest standard (2020) version, bringing more simplification and making it even more modern and as easy as other languages. The compile-time programming is even more powerful than before
Elixir is now fully mature (almost at v2.0) and probably the best all-round language, with a super powerful web framework (Phoenix) and a very rich ecosystem. Highly recommend playing with it!
Microservices are the new hype with related tech. It's DDD with a new jacket, requires a devops team and it has some interesting concepts though.<p>Almost no one has a decent implementation for micro-frontends. Although ING bank released a nice framework related to this - <a href="https://medium.com/ing-blog/ing-open-sources-lion-a-library-for-performant-accessible-flexible-web-components-22ad165b1d3d" rel="nofollow">https://medium.com/ing-blog/ing-open-sources-lion-a-library-...</a>
Just a nit pick, but maybe the title should be updated to specify the question is about “web software” rather than software in general, since the question and most of the answers offered are pretty narrowly focused on web technology and ML and not software in general.
Rust has grown tremendously in the last few years. People are using it as a general purpose language, from Unix command line utilities to industrial IoT services. Greenfield projects are using Rust as are next generation refactoring projects. Game development, multimedia, and even data scientists are showing increased usage. Embedded adoption is growing but at a slower rate. I'm not going to drop names until announcements are made but companies that have used Go for flagship products are no longer doing so. They're rewriting in Rust. Healthcare startup(s) who are building systems to compete with Epic are using Rust. Government contractors working on intelligence systems are also using it.
AI is still thrown, investors seem to like it.<p>React is performant now, so if I was you I'd take a good hard look at Clojurescript / Reagent / Porting those to React-Native.<p>And welcome back, good to hear your health problems are sorted!
Kotlin is now preferred for Android development. Apple has embraced FRP and introduced it’s Combine framework as well as SwiftUI, a declarative React-ish view framework for all it’s platforms. Swift got module stability and looking towards server side and cross platform development. Google is pushing Flutter pretty hard and trying to find a place for dart, it looks promising but nobody is using it. React Native is being used heavily by startups and small shops but big companies are still building native apps. PWAs are getting better but still have a way to go.
I'm scratching my head to think of anything really significant. It's a bit of a stagnant period, albeit with lots and lots of churn, but all that churn hasn't really amounted to much.
Angular - Still lost track w/ their versioning.
React - More popular JS
Postgres - Getting better and better
Svelte - Might make it.
K8s - Too much stuff going on. Jump w/ care.
Nothing - oh I forgot there is 8 new Javscript framwork this week. It's been a couple of weeks since I checked but there must be a new language or 2 out there.
Svelte is slowly but surely growing and gaining attention. I think more than any other framework it has the potential to really challenge React in the coming years.<p><a href="https://svelte.dev/" rel="nofollow">https://svelte.dev/</a>
Java's market share is declining fast.<p>Ruby and Clojure are dead, literally for Clojure, most libs are from >7 years ago.<p>Javascript(and TS) and Python are the tools of the trade to achieve most common things.<p>Devs are starting to realize how they got fooled by Rust's marketing/hype train for general purpose programming/exploration/prototyping and productivity because it's too restrictive and its compile times are atrocious.<p>A more accurate Rust slogan:<p><i>A language empowering everyone
to build reliable and efficient software at a very high cost.</i><p>Which is fine is you really need that efficiency.