At Red Badger, we love trying out and testing technology, both new and old. Just recently our team sat down to discuss developer and testing topics, ranging from new languages to new ways of working. The Badger team split the current and future technological ecosystem into ‘what we’re most excited about for 2017’, ‘fresh twists on a classic’ and ‘tech that needs more work’.
What we’re most excited about:
AWS + Serverless – Red Badger’s number one for 2017
These are best used for projects that have a huge need to scale, think retail websites that are taking part in Black Friday, that kind of scale. AWS combined with tools like Terraform will also serve well in decreasing the need to engage in traditional ‘DevOps’ activities.
[easy-tweet tweet=”AWS combined with tools like Terraform will help decrease the need to for traditional ‘DevOps’ activities.” hashtags=”DevOps, tech, cloud”]
Serverless pushes the concept further, provisioning environments and deciding scale seamlessly based on application requirements, allowing the focus of development to remain on the application core. It’s really exciting and we have great expectations for this technology in the future – we’ve already launched projects utilising it successfully and will be looking to take on more.
GraphQL and Apollo
Although REST has carried us far, GraphQL alleviates many of REST’s long and well-known problems. It allows you to declare exactly what data you require to a single endpoint and allows the backend to resolve these needs.
Meanwhile, Apollo is an incrementally-adoptable data stack leveraging GraphQL that manages the flow of data between clients and backends. It looks to be a well-designed system that works fantastically with some of the top front-end core technologies like React and Redux.
Elixir
Elixir is a very exciting backend language that many of us at Red Badger are keen to embrace further. It provides the tools to implement scalable, fault-tolerant concurrent backend systems by utilising the power of the BEAM VM and the lessons of Erlang.
[easy-tweet tweet=”Elixir provides the tools to implement scalable, fault-tolerant concurrent backend systems” hashtags=”tech, cloud, future”]
In addition to intrinsic language virtues, it provides a fantastic developer experience and a great range of tools. For example, to ensure everything’s up to scratch, Elixir can run code examples in your method documentation.
Elm
Elm is a powerful front-end language and a joy to use, with the strong type system allowing it to have features such as exceptionally insightful compilation error message, should you ever lose your way.
Over the last year, Elm has only been gaining momentum, gaining features, and growing a vibrant and brilliantly helpful community.
Fresh twists on a classic:
Java
Java is a well-remembered tool amongst us Badgers, and its recent use at Red Badger has brought back memories (fond and otherwise). Java and its frameworks, especially for legacy systems, has both advantages and flaws that have been explored often.
Given the general internal trend towards functional programming, it’s a good idea to try Clojure or Scala to allow firms to keep their JVM infrastructure while gaining the benefits of these whizz-bang languages.
Need more work:
Cucumber and other automated UI testing tools
Why does it need more work? Automation testing processes can begin to add to the lifetime of pull requests, and unreliable or unwieldy integration tests inject uncertainty into the readiness of the product. Most Badgers found that automation testing provided little value.
UI testing is a difficult problem, especially at scale, and no framework seems to be perfect for us at the moment. For 2017, we’re thinking snapshot testing through tools like Jest will allow some of the automation testing to be filtered down to a middle layer, letting automation tests remain lighter.
CSS
CSS has been around for close to twenty years and many of us feel it has fundamental flaws which make it difficult to combine with the component-based approach to creating web applications, such as unpredictable side effects, subtly different rendering between browsers, inconsistent rules and its cascading nature.
The solution to these issues is also unclear. Discipline approaches like BEM exist to minimise some of these pains, CSS Modules have proven popular but at Red Badger, we think that maybe something more exotic like the recently released Styled Components or defining styles in JS could be the solution and the future.
[easy-tweet tweet=”Styling is a hot topic in the community so we’re keen to experiment in 2017.” hashtags=”tech, cloud, CSS”]
Flow
Released by Facebook, Flow is an optional typing library that allows you to gain the benefits of static types in the normally dynamic language wonderland of javascript. These types can be defined by hand, and through Flow’s impressive type inference system.
It gives you safety from all kinds of null errors, and through fantastic tooling such as Nuclide, you can gain great hints on possible pitfalls in your code as well as additional developer experience niceties like on-the-fly parameter documentation.
While this can increase confidence and predictability of your code, some Badgers felt this removes from the dynamic core of javascript, while others mentioned that the current tooling caused them aggravating issues.
This technology was widely disputed at the Badger gathering, but the optional and incremental aspect of Flow means that for teams where it’s providing value, it can be used without treading on other people’s toes.
We’ll be keeping an eye on Flow, and maybe we’ll agree when the syntax settles and the tools mature, or we’ll have moved onto something else!
Marcel Cutts, Software Engineer at Red Badger
Marcel takes an immense joy in building great software that positively impacts the world and has spent his career touching everything from satellites to apps that make you fit by fleeing zombie hordes. In his free time, he explores the harsher parts of the world and plays instruments talentlessly.