Skip to Content
App Development, Web Development

Three Ways to Modernize Your Development Practices

Austin Drummond
Austin Drummond
Director of Development

In the world of technology, change is the only constant. As developers, we thrive in an industry where new frameworks, languages, and tools emerge almost daily, promising to revolutionize the way we work.

But with these innovations come challenges: keeping skills sharp, adapting to shifting trends, and deciding which technologies are worth the investment. The pressure to stay relevant in an ever-evolving landscape can feel overwhelming, but it also presents opportunities for growth and creativity.

Read on to find out how our development team at Reusser stays relevant without constantly reinventing our practices, inventing new patterns, or adopting branch new tools.

1 - Modernize Using Your Existing Technology

What if I told you you don't have to switch web frameworks to adopt front-end technologies like React or Vue.js? What if I also said you didn't need to build a new API to adopt them? You could even keep using your current authentication system!

Chances are if you have an old codebase but are looking to adopt React, you might be at the crossroads of switching the stack to Next.Js, or maybe even TanStack (which, by the way, we’re huge fans of here at Reusser). For example, Tanstack Query is, in fact, one of our favorite packages to utilize for asynchronous state management in React.

One of the biggest benefits is that you don't need to spend the time learning a second routing system or implementing a new JSON API just to serve data to a second independently managed web application.

With Inertia.js, you can let React do what it does best while keeping your existing MVC application intact. It essentially lets you leverage React as the View layer in the MVC approach, replacing Razor, Blade, or Twig. This is great for teams looking to adopt new front-end technologies like React or Vue without abandoning the backend they’ve spent time and energy building.

The best part about using Inertia.js is that you retain routing management in your backend Controllers while rendering React components as views, with Page Props passed as data for dynamic rendering. Inertia.js acts as the glue, seamlessly connecting these components to make it all work.

We deeply believe using this technology is the best way to build Full-Stack applications, in part because it pairs so well with Laravel, .NET, and several other community-supported adapters. We believe in this technology so much that members of our team spend their own time contributing back to the software when we see improvements to make our work lives better.

2 - Improve the Developer Experience

Few things are more frustrating for developers than dealing with slow tools, sending accidental emails to customers, or endlessly debating which tools to use. That’s why recent advancements in PHP community are so exciting—they directly tackle these challenges. The language has grown and expanded in some significant ways over the past few years, introducing a much better type system, attributes, proper enums, to name just a few wonderful improvements.

These advancements let us build and define data models in our Laravel backend, then use those same models to generate TypeScript types for the front-end. As a result, any changes made to the backend automatically sync with the front-end type system, helping to prevent bugs and errors that might otherwise slip through in plain-old JavaScript. This practice pairs beautifully when leveraging React, TypeScript, Inertia.js and Laravel.

Just as we rely on ESLint and Prettier for static analysis and code formatting on the front-end, we use Larastan/PHPStan and Laravel Pint to achieve the same on the backend. Our editors are set up to automatically fix ESLint issues and format TS/TSX and PHP files, helping us stay focused on what matters most: building bespoke software for our clients and streamlining their business processes. Contributing back to these tools is also a key part of how we work, helping us continually refine and improve the software we depend on.

Software management can be a challenge, especially as your development environment grows more complex. For our team, macOS is the preferred OS for building great software, and experienced developers on this platform are likely familiar with Homebrew.

But as more software gets installed, updates can feel like a gamble—will something crucial break? (We’re looking at you, libicu 👀). One of our client’s dev teams recently adopted Laravel Herd, and it completely changed their team’s velocity. They had been constantly spinning up and tearing down Docker containers as they switched between projects, facing challenges every step of the way.

With Laravel Herd, you get access to NGINX, multiple versions of PHP and PHP-FPM, dnsmasq, Redis, MySQL, PostgreSQL, an SMTP Mail Server, and most importantly, Laravel Valet—all in a single app that Just Works™️. Oh yeah, it also ships with NVM to manage different versions of Node out of the box (something we may have casually mentioned to Taylor Otwell at Laracon after the Herd announcement in 2023 🙊).

And the best part? Laravel Herd supports both macOS and Windows. If you’re working on PHP, Laravel, or CraftCMS projects and aren’t using Laravel Herd yet, start today—you won’t regret it.

3 - Automate Things That Matter

Here at Reusser, we love solving problems once. We hate doing things manually that could be automated. That’s why we focus on automating what matters, like reliable software delivery, automated tests, or maintaining boilerplates that let us keep every lesson we learn and carry that over to future projects. This ultimately leads to lower costs for our clients and being efficient with our time.

We don’t spend forever writing automated tests for every possible scenario, nor do we aim for the mythical 100% code coverage. Instead, we focus on testing the critical and most common paths in our code, which delivers the best ROI for our efforts. That ROI is realized in the following ways:

  • Reliable Deployments: Whenever we ship and deploy code, we have confidence nothing will break. Confidence and trust are paramount for software developers.
  • Safe Refactoring: If we need to refactor code, we’re reassured that critical paths won’t break. Have you ever hesitated to touch code you didn’t write for fear of breaking it? With excellent test coverage, you can feel much more comfortable making changes. (Mutation Testing ensures your test cases are robust.)
  • Behavior Documentation: Perhaps most importantly, it gives us a chance to document how the software should behave. Yeah, sure, code comments are great, but I would take a robust test suite over code comments any day of the week.

We also invest in building Fast Pipelines in GitLab CI/CD by staying current with new features and optimization as the GitLab team releases them, or leveraging a home-grown solution for Zero-Downtime Deployments in PHP.

Here’s a snippet of the fastcgi.conf file change you would need to make to allow resolving symlinks when NGINX passes the request of to PHP-FPM:

fastcgi_param   SCRIPT_FILENAME     $realpath_root$fastcgi_script_name;
fastcgi_param   DOCUMENT_ROOT       $realpath_root;

In addition to self-hosting software and possessing complete control over our data, we also utilize webhooks across all our internal software to streamline our processes for our entire team, enabling workflows and connections most businesses dream of.


Take the Next Step Toward Modern Development

Sometimes, the best way to speed up your team is to first slow down and evaluate your processes. If you’re ready to adopt these practices in your development team, let’s talk.

Click the button below to schedule a free 30-minute consultation, where we’ll explore how these strategies can help solve the challenges your team faces when adopting new software or modernizing your approach.