Engineering
How We Choose Tooling in Our Quest to Ship Faster
How to maintain quality when the goal is time-to-market.
Many clients come to Postlight with a common goal: They want to grow their business and lay a technical foundation for the future, and they want to do it quickly. Shipping high-quality, reliable software becomes a challenge when your goal is time-to-market. So how do we do it?
Pick platforms that leverage large, proven ecosystems
Postlight has long been a huge proponent of the open web. The web platform’s unique appeal is that it’s not controlled by a single actor or corporation, and it has been able to maintain that level of freedom for decades. This level of openness has encouraged programmers to build world-class tools for the web, and Postlight uses that to our advantage. Much of the software we build uses web technologies based on battle-tested foundations supported by this ecosystem.
One of the benefits of being an agency is that we build new platforms and applications regularly. When we kick off a project, we use our collective learnings from our past work to pick the dependencies that we know will strike the right balance between stability, velocity, and longevity. When we make a bet on a new foundational platform, we try to think at least five years ahead. We were early adopters of React because it was clear to our engineering team that this was a framework worth investing in. In the seven years since, React has grown to become the de facto standard for building complex web interfaces. Code that we wrote in 2015 has stood the test of time and is still relevant today.
There are other times when we’re cautious with adoption. For example, there are many new database technologies out there, some of which are truly innovative and exciting. We’re watching the database space with interest and keeping an eye on new offerings like Cloudflare D1, Fauna, Supabase, and Fly.io’s work with Litestream. Postlight experiments with technologies like these in Postlight Labs, and that helps inform when we’ll use them in a production environment.
At this point, however, most of our client projects tend to rely on tried-and-true solutions like PostgreSQL paired with AWS RDS. With choices like these, we know we have limited risk due to broad adoption and decades of stability.
Empower developers to move faster
Developer tooling has also grown substantially in the past decade. Visual Studio Code has emerged as the leading editor for web development. It’s an incredible tool available for free that’s fast, cross-platform, and has a giant plugin ecosystem that can solve needs with the click of a button. While we encourage our engineers to use any editor they prefer, it’s nice to have a solid baseline for anyone to jump in and be productive. Engineers can quickly add tools like eslint or use containers that empower them to build software easier and faster.
There has also been a huge step forward with language formatters like prettier, gofmt, and rustfmt. Since the beginning of programming, code correctness has been paired with code style. While code style is something that many programmers have developed nuanced preferences for, it’s inherently subjective and, over the long term, leads to bikeshedding over small details. While the spirit of these debates is in good faith, these formatting tools have proven that it’s better to have reasonable defaults. When code organizes itself powered by your tools, it removes one more cognitive burden when writing code.
Beyond our local machines, we pair our development tools with services like Netlify and GitHub Actions to deploy code quickly in a highly iterative process. It’s not uncommon for our teammates and stakeholders to see working software within days of kickoff, which leads to high-quality discussions and reduces risk. It’s much easier to close a feedback loop with a designer or client when they can see the software, tinker with it, and give feedback. This helps us avoid a waterfall process and increases transparency for everyone.
What’s coming next
While there has been incredible advancement in developer tooling in the past decade, we’re on the cusp of a new frontier of code authoring. AI-powered tools like GitHub Copilot and ChatGPT have shown that programmers will be enabled by tools that can actually write code to accomplish problems. Software engineers will have to validate this output and bring these tools together in a way that is less about pure keystrokes and more about orchestration of powerful tools.
It’s exciting (and a little eerie) to see what these tools are capable of, but I’m very optimistic that utilizing them will lead to individual engineers being more productive and more capable. The tools are evolving at a rapid pace, but there has never been a better time to embrace them and build.
Aaron Ortbals is a Managing Partner and Head of Engineering at Postlight. Reach out at hello@postlight.com.
Story published on Feb 21, 2023.