News and updates
📣 We’re looking for volunteer writers to help with our newsletter to summarize live events like this one. You may reach out to Ahmad or Enrico on Discord for details.
🗓️ Our next REFACTOR: Discuss topic will be “Low-code, no-code, use cases and scope”
Time: September 20, 2023 @ 1 PM EST (UTC-05:00)
Location: Discord event
🗨️ Are you still logged onto TechMasters Slack? We have officially rebranded to REFACTOR and have moved to Discord! Join us on the REFACTOR Community Discord. 🍍
Discussion recap
REFACTOR: Discuss is an open conversation where community members share their insights and experiences around a specific topic. The goal is to be open-minded and learn from each other. On September 6, 2023 we discussed, “The state of front-end in 2023.”
Front-end development, seemingly the busiest category of software development where you’ll constantly find new ideas, frameworks, and big ideas every day. Are things changing for the better, or are we continuously repackaging old ideas?
Here are some thoughts and feelings from the REFACTOR community.
Tooling Evolution
The discussion begins with a reflection on the evolution of front-end tooling. Developers acknowledge the importance of choosing the right tools for the job, whether it's using static site generators like Jekyll or adopting modern frameworks. The conversation highlights how tools like BrowserSync have instilled a high expectation in local development tooling, such as automatic page refresh upon saving files.
Even the term ‘modern’ is used in relativity since you can observe the front-end landscape as a set of 5-year eras. What is considered ‘modern’ today may actually be misconstrued as ‘experimental’ when regarded among many tried-and-true, mature platforms and tools.
The Cargo Cult of Frameworks
The conversation takes an interesting turn when discussing the prevalence of modern frameworks like React and how they often dictate the skills required for front-end developers. The debate between using a specific framework versus plain HTML and JavaScript arises, and all panelists agree that we should always choose the right tool for the job.
In particular, one of the panelists observed how specific frameworks have become hiring criteria when it doesn’t need to be:
A lot of what's been driving our industry is, I don't want to use this term in a negative way, “cargo culting” of what came before. Like if a company has built something using a web framework like React, then they hire for that skill set Whereas people who came later in the career, they came in at the inflection point where it's just like, you learn React, that equals front-end. Got news for you, that isn't [front-end].
— Ahmad Nassri
As evidenced by job posts everywhere, there’s an assumption that if a team uses React, then they must hire React developers, and that generalist front-end developers are less desirable. Developers with a comprehensive understanding of front-end development may be stronger candidates than those who only know React.
The Role of Standards
Developers also touch on how pushing the boundaries of what web browsers can do often starts with fringe or bleeding-edge frameworks. These innovations eventually lead to the adoption of new browser API standards, benefiting the entire web development community. The conversation highlights the ongoing battle between embracing new technologies and catering to the vast majority of the web still using traditional approaches.
Addressing JavaScript Fatigue—a common sentiment among developers—is acknowledged as a real challenge. The conversation underscores the importance of maintaining long-term development projects, managing stress levels, and avoiding burnout in the fast-paced world of front-end development.
The Changing Landscape of JavaScript Development and the impact of AI
In a recent conversation, Ian Penny, a system administrator, expressed his sentiments about the rapidly evolving JavaScript ecosystem:
As someone who works in systems admin, I find the JS world to be too much to keep in my brain. There's so many frameworks tools and methodologies. But, recently something has changed: ChatGPT and Copilot sort of mean that I don't feel that FOMO anymore. I can have confidence that if I did have to dissect or create some JS, I could do a decent enough job to get the work done.
Much respect to anyone who can hand-craft artisanal JS from scratch, but I suspect the number of people who do that will decrease over time.
— Ian Penney
Though AI tools help lower the barrier to entry, as well as the need to memorize new APIs and patterns, they can also lead developers down the wrong path if used indiscriminately. It can be used as a learning aid, especially for junior developers facing obstacles in their learning journey. The key is to use AI to overcome challenges but commit to revisiting and mastering fundamental concepts to continue growing as a developer.
The Evolution of Web Development Approaches
The conversation then shifted to a discussion of the evolution of web development approaches. Various approaches and frameworks were mentioned, including server rendering with PHP and Ruby on Rails, model-view-controller (MVC) frameworks like Ember and Backbone, component-driven development with React, Vue.js, and Svelte, and signals and reactivity with frameworks like Solid, Angular, Marko.js, and new concepts like resumability coined by Qwik.
Some of these paradigms may have clear performance or productivity advantages, but others are yet-to-be-proven, or cater to particularly development experience preferences. Sometimes the best choice is the one you’re most comfortable using and feel productive with. Sometimes the best choice has the most maintainable patterns and can onboard other team members easily. However innovative these emerging concepts may be, we can one day hope that in the near future we won’t have to worry deeply about things like performance that are solvable with runtime engine standards, and a framework ends up being mostly a developer experience advantage.
A Return to Full-Stack Solutions
The participants in the conversation highlighted a recurring trend in web development. While there has been a significant focus on front-end development and single-page applications in recent years, there seems to be a resurgence of interest in server-side rendering and full-stack solutions. Tools like HTMX were mentioned as examples of a move toward making back-end development more accessible and allowing developers to work on both front-end and back-end aspects within the same ecosystem. This shift suggests that the traditional separation of front-end and back-end development may no longer be a long-term trend.
Prioritizing Performance and Accessibility
The conversation touched on the importance of performance and accessibility in web development. It was emphasized that these aspects are no longer optional but have become essential requirements for businesses. Performance directly impacts user experience and business revenue, while accessibility is now a legal requirement in many regions. Therefore, both aspects must be prioritized, even if they are not always the focus of development teams.
Balancing Developer Experience and User Experience
There’s a false dichotomy between developer experience and user experience. While some may believe that prioritizing one leads to a trade-off with the other, it was emphasized that it is possible to have both a great developer experience and a great user experience. Tools like Svelte were mentioned for their ability to provide compiler warnings and nudge developers toward better practices, particularly in terms of accessibility that was—for the longest time—a responsibility put off by most developers or was ignored in documentation. Now, user experience can be more apparent and solvable in your day-to-day development environment.
The Need for Regulation and Education
Without business incentives or regulation, it can be challenging to drive improvements in performance and accessibility. Developers alone cannot change the situation, and it requires involvement from executive teams and business leaders. This involvement should include better communication of the value and risks associated with these aspects of web development, ultimately leading to more informed decision-making and investment in performance and accessibility. We cannot ‘tool away’ this problem, as Darcy laments:
We know that we should be doing these types of things like being mindful of all of these check boxes for accessibility and performance and everything. And we're actually dropping the ball because of business factors; and actually we know that we're not going to be punished. We're going to be rewarded for actually dropping these things.
So to Ahmad's point about competing priorities, it seems like if we're in the room helping to map product roadmaps, like if engineers are in the room, if developers are in the room and they know about these things and they bring them up and then they get shut down, you're not going to get time to do performance testing. You're not going to have time to optimize the entire colour palette you're using for a website so that it meets this ARIA standards for contrast ratio, things like that. And you're not going to get time to test your website, whether or not it's going to meet screen reader best practices. Then it's pretty tough. We're essentially in a situation where it's lose-lose.
— Darcy Clarke
The Evolution of Ecosystem Adoption
In the past, developers often aligned themselves with specific ecosystems like .NET or Java and adopted all associated tools, frameworks, and infrastructure. Since then, open source options have become massively popular and a-la-carte stacks could be self-hosted more easily. However, there's a notable shift back towards companies offering comprehensive ecosystem packages. Instead of merely providing frameworks, companies like Vercel now offer infrastructure, storage, databases, and more as part of a unified ecosystem. This trend makes it more appealing for developers to leverage the full suite of offerings from a single company, reducing the barriers to entry and increase speed to market.
The Debate Over Using JavaScript for Back-End
JavaScript meta-frameworks have normalized writing your front-end and back-end logic entirely in JavaScript. While there's a consensus that it can be advantageous for certain scenarios, like small to medium-scale projects or when the back-end primarily serves as an API for the front-end, it's acknowledged that JavaScript may not always be the best choice. High-performance requirements, especially in databases and server-side logic, may necessitate using other languages or compiled code. The key takeaway is that language choice should be driven by the specific needs and scale of the project.
Scaling and Infrastructure Complexity
The conversation touched on the complexity of modern front-end development, with discussions around edge computing, cloud orchestration, and Kubernetes. Some participants expressed concerns that many developers tend to overcomplicate their architectures, especially for smaller-scale projects. They emphasized that not every application requires the level of infrastructure complexity often seen in large-scale enterprises. In many cases, a single virtual private server (VPS) with a co-located database can provide sufficient performance. There's a call for developers to carefully assess their scaling needs before embracing advanced infrastructure solutions.
Balancing Innovation with Simplicity
Finally, the debate revolved around whether the current innovations in infrastructure and edge computing are driven by genuine needs or are responses to the increasing complexity of front-end development. Some participants argued that the drive for these innovations might be more about reacting to the bloating of front-end technologies than addressing fundamental requirements. They suggested that embracing simplicity in development could lead to better overall innovation. By keeping front-end complexity in check, developers may not need heavy middlewares and can better leverage edge solutions for caching and data distribution without overcomplicating their architectures.
Join our Discord to stay tuned and participate in upcoming discussions!
Did you participate in this discussion? Tell us your thoughts!