I have worked with a lot of teams and startups over the years following are the things I would recommend to be successful,
Because communication is the key to everything, setting up a communication channel from choosing the right tool i.e. skype, slack, or another would be the first thing to do. Then you need to set up the guidelines for communication i.e. each team member with a specific role has to update about his roles/ responsibilites by either end of day or end of week. Everyday in my opinon is more cumbersome for people than updating every week.
Similarly updating everyone is not necessary its annoying. Not everyone needs to know what you have done. Its good to know in a general sense about what everyone is upto or what his responsiblities are in a team which can easily be done in a weekly biweekly team meeting. That would be off topic but worth mentioning.
2. Setup project/ code tracking setup
Git. The answer to it is git. If github suits you perfect if not go with bitbucket but use git for every single project.
If you wanna do proper and efficient git, do git flow. You can find out more about it at Git Flow Cheat Sheet
3. Use Docker for code/ env compatibility
Maintaing project/ code for a longer period of time is cumbersome task as libraries depreciate, new technologies feature comes in, old gets obselete. But your software gets stuck at those legeacy dependencies and when someone new joins your team and wants to setup your project well he can’t even find those dependencies and now you are stuck. If you want to make it easier to work in a team and run same enviroments, same packages and technology stack build using docker containers.
4. Setup different enviroments for development and production (stagging if necessary)
Using a different server/ enviroment for development but same tech stack is a good way and to do updaets/ hotfixes and releases in long term projects with active product development. It helps in easier releases and testing them before releasing to production.
5. Push to repository frequently
If you can push to repository with each update that’s the best case but do push to repository. Make a habbit of it.
6. Document the releases
Use branches for hotfixes and features & use tags to release, It helps to maintain a version based releases and to document release notes. Documenting the releases with changes made, features adding is the most importing thing when maintaing large scale projects. Especially an open source project.
7. Setup a way for clients to communicate & report bugs
Its very important for the customers to know exactly how to seek help and for the team to take on those reports immediately.
I can add a lot more information but I’d sum it up here.
Also see My Approach to building projects
@Copyright 2020 Peham R.