From my technical perspective I always found value in the ability to hit the ground running, Mainly the automated setups part. Automating the setup of development environments and tools ensures consistency and minimizes the likelihood of issues arising due to manual errors. Less waiting time, less dependencies. This can be accomplished using tools such as containerization, scripts, or configuration management systems. This is suitable for developers, for other roles the perspective may vary.
Integrating automation and tooling into our onboarding process can significantly reduce the time it takes for new team members to get up to speed, ensuring they have a smooth and productive transition. This can be achieved through:
- Standardized Documentation: By maintaining a centralized and well-organized repository of documentation, we can ensure that new joiners have easy access to essential information. This can include project overviews, technical specifications, coding standards, and other relevant resources. Use a wiki that is easy to manage and offers the tools you need, either if it’s confluence or notion or whatever tool you like.
- Automated Setup: Automating the setup of development environments and tools ensures consistency and minimizes the likelihood of issues arising due to manual errors. This can be accomplished using tools such as containerization, scripts, or configuration management systems. New developer joins it, has access to versioning system, ci and so on… he should be able to run one liner and hit the ground running.
- Code Review and Testing Tools: Integrating automated code review and testing tools into our development pipeline helps new joiners quickly understand and adhere to our coding standards. This also minimizes the likelihood of introducing bugs or security vulnerabilities and fosters a culture of continuous improvement. This is also linked to having a good documentation about the development process and agreed coding standards. Aside from that, the developer should have the tools needed to check that in an automated way, before sending the code for review.
- Continuous Integration and Deployment (CI/CD): A well-implemented CI/CD process can help new joiners become familiar with the codebase and deployment procedures faster. By providing immediate feedback on their work, they can quickly learn from any mistakes and iterate on their code. Did the work, pushed the code, I get feedback fast, at least for the critical components that things do work as expected.
- Collaboration and Communication Tools: Leveraging tools that facilitate seamless collaboration and communication, such as project management software, messaging apps, and video conferencing platforms, can help new joiners feel connected to their colleagues and stay in the loop on project updates. Teams, slack, discord. Whatever you feel that it suits your working environment.
By incorporating automation and tooling into our onboarding process, we not only expedite the learning curve for new team members but also foster a more collaborative and efficient work environment. This ultimately leads to better productivity, higher job satisfaction, and a stronger team overall.
One of the best places I worked at in the past, a long time ago, when Vagrant was popular, managed to setup the process so that a developer clones the repo, vagrant up and all up and running. You can improve this with docker, setup scripts for mac (if most developers use this) and so on. For Magento 2 projects, docker does have a significant performance impact (as in degraded performance) as a result, it is useful to identify options that help the developers get the most out of the tooling used.