As front-end developers -- ones who love to code and design -- we must find a balance between each, without sacrificing creativity. Automating manual tasks lets computers handle the tedious and repeatable tasks, allowing developers to focus on what matters most. Many backend developers are already using server-side tools to automate their build and release processes; for the front-end, many of these tools hadn't existed up until the last few years. Often, we’re having to compile stylesheets, minify and obfuscate JS, tag and release versions, and deploy all this code to multiple systems. The few minutes that it generally takes to complete these tasks numerous times eventually add up to hours of what most would consider "wasted time".
Which problems will an automated build process attempt to solve?
-
Inconsistent builds: IDE's are wonderful tools, but unless your entire development team is using identical versions of the same software, the settings are bound to be different. This means that you will probably encounter inconsistencies, which will require time to resolve before releasing (git rebase -i, anyone?).
-
Failing builds: When developed correctly, unit tests are an integral part of any application framework, if not by simply avoiding scenarios where one bug-fix creates another bug. However, writing a test simply isn't enough, as you have to regularly execute the entire batch of tests, which if you're doing manually, you may be forgetting some -- you could have failing tests and not even know it.
-
Human error: this is simply unavoidable -- we're not perfect, therefore anything requiring human interaction is prone to potential mistakes.
In this session, I will be going over a highly opinionated piece of software that myself and a couple teammates at Acquia have built to automate our front-end build process. This process has granted us consistency in our development practices as well as increasing velocity in software development. Building the tools for our most important audience -- ourselves -- we were able to pinpoint the exact problems that we wanted to solve and the problems we wanted to avoid. While automating a process is an important endeavor, we also had to focus on coding standards and best practices to ensure that the tools we are building are optimal and extendable; no one-trick ponies in this circus. There is a special surprise at the end of this session! You will not be disappointed.