The State of Web Development
We Have Come a Long Way
After a friend's recommendation, I recently got interested in Aaron Swartz's life and started diving into his blog. I came across this post he wrote back in 2005. I got a glimpse of how Web Development looked like back in 2005. I only started programming in 2012 and got into web development in around 2015. So even though I have had my fair share of copying files on a server using FileZilla, I have no idea how things worked back in 2005. So this turned out to be a pretty interesting read for me.
One thing I definitely realized is that we have come a long way. 2005 Web Development was like Uncharted 1 and 2020 is like Uncharted 4.
You might be thinking this is such an obvious thing. Things do evolve Praneet, what's the news? Don't you have anything useful to say you dumb toaster?
My point here is that taking a look at the past made me appreciate the present even more and has left me very excited about the future. We evolved from figuring out database queries by counting underscores to having awesome tools that can generate a whole production-ready backend with just a few clicks. Tomorrow when I will sit on my desk and start working, I will be even more amazed by all the tools and technologies I have at my disposal. I will marvel about how years of re-iteration and the efforts of thousands of brilliant minds got us where we are today.
But We Are Still Hype Driven
Sadly, a large part of our community is still hype-driven. Marek Kirejczyk wrote a very nice blog post about it back in 2016. Kitze has been reminding us about it through his talk. Years have passed, I think we still haven't moved on much. We all want to use whatever is the latest and greatest on Twitter and Reddit. Our biggest blunder was Redux. Redux is not bad, but it is suitable only for some very specific use cases. 98.36% of the projects that use Redux don't even need Redux (Don't mind, I just like to throw in random numbers. But you get the idea). Still, all the companies and the developers and their cats are using Redux for their cake recipes app. I see the same trend in 2020 with Recoil. As soon as it was announced, thousands of developers jumped with joy because they have this new state management library from Facebook that they can use with no need whatsoever.
Users Don't Give a Shoe
People still use sites built using jQuery. I have seen products being shipped in 2020 that are built using PHP. The hard truth that we all need to realize is that no one ever lost a customer because their site wasn't using the hottest state management library or using some fancy routing thingie.
We focus too much on our pleasure as developers and care too little about the users. It's us who want the perfect Lighthouse score. Do our users want the site to be PWA compliant? No. It's us who wants to screenshot those 4 perfect green circles and brag about it on Twitter. We developers have curious minds, and we constantly want to stimulate our brains with something new to do. Shipping 5 products of value using the same tech stack that just works is too boring for us. We would rather use something new and fancy every time. Whenever there's something new in the Twitter bazaar, we just want to go ahead and rewrite our whole project more than anything. We have an itch that will not go away until we use that new thing. We just want to use the 'latest cutting-edge technology' and get the joy out of doing it. And before we know it, we are stuck into this vicious cycle of refactors and bug fixes, never actually pushing features that the users care about.
I have been guilty of being not enough user-centric. I am constantly trying to shift my mindset on shipping more. I use mobx-state-tree for almost everything I build because it allows me to ship more and ship fast without babysitting my code. I've heard Vue.js and Svelte are great, but I'll still use React for my next project because switching the framework won't provide any extra value. This does not mean that I am not open to change. Whenever something comes along that will help me ship better quality products faster or fits certain use-case, I will definitely experiment with it. But I try not to fall for the hype. Our team at Sizzy tries to give the users something new every weekday. It may be a bugfix or some big feature, but we focus more on improving the value of our product for the users.
The React Ecosystem is Very Fragmented
We have a million ways to build our sites, and we don't need more. React needs fewer ways to manage state, fewer ways to style our components, fewer routing libraries and fewer ways to build a static/SSR site. We need solutions that don't suck, and work well together. We desperately need a well-thought cohesive framework built on top of React.
I look forward to the day when we don't have to go library shopping before starting a project. I am waiting for the day when we developers start shipping products without worrying about our webpack config and babel plugins and 100 more things that we should not be concerned about in the first place. I think we are already on that path, and we'll get there. The future won't suck.