Lately at my job, one of the most worrying problems is the ability to break the codebase. We have huge projects with too many lines of code, and too much functionality in the same place. So they are pretty hard to maintain and escalate. In order to fix this problem, I am trying to make small pieces to integrate them into bigger components. To avoid working with Redux and having to assemble the #store when launching the project, I have decided to use Apollo with GraphQL and separate the data requested among components. Thanks to GraphQL, we can decide which data is going to be required for each component, and grow the application state the moment the component is rendered and the data required.
Considering myself an 80%/20% full-stack, my time using Node.js at the backend is limited. This is why I have started using Firebase as the back for most of my personal applications. The amount of tools and resources is amazing and covers the most common needs like #authentication, storage, database, real-time database, actions, and hosting. It's a total grown-up product and the free tier is enough for most of my personal projects.
Using Webpack is one of the best decision ever. I have used to Grunt and gulp previously, but the experience is not the same, and despite I know there are other bundlers like Parcel, Webpack gives me the perfect balance between automatization and configuration. The ecosystem of tools and loaders is amazing, and with WebPack #merge, you can modularize your build and define standard pieces to assemble different build configurations. I don't like processes where you cannot see their guts, and you have to trust in magic a little bit too much for my taste. But also I don't want to reinvent the wheel and lose too much time configuring my build processes. And of course, I love #WebPackDevServer and hot reloading.
I decided to use ESLint over other tools like Prettier because I think it's better to show your fails than fix them without knowing what you are doing. It's a better way to learn. I know it's slower, but you are fully conscious of your work. I also use Sass linters for the same reason. I recommend Prettier when you are already a senior developer, but try to use linters instead when you start coding. It will help you to improve a lot. I recommend you #Airbnb rules set. Strict, but well written. Very useful even for accesibility.
I have chosen Visual Studio Code after testing a lot of other editors like Atom, Sublime Text (with legal license), Vim or even Notepad++ because it is the sum of all their virtues and none of their defects. It's fast, it has all the tools and plugins I need to work, and it's pretty and very good optimized. It has what I need to work and nothing more. And the main plugins works like a charm. Developing for React or Flutter is amazing. Even the TypeScript plugin works great. I like how IntelliSense works, and all the extra tools to code remotely using #ssh, access #RESTfulAPI or event manage projects or collaborating remotely. Thanks #Microsoft for Visual Studio Code.
I really enjoy using Jest as my testing framework. I also use Enzyme to complement, and both together are amazing. Jest is fast and easy to use, It has all you need together under the same tool, and it's pretty easy to create all kind of test, even asynchronous ones. I was responsible for implant it in our company projects, and it was the best decision for testing.