To avoid a project’s technical debt piling up because its dependencies are never updated I created some Github Actions workflows to periodically open a pull request that updates the dependencies to either the last minor or the absolute latest version.
I created an internal static website containing the best practices that applies to all integrations teams. I often add content in relation to workshops I run so my colleagues can have centralized knowledge base. It later evolved to include code snippets to share common code that don’t have their place as a standalone library or React component.
Integrations teams resented creating a whole new tech stack for new Javascript projects. I created two boilerplate React projects for the main platforms we develop that include the code and main dependencies needed to run and deploy an application.
I often do pair programming sessions using the Driver and Navigator style to teach and help my colleagues. I find it’s the best method when you need to teach someone. As a Driver the learner has to be active in the process which helps staying engaged.
Not everyone stays up to date with React native features and I often run workshops to keep my teammates up to speed. Recently the workshops have been about Hooks, Context and how they can work together using a pattern Kent C. Dodds came up with.
Redux has most often been used for application state management in React, until Context came along. It has a steep learning curve due to its asynchronous nature, vast plugin ecosystem and the amount of boilerplate needed. In workshops, I teach Redux core principles and encourages people to use redux-toolkit. The Redux team created it to ease the amount of boilerplate needed.
Engineers in my teams do not like having to research for what the best dependencies are. The React ecosystem is vast and moves constantly. The most recommended libraries shifts constantly to follow React. I maintain a list of dependencies that my teammates can use when they need to add features to their project.
One of the internal system we use is often called from our frontend applications. All those services are inter-dependent and defined in Swagger files. For each projects we had to rewrite API calls to the same endpoints which results in a lot of code duplication. I made a PoC to generate a CRUD level SDK in Typescript using the Swagger files.
Testing UI code is by nature widely different than testing backend code. Enzyme has been the most used React testing utility for a long time. Testing-library came out recently and offers a new approach to testing. I ran workshops to introduce and teach it to fellow engineers.
One of the boilerplate I made evolved into a Yeoman generator due to the amount of subsequent steps needed to deploy an application onto one of the platform we use. It also allowed the boilerplate to be lightened by adding commands to integrate JS libraries such as Redux.