So, there was a project to build a static promotional website. It had some basic responsive designs and cards; just basic website stuffs. And the website needed to be created as soon as possible, as there was no budget assigned to it and was simply created for some conference or a minor demo. There were no specific requirements except it needed to be done fast. The design was already set and then it was all up to a developer to complete the website as fast as he can.
Since, it was just a basic website, the developer, who indeed is very good at react and a senior (by my definition) in CSS, chose to work using NextJs and typescript. It was a pretty good decision as he seemed confident in his NextJs and typescript skill. I don't know which CSS framework he is comfortable with so I suggested to him to go for any CSS framework or any helper packages that he is familiar with. This, however, triggered a simple yet thought provocative response from him: "You are insulting my CSS skills, you know". I understand it was meant as a joke and I replied accordingly but this somehow struck a nerve in me, not against him of course but against that ego to reinvent.
When I was first working with react as a beginner, one of my seniors had his own simple "fetcher" function which basically acted as a simple implementation of Axios. It was okay to work with but as the project grew, the function produced some weird bugs and it seemed several edge cases weren't recognized inherently by the "fetcher" function. Eventually, we had to drop the function and use axios instead. My point is, it takes some level of maturity for any functions or any packages that we developed to reach a point where many common occurrences of edge cases or bugs have been identified and resolved. It was a wonderful learning experience for me as a beginner to understand what's going on inside a package. However, for the company, where the final product to be shipped matters and not the implementation, it was a loss.
The developer started working with custom CSS and within just a day he had created a beautiful website perfectly matching the specifications of the design. He was proud,of course, and so was I and maybe I WAS insulting his CSS skills. I had some concerns over creating responsive designs because a custom implementation meant having to write media queries or some flex/grid combination by himself. It would have been easier with some CSS frameworks as those would have inherently abstracted the responsive implementation and a simple API of Grid or Flex provided by the framework would have done wonders. But besides my concerns, he had successfully implemented the responsiveness like a CSS wizard.
However, I found him struggling to search for a better "modal" library for react because apparently implementing a modal was a hectic and complex task for him. He did his research and found one and used it. That was okay. Then, a huge problem arose unforeseen by him. The designer changed the primary/secondary brand color of the website and some margins and paddings. Then all hell broke loose! He had to search for every class where the changes needed to be implemented. That was so messy. Having used custom CSS he hadn't implemented themes because even with CSS var, theming in plain CSS is complicated. If only he had let go of his ego to reinvent or show off his CSS skills, he wouldn't have been in this mess. Most CSS frameworks already provide nice support for themes and all these changing needs would have been easier to fix.
Using already existing packages or libraries doesn't mean an insult to your skills. I agree it's better if you can create your own "react" or if you can create your own "modal", this would hone your skill and help you understand any future bugs within the existing libraries. However, when working professionally where you might need to roll out changes or ship a product pretty quickly don't just start creating your own react and in this case don't just start creating a custom CSS. As a developer, it's always good to be paranoid and not trust your code. You need to be prepared and having used a matured library means you are being pragmatic, it really doesn't mean you don't have the skills to create that yourself. Hell, you may even create a new internet from scratch, but why bother.
PS: I am not saying using custom CSS is bad, just stating that using a CSS framework isn't an insult to your CSS skills.