I sometimes like to compare the tools a software developer prefers to the way a chef might have particular ingredients that he prefers to use when cooking a meal. Sure a chef may use a wide variety of ingredients depedning on what the meal calls for, but they have opinions and preferences towards certain ingredients over others. Software developers are not that different. They often prefer a set of tools and ingredients when building applications. Reusing the same tools and ingredients helps developers become more efficient in building applications.
For years I was a developer focused on .net development. However in recent times I've gravitated towards javascript. Once node was born and we could now use javascript on the server becoming a 'full stack' developer seemed much more palpable. Today we can write cross platform desktop applications using electron, native mobile applications with react-native, server applications in node, and web applications running either server or client rendered.
My favorite ingredients when building web applications.
- react
- react-router
- webpack for bundling, tree shaking, minification, etc.
- styled components or glamorous for styling/theming react components
- redux-form manage form state in redux
- latest ecmascript standards (ES6 and beyond) using babel for transpilation
- flow a static type checker for javascript
- atomic design project organization guidelines
- ARc boilerplate for atomic design that also uses many of my favorite ingredients
- redux - predictable state container for application
- redux-saga facilitates side effects in redux, test friendly
- reslect memoized state selectors for redux
- storybook enables demonstration of react components along with various states
- jest makes getting started with testing frictionless
- enzyme easily assert/traverse your react components
- Apollo Client a graphQL implementation for react
- gitlab for source control and continuous integration
- next.js framework for server rendered universal JS apps
- sails a rails inspired API framework. I probably would recommend HAPI over Sails today, but I'm currenly more proficient in sails, so if I want to build something fast it could be something I use.
- firebase - realtime database, authentication, hosting, and storage solution by google.
- express - minimalist web server for node
- hapi - rich server framework built by Walmart Labs
- graph cool graphQL as a service
- apollo server graphQL server implementation works with Express, KOA, Hapi, and more