I'm really interested in hearing how different teams are handling standardization of their development environments, especially in rapidly changing contexts with lots of microservices or additional repositories. I've faced recurring issues such as outdated setup instructions, missing `.env.example` files, and Dockerfiles that fail on fresh installations. Additionally, GitHub workflows tend to be unclear or undocumented, and onboarding often relies on informal knowledge sharing via Slack. It feels like I'm always reaching out to someone who last worked on a project, which isn't scalable. I've started developing a tool to automatically generate essential onboarding and setup files from the structure of a GitHub repo, such as `README`, `.env.example`, Dockerfiles, and GitHub Actions. I'm not here to promote it, but I'm really curious—what strategies, templates, or tools have you found to effectively reduce this chaos? What standards do your teams use to ensure repositories are onboarding-ready? I'd love to learn what's worked (or failed) for you!
3 Answers
It sounds like the real issue might be a lack of discipline among developers rather than a problem with the tools themselves. Setting up some clear standards and templates can help, but ultimately, it's up to the devs to take ownership of the CI processes. If their performance metrics include making onboarding easier, they might be more inclined to tackle that. Creating a 'golden path' for onboarding has its challenges and may end up being ignored or constantly needing updates, which can lead to frustration. It’s all about advocating for best practices and getting everyone on board, but if they don’t want to, that’s not on you.
Absolutely! If the culture doesn’t prioritize onboarding, no tool or standard will fix that. It helps to provide scaffolding for common practices so developers don't have to start from scratch, which can ease the pressure.
Leveraging Infrastructure as Code is key for creating a standardized dev environment. I highly recommend looking into Nix flakes for managing local environments. While the learning curve can be steep and the documentation needs improvement, the payoff is worth it; they really help to keep consistency across setups. If issues crop up due to not following guidelines, the best way forward is to conduct a post-mortem and draft a policy document. If someone is skipping the standards, let them sort it out when things break!
Thanks for the recommendation on Nix flakes! Sounds like a great tool for what I'm trying to achieve. Time to dig deeper!
I hear you loud and clear. Getting everyone to buy into standard processes is half the battle. Start by figuring out what development approach works for your team—like trunk-based development or Git flow—and stick to it. Make sure you have a consistent coding format using tools like Prettier for your codebase. Keeping things uniform significantly lowers the cognitive load on team members. Also, implement CI/CD practices by setting up gates for contributions. If something doesn’t meet standards, break the build and give swift feedback. This way, developers don’t have to switch contexts just to fix issues. By the way, how do you all feel about taking responsibility for maintaining the code you write?
I totally agree on the importance of maintaining code for the next person—it's something I strive for, too!
I appreciate your insights. I’ve not used trunk-based development but I’m considering it after reading your thoughts. I’ve started using Linear for task management, and it’s already made a difference!
You're spot on about the culture. It’s a tough situation when people aren't incentivized to follow best practices!