For app and web developers, the world at the end of the decade is very different to the one that began it. Sure, change is inevitable, but the way the discipline(s) have evolved in just a matter of years (arguably the most significant changes came in the latter half of the decade) is a mark of how technologies, business needs, customer expectations, and harsh economic realities have conspired to shape and remold our notion of what software development actually looks like.
Full-stack, cloud-native, DevOps (and maybe even ‘NoOps’): all these things have been shaping the way app and web developers work over the last ten years. And in 2019 it feels like that new world is beginning to settle into a specific pattern. Many of the trends and technologies that really defined 2019 are, in truth, trends that have been nascent and emerging for a number of years.
Cloud and microservices
When cloud first emerged – at some point much earlier this decade – it was largely just about resource efficiency. The idea was to ditch your on premises servers and move instead to a model whereby you rent server space from big vendors.
Okay, perhaps that’s a somewhat crude summation; but it’s nevertheless the case that cloud was primarily a field dealt with by administrators and IT professionals, rather than developers. Today, of course, cloud is having a very real impact on the way developers work, giving a degree of agility and flexibility in how software is deployed and managed.
With cloud partnering nicely with microservices – which allow developers to break down an application into constituent parts – it’s easy to see how these two trends are getting many app and web developers excited. They shorten the development lifecycle and allow developers to get closer to their code as it runs in production.
Learn cloud development – explore Packt’s range of cloud bundles. Pick up 5 for $25 throughout our $5 campaign.
An essential resource for microservices development: Microservices Development Cookbook. $5 for the rest of December and into January.
Go and Rust
Both languages share a similar history (as this article nicely details); at a fundamental level, moreover, both also aim to build on C++, but with accessibility and safety in mind ( C++ has long had a reputation for being both complicated and sometimes vulnerable to bugs and security issues).
Search Packt’s extensive selection of Go eBooks and videos – $5 throughout December and into the new year. Visit the Packt store.
Learn Rust with Rust Programming Cookbook.
It’s impossible to talk about web and application development without mentioning WebAssembly. Arguably the full implications of WebAssembly are yet to be realised (indeed, at ReactConf 2019, Richard Feldman suggested that it was unlikely to initiate a wholesale transformation of the web – that, he believes, will take a few more years), but 2019 has been a year when it has properly started to make many developers sit up and take notice.
If 2019 was the year more developers decided to take note of WebAssembly, 2020 will be the year when we start to see increased adoption.
Learn WebAssembly is $5 throughout this year’s $5 campaign. Get it here.
State management: Redux, Flux, Vuex…
For many years, MVC (Model-View-Controller) was the dominant model for managing application state. However, as applications have grown in complexity, it has become more and more difficult for us to establish a ‘single source of truth’ inside our apps.That can impact performance and can also make them harder to maintain on the development side.
To tackle this, we’ve started to see a number of different patterns and frameworks emerging to help us manage application state. The growth of React has been instrumental here – as a very lightweight library it gives developers the freedom to manage application state however they choose – and it’s worth noting that Flux architecture was developed by Facebook to complement the library.
Watch: Why do React developers love Redux for state management?
Following Flux we’ve also had Redux and Vuex – all of them, each with subtly different approaches, have become an essential aspect of modern web and app development. And while they might not have first emerged in 2019, it feels as though the state management discourse has hit the heights that it previously has not. If you haven’t yet had time to dive into this topic, it’s well worth making sure you commit to it in 2020.
Learning React with Redux and Flux [Video] is $5 – purchase it here on the Packt store.
Learn Vuex with Vuex Quick Start Guide.
Functional programming is popular because it can help minimize complexity and make it easier to test and reuse code. When you’re dealing with a dense codebase that grows and grows as your application scales, this is immensely valuable.
It’s also worth placing functional programming in the context of managing application state. Insofar as functional programming allows you to be specific in determining how different parts of a component should interact with one another – the function is a theoretical abstraction that makes it easier to get to grips with managing the state of a complex and dynamic application.
Get to grips with functional programming and discover how to leverage its power. Read Mastering Functional Programming.
Learn Nuxt: pick up Build a News Feed with Nuxt 2 and Firestore [Video] for $5 before the end of the year.
Get to grips with Next.js with Next.js Quick Start Guide.
Learn Koa with Hands-on Server-Side Development with Koa.js [Video]
Learn Gatsby with GatsbyJS: Build a PWA Blog with GraphQL, React, and WordPress [Video]
Much of this decade has been dominated by REST when it comes to APIs. But just as the so called ‘API economy’ has gone into overdrive, GraphQL has come on the scene. Adoption has been rapid, with many developers turning to it because it allows them to handle more complex and sophisticated requests at scale without writing long and confusing lines of code.
This isn’t to say, of course, that GraphQL has all but killed REST. Instead, it’s more the case that GraphQL has been found to be a better tool for managing APIs in specific domains than REST. If you’re dealing with APIs that are complex in terms of the number of entities and their relationships between one another, then GraphQL can prove immensely useful.
Find out how to put GraphQL to use. Pick up GraphQL Projects for $5 for the rest of December and into January.
React Hooks (and Vue Hooks)
Launched with React 16.8, React Hooks “let you use state and other React features without writing a class” (that’s from the project’s site). That’s a good thing because building components with a class can sometimes be somewhat inelegant. For a better explanation of the ‘point’ of React Hooks you could do a lot worse than this article.
Vue Hooks is part of Vue 3.0 – this won’t be officially released until early next year. But the fact that both leading front end frameworks are taking similar approaches to improve the developer experience demonstrates that they’re responding to a need for more flexibility and control over large projects. That means 2019 has been the year that both tools have hit maturity in the web development space.
Learn how React Hooks work with Packt’s new React Hooks video.
The web and app development world is becoming difficult to parse. A few years ago discussion and debate really centered on frameworks; today it feels like there are many other elements to consider. Part of this is symptomatic of a slow DevOps revolution – the gap between build and production is smaller than it has ever been, and developers now have a significant degree of accountability and responsibility for things that were the preserve of different breeds of engineers and IT professionals.
Perhaps that story is a bit of a simplification – however, it’s hard to dispute that the web and app developer skill set is incredibly diverse. That means there are an array of options and opportunities out there for those developers looking to push their careers forward, but it also means that they’ll need to do some serious decision making about what they want to do and how they want to do it.