As we look forward into the new year and reflect on 2018, we’ve been talking about the technology that’s been powering our projects, and what we expect to be seeing more of in 2019. We’re a polyglot, flexible, service organization with clients in many industries and tech stacks, so while no single project or developer works on everything, as a company we’ve gotten a chance to see a wide cross-section of the industry firsthand. So we asked folks internally for their ideas and opinions on tech to watch in 2019, and we’ve rolled some of the highlights up into this article.
Consider this list of tech to watch not as a set of value judgments or a trip aboard the hype train, but rather as a set observations and thoughts from one consultancy, based on our particular distribution of clients and projects. We hope that these thoughts can help you in considering what to learn, or what to experiment with, in 2019.
While we continue to have some more mature clients running in their own data centers, the vast majority of our new projects are running on cloud platforms like AWS, Azure, and Google Cloud Platform.
The cost and operational models of so-called Serverless runtimes, along with the constraints provided by those platforms, have appeal across many of our clients. Among other benefits, the Serverless paradigm takes the NIST Definition of Cloud Computing extremely seriously, in particular having the “Rapid Elasticity” and “Measured Service” characteristics as fundamental, while many naive “lift and shift” cloud deployments lack these. With the most recent AWS:reinvent announcing new Lambda features like custom runtimes, layers, and direct calls from ALB, we expect to see adoption grow in 2019, hopefully along with well-known patterns of usage to offset the learning curve. While microservices are by no means cost-free, functions-as-a-service take them to their logical conclusion, and do provide enough benefits for many of our clients to adopt them.
Ruby is now a first class runtime. The Lambda Runtime API added support for C++, Rust, Erlang, and Elixir, and now provides tools to support any language. Lambda Layers are improving the ability to share code and common dependencies. The barriers to entry are lower than ever going into 2019, and it’s getting easier to adopt serverless incrementally.
As developers gain more and more comfort and dependability on the cloud, this has the makings of a paradigm that could significantly alter the way apps are developed.
[I think] that "serverless" architecture would demand a certain set of design principles / skills that would produce cleanly architected applications – which we can accomplish with existing infrastructures, but we're also able to get away with a lot of sloppiness.”
With the increase in cloud adoption and teams taking on responsibility for running their applications in production, many developers find themselves with operations responsibilities. We see the generalist trend as likely to continue, with application developer roles expanding to include operations thinking. Infrastructure as code and Serverless mitigate some operational responsibility, but operations work around security, performance, scalability, and observability remain crucial to running mission-critical applications.
Regarding cloud security models involving tools like AWS’s IAM, Eric Smith writes:
Hardly a new technology, but given that the Cloud is now the standard, and terrible security is also common, understanding these (complicated) roles, permissions, etc. should be considered a necessity. You won't be able to offload this to the "unix" team anymore.
Connor Mendenhall, on testing in production:
There is so much more to software testing than writing unit tests. Tools for observing, tracing, monitoring, and testing production systems are better than ever, and we should adopt them in 2019 for the same reasons we write unit tests: they close critical feedback loops that tell us whether the systems we build are designed well and doing what we expect.
8th Light works in a variety of platforms and environments, including backend APIs, batch processing tasks, and native mobile applications. But as has been the case since our beginnings, web applications feature extremely heavily in our current client project distribution.
While we continue to produce solid work for clients using Angular, Ember, and Vue, we’ve seen large and growing demand and interest in React, and we expect to see that continue in 2019.
Becca Nelson recommends paying attention to:
What's changing and why it matters. A ton of new React features are rolling out in 2018-2019, including hooks, suspense, context, etc.
Ryland Herrick notes the crossover potential to native mobile apps (via React Native) among other wins:
People still need a UI to interact with, and the web isn't going anywhere for now. The ability to extend to native mobile development is also a huge plus for anyone looking to broaden their skills. Lots of fun stuff planned for future versions, making things even more functional and data-driven.
Kevin Kotowski notes high client demand throughout 2018 on his projects:
Ever since Facebook changed their licensing, nearly every customer engagement has been focused on using React or React Native as the client of choice.
We’ve seen rapid uptake of GraphQL for building flexible APIs. While GraphQL is often framed in comparison to REST and even viewed as a data access tool, its spec clearly shows that it has no dependency on either HTTP or SQL. Nevertheless, the client use cases we’ve seen so far have mostly been in the world of HTTP API design. So while we still consider it to be fairly early and have seen tradeoffs, we’ve also seen enough demand for GraphQL that it’s worth keeping in mind.
It has all the power of a REST-based API, but has additional flexibility in how to query and represent data models without requiring a lot of change/modification.
Many of us can be quite skeptical of high-level testing, having experienced firsthand the pain of long-running and/or flaky test suites that extract more cost than they provide in value. However, we do recognize the benefits of high-level testing, and that the costs are lower for smaller (typically younger) codebases. A number of our projects have happily adopted Cypress, which addresses some of the pain points of these kinds of tests.
Cypress takes some of the best ideas and tools for frontend development, like a time traveling debugger and Chrome’s dev tools, and applies them to the domain of frontend testing. When something breaks, screenshots, videos, and consistent behavior make it easier than ever to understand why.
Cypress solves a lot of the typical problems associated with testing web apps through the browser. The ability to very simply wait for and stub XHR requests means fast and reliable tests expressed in terms of what the user actually does/sees are possible.
I don't foresee any kind of sudden explosion in Elixir's popularity, but it continues to pick up steam, and it's hard to ignore its presence in the web space. So many of the issues you face when building and scaling a web app are either simply absent or much more straightforward to deal with in Elixir, and its community and catalog of high-quality libraries are growing all the time.
Web application development is a huge space for us. We could add another dozen highlights about tools we’ve been using heavily, like ES6, TypeScript, Apollo, and code formatters like Prettier, and also places where we see positive signs, like Interface Design & State Machines, Elm, TypeORM, WebAssembly, and the “JAM” stack.
This decentralized application space remains controversial both inside and outside 8th Light, but the combination of distributed systems, cryptography, and finance certainly features difficult problems and is rapidly evolving. We expect to see growth continue through 2019. Important caveat: we’re not your financial advisors - “growth” here means growth in projects that we work on, not market cap or any other financial metric.
Rob Mulholand, on blockchain in general and bitcoin specifically:
I think that 2019 will continue to see lots of developers working to build out blockchain technologies and sharpen their application to existing near-term business problems, with a focus on places where there’s a clear path to measurable adoption and improved efficiency. The core dimensions I'd watch out for are: what public blockchains are growing/receding as platforms for decentralized applications (e.g., Ethereum, Stellar, Cardano, Hedera Hashgraph, Avalanche, etc), what decentralized applications are growing and how are they managing the rapid development in the space, what permissioned/consortium blockchain technologies are businesses able to leverage for their use cases, and how layer 2 protocols like Bitcoin’s lightning network can facilitate scaling and usability.
The categories above were by no means the only technology and practices we identified as important for us moving into 2019.
In the native mobile space, we probably do more Swift and React Native work than anything else, and we don’t expect to see that drop off, but Malcolm Newsome pointed out the growing importance of Kotlin for the Android ecosystem, and the potential for Flutter for both iOS and Android. Regarding the Internet of Things, Chris Wilson notes, “IoT (yes, despite the hype-hazard) enables making sense of large quantities of sensor data while saving on battery.”
Microservices continue to be a hot and controversial topic, and several of our teams are finding benefits to monorepos, which provide some coordination between services (with the associated costs and benefits of that coordination), whether with specific tools like Lerna or not. About closely related service/library code combined into a monorepo, Dave Moore says “we get the benefits of that separation, but can make cross-project changes in one PR.”
As we continue to grow our company through apprenticeship, we’ve noticed the idea catching on around the industry in the last few years - even in notoriously pedigree-driven Silicon Valley. Practices like mob programming and remote collaboration are also changing the way many teams work together. Doug Bradbury observes that mob programming “focuses on overall output of the team versus keeping each programmer busy. It may never make it mainstream, but teams who figure this out are going to way outperform siloed teams.”
Ray Hightower is excited about the performance benefits of parallelism techniques available via GPUs. Mike Knepper observes that “As more and more data is collected, streams and data pipelines become important tools for managing and processing those events.”
Connor Mendenhall writes that Glitch “has brought me more joy than any tool I’ve used in 2018.” and expects that Github Actions could be a great way to orchestrate “all the complex, coordinated things that have to happen between pushing up my brilliant code and seeing my brilliant code run in production.”
We’re not a hype-driven consultancy. The problems we’re helping our clients to solve are driven by their business needs, and we work hard to solve them the right way, without introducing needless technology complexity. But the technology landscape changes rapidly enough that it’s important for us to keep an eye on the horizon, ready to jump into any ecosystem and be effective as rapidly as possible.
Hopefully this article helps you to do the same as we head into the new year, and that 2019 makes your code even more brilliant, wherever it’s running!
Thanks to my 8th Light colleagues for sharing their experiences, which form the entirety of this post: Doug Bradbury, Casey Brant, Zack Davy, Ryland Herrick, Ray Hightower, Mike Knepper, Kevin Kotowski, Steven Kwok, Hana Lee, Li-Hsuan Lung, Pat Maddox, Josh McCormick, Phil Meier, Connor Mendenhall, Dave Moore, Rob Mulholand, Becca Nelson, Malcolm Newsome, Margaret Pagel, Maggie Shemayev, Eric Smith, and Chris Wilson. Thanks also to Lydia Lindenberg, who proposed this piece and shepherded it into production.