Reviewing Your Frontend Applications
Below are some notes I’ve taken from setting up new code repositories and onboarding new team members. Hopefully they can help improve your current documentation and notes to make onboarding a smooth process.
Onboarding
When new members start, do you have processes and documentation in place to make onboarding easy?
☐ Is your process written down?
☐ Add a note for people onboarding continue to improve it when they walk through it. Every time a new members onboards, they should follow the documentation and update it with any missing steps or new errors and resolutions if they come across them.
Environment Setup
Part of onboarding is getting your environment set up. Usually, a team will have a preferred IDE and environment set up so that it is easy to help each other if there are any problems.
☐ Is the preferred IDE documented?
☐ Are preferred 3rd party plugins that developers install listed and documented somewhere?
☐ If there is a VPN, are all the VPN details documented?
☐ Is the preferred Git usage documented? IE git-flow etc?
README
Each repository should have a main README that acts as a starting point for people new to the project to read. This should be useful to people who have been at the company for years, all the way to someone new who has just received their laptop:
☐ Does the README have all the steps to:
- Download
- Install
- Run
- Deploy
- Test
☐ Architecture - Is the architecture documented? This doesn’t need to be all documented within the README, but the README should at least link out to external documentation that covers:
- Clients, servers, databases, 3rd party systems are documented
- Data flows between systems are documented
☐ API Documentation - How is the API documented? This is similar to the architecture section.
- If your repo has components, is there a Storybook or similar site to document the interfaces?
- If your repo has web APIs, is there a OpenAPI spec that can be viewed?
- Other projects will want to document their APIs as well.
☐ Design System - Similar to the API documentation, if there is a design system that is used or implemented, does your README call that out?
- Documentation - do you have a link to how to get to the documentation?
- Storybooks - is there already a live storybook link somewhere? Does your README document how to run the storybook as well?
Building and CI/CD
If your project is buildable or deployable, do you have documentation on the Build Pipeline and the CI/CD PIipelines? These are important to simplify and document. Someone new to the project should be able to follow the README in the repo to build the application and understand what happens when they push a commit to the repository.
☐ Build Pipeline
- Can the app be built in one step?
- Is the pipeline modern?
☐ CI/CD
- Is there a CI/CD runner?
- Is it documented?
- Are there lint guidelines?
- Are they checked on the CI/CD?
- Are there unit tests?
- Are they run on every commit?
- Are there pre-push and pre-commit hooks? You can use Husky to set these up
Testing
As mentioned above, running unit, integration, and e2e tests may be part of the CI/CD pipeline. Will new people who onboard be able to follow the repo’s README or some other document in order to understand how to test their changes? If there is code-coverage, how do new members of the team know where to find them?
☐ Testing
- Is there a test pipeline
- Are there unit tests
- Are there automated code coverage reports?
☐ Bundle Sizes
- Make sure tree shaking is happening correctly
- Analyze the bundle size with create-react-app or BundleSizeAnalyzer webpack plugin
☐ Performance
- Analyze your web app for pagespeed, lighthouse rating, and a11y
External Services
Sometimes repositories are self-contained, but more often than not, a repository will pull external information from a service. This might be feature flags from providers like LaunchDarkly, or website content from a Content Management System (CMS). Do new members of the team need API keys for these services? Make sure to document any external services and how to access them.
☐ CMS
- Are there a lot of text and content that is constantly updated?
- Is there a CMS already implemented?
Conclusion
This is not meant to be an exhaustive list of everything to think about concerning onboarding members to a project. Documentation is nice to have, but working with the team to understand what is missing and how to improve it goes a long way to keeping the team happy and productive.
I highly recommend reviewing the onboarding process from time to time and making sure that it is easy to onboard. You never know when your computer will crash and you need to set up your entire environment again.