DEV Community

Discussion on: How has your relationship with complexity changed over time?

Collapse
 
sergix profile image
Peyton McGinnis

(begin rant)

With web development, it's easy to spend so much time searching for the perfect tool that promises to relieve whatever complexity you might encounter with your project. However, that complexity has to exist somewhere, and any new tool you decide to pick up has the complement of additional mental overhead in learning that tool and relearning that tool when you return to it after a while, which isn't uncommon in large projects.

From being a CS major this past year, I've had to readjust my thinking to accommodate different language types. I had a class in assembly this past semester and it really showed the importance of knowing the extent of a system, but how to manage complexity efficiently in any environment, even at such low levels of the software stack.

The problem with modern Web Development and complexity (at this point I feel like I should make this an entire post lol) is that you have to deal with 3-4 different languages in harmony and modern web development encourages strong interop between them (e.g. css-in-js, TailwindCSS) while also preaching "separation of concerns". This leads to confused and convoluted environments, great disparity between codebases that are difficult to maintain and engineers are terrified to run npm update, and tools that you find that you have to ask yourself why it even exists since it covers such a specific edge case.

Every modern web development tool is trying to solve the same problem and no one is satisfied with settling on a solution to manage complexity. That's why we're now seeing so much of "just use vanilla HTML/JS/CSS, it works great", but then you ignore the reason that ReactJS/Vue/Angular were invented in the first place: to consolidate complexity. Web development is a delicate balancing act that requires sacrifice in actually solving some of your complexity instead of expecting a tool or library to.