I'm working on a college project where my team aims to create an environment for training reinforcement learning (RL) and genetic algorithms (GA) together. We plan to freeze RL and train GA for a bit, then switch back to RL training. We've got the basic framework set up using Mesa, but I'm concerned about how the three of us can work on this project without constantly having to scrap our work because we can't see each other's code until it's written. What strategies can we use to minimize waste and ensure compatibility as we progress?
6 Answers
Consider mob programming! Since there are just three of you, work together around one computer initially. That way, everyone can contribute at once and prevent redundancy. You can split off into individual tasks once you're comfortable.
You're still learning, so some waste is natural. Don't stress too much about it! It's crucial to plan out APIs and meet regularly to discuss each other's work. Just ensure everyone’s aware of any changes in the project structure to prevent surprises later on.
Ensure you have clear architectural decisions in place before you dive into coding. Creating well-documented interfaces will help everyone know what they’re working on without overlapping. Plus, using tools like GitHub issues can help track tasks and responsibilities effectively.
Think encapsulation! If you agree on the interfaces between your classes before diving into the code, you can develop the internals separately without stepping on each other's toes. Just ensure everyone is on the same page about how everything fits together first!
Start by defining your project's parameters upfront. Sit down with your team to sketch out all the classes you anticipate using. This process helps clarify everyone’s role and avoids confusion later. I recommend keeping these definitions in a separate Git repo; you can then import them as a package into your working repositories. That way, everyone’s on the same page from the get-go!
If you're worried about not seeing each other's code, just remember that collaboration often means adjusting as you go. Clear communication and a well-done design document can be game-changers. Decide on interfaces first, and it’ll minimize conflicts.

Right! That’s like an API contract, which can really streamline the process.