We changed the majority of our stack to JavaScript… - PurpleDecks
We changed the majority of our stack to JavaScript

We changed the majority of our stack to JavaScript…


For Decision Makers Series — Installment 1


A number of years ago we took the decision to move many of our main development stacks to JavaScript driven technologies. Here’s what happened…

The purpose of this article is not to provide an in-depth technical discussion of the pros and cons of these technologies but rather to speak at a higher level from the perspective of business owners, CEO, COO & CTO’s and team builders about the implications this technology decision can have for your organization in terms of team building, team sizes, speed of development, team morale, relationships with your clients/stakeholders and above all your bottom line!

Background

Purpledecks started out working on diverse native systems where we were domain experts across a small number of specialist domains. In particular we were predominantly known as “smartphone specialists” having worked on smartphone platforms since their inception around the year 2000.

Over time we built our team and expertise in areas such as scalable enterprise cloud systems, modern web applications etc, but we struggled with the amount of expertise we had to carry on our team in order to deliver to our clients.

JavaScript
we struggled with the amount of expertise we had to carry on our team

The Change

We took the decision a number of years ago to move to become a more heavily (but not exclusively) JavaScript oriented team. JavaScript based frameworks and technologies have advanced so far from their inception that we felt we needed to make the break.

Our Main Development areas

Let’s take a look at how JavaScript now influences our main development areas.

Cloud

We work in a heavily Dev-Ops oriented environment building enterprise cloud services. We use a micro-services architecture, shipping as containers and deploying to a Kubernetes cloud.

We had been following and dabbling in Node.JS since the very early days. Back then it would have been considered crazy to suggest to a large client that you would write their enterprise grade server in JavaScript. You probably would have been laughed out the door!

Node.JS has grown up a lot since then and it is now a more rounded stable platform with a large developer and support base. The number of libraries and utilities are growing by the day. Its adoption is so widespread now that it can no longer be considered niche.

We have used it with great success to deliver large services using protocols such as REST and GraphQL and providing ease of integration with databases such as MySQL, PostgreSQL and MongoDB.

Whilst there are some concerns about the lack of multi threading support on Node.JS we have not found any limitations in the vast majority of our work that prevent us building successful scalable outcomes for our clients.

Web Apps

Our go to choice framework for Web is most definitely React.JS. React.JS has brought many advantages to our web app projects. Originally developed by Facebook, React.JS is now its own independent open source project which is open to and maintained by the developer community (with help from Facebook!). React is widely adopted and is fantastic for developing web apps (it’s fast to render, stable, has good development tools and fits perfectly in to the Design System movement).

Constant innovations on this platform only serve to make it more attractive. A couple of interesting new developments:

  • Gatsby — for lightning fast static website creation using React (Great for SEO)
  • Server Side React Rendering (SSR)

Larger organizations looking to change their technologies should not be afraid to adapt React.JS. Its appeal is broad and it’s used extensively by leading software companies.

Mobile

Mobile is the one area where we have been more conservative in our use of JavaScript.

Given our original background as “Smartphone specialists” — many of our clients and projects in the mobile space have very specialized requirements in terms of performance, processing, hardware integration and also have medical device requirements. Requirements like these still tie us to native development on both iOS and Android.

However the good news is that not all our projects have such strict requirements. In fact the vast majority of apps on the market do not. This is where JavaScript and more particularly React Native comes in.

The majority of apps out there mostly need to:

  • interact with web services
  • may need to store some data locally
  • manage state
  • present a graphical UI
  • interact with media and social media

This is not to undersell the monumental efforts that goes into building these systems but rather to demonstrate the scope of requirements when choosing a build technology. React Native easily meets all of those requirements.

React Native is a cross platform build technology that came out of the React.JS framework. React Native is used to build iOS and Android apps. It is used extensively by Facebook and many other large companies.

We now use React Native in about 40% (and growing) of our projects. The main reasons we choose React Native are:

  1. It is JavaScript and React based — both technologies with which we are familiar
  2. It compiles down into native code — this is a really big plus for both stability and speed (despite what people try to say… browser based apps just don’t cut it yet in terms of quality)
  3. You can easily plug in native iOS and native Android code where you need to

Some things that we learned when using React Native

  • You will still need good knowledge of xcode, the apple signing process, Gradle for Android and device specific issues which you don’t encounter if you only work in the browser
  • Moving from making native apps to React Native is probably easier than a React.JS developer moving to React Native as there is a good learning curve when dealing with the issues mentioned in the first point
  • Whilst the React Native community is good, platform releases are not as frequent as we may like and this may lead to bugs pertaining to a certain platform or device living for longer than desired. These bugs may not exist if the app had been coded natively
  • Building a high quality app in React Native takes roughly about 75% of the time it would take to build a separate iOS and Android app
  • There are less crashes (not necessarily less bugs) in React Native

React Native is a great addition to our tool set and we are increasingly using it. However it is still a ‘horses for courses’ choice — We won’t be ditching native any time soon but we will be doing an awful lot more React Native apps.

How did our big move fare?

Overall moving the majority of our stack to JavaScript was very positive

  • More concentrated teams — Developers can now much more easily move between the back end and front end. This means that we can now deliver more with fewer developers and that there is less developer down time within the company
  • More efficient agile sprints — again following on from the first point, developers can better swarm to complete outstanding sprint tasks
  • Developers feel part of a bigger team — no longer do people identify themselves as a back end developer or front end developer. People now belong to project teams and the sense of overall shared responsibility for the success of the project has really enhanced the working atmosphere and buzz of projects
  • Hardcore single platform mobile developers and fanboys became React Native developers and progressed to become web developers — need I say more?
  • JavaScript is very popular right now and we have found it easier to grow our team and find the right resources
  • Back end and front end components integrate more easily — As front end developers have a greater understanding of the back end and vice versa the overall process to define and deliver interfaces has been streamlined, thus reducing time taken and bugs raised
  • Better dev ops — As we now need less developers per project team we have more time to focus on dev ops and areas such as unit and integration testing. Using fewer different stacks has also meant that we can reuse a lot of the same frameworks in our dev ops across stacks. This means that we can do a lot more with a leaner dev ops setup. Dev ops has become faster and easier.
  • As more developers are working across a common language the group knowledge is greatly enhanced as developers combine their collective experiences to introduce a lot of good practice libraries and frameworks across multiple stacks. This in turn enhances productivity
  • Easier to read code — the existence of frameworks such as Prettier means that we have a common code standard across all projects
  • More efficient QA — QA are dealing with fewer platforms and therefore require less specialist knowledge that can only be gleaned over time spent testing on diverse platforms
  • The combination of the last four points has led to an overall improvement in the quality of code and deliverables with less bugs and more stability
  • Happier customers! — all of the above combine to provide a much more streamlined quality deliverable
JavaScript
Happier clients and high quality deliverables

Is JavaScript the solution to all your technology solutions?

The short answer is No. However it goes a long way to resolving many issues that we had experienced in our projects. In the future JavaScript (or similar) may become the single full stack language of choice but we are not quite there yet.

For Purpledecks we still have deep team expertise with the following languages

  • Swift for native iOS projects
  • Java & Kotlin for android projects
  • C++ for where we need fast running cross platform algorithms on mobile
  • Python for big data and machine learning

You will always need some domain experience on areas such as mobile (xcode, gradle, iOS signing) and for specialized cloud infrastructure such as Kubernetes and for working with GCP or AWS.

But overall JavaScript has really reduced our overheads and increased the speed and quality of the projects we work on. We recommend you give it a go.

About Purpledecks

Digital Transformations — Purpledecks help companies to formulate digital products & services around their core technology and strengths.

Our main technology strengths are React.JS, Node.JS, iOS (Swift & React Native), Android (Java, Kotlin & React Native), Kubernetes, Dev-Ops, GCP (Google Cloud), AWS, MySQL, PostgresQL, PostGIS, MongoDB, GIS

We work across a variety of sectors such as Media, Retail, Connected Health (Medtech), GIS, Fintech

Leave a Comment

Your email address will not be published. Required fields are marked *