I’ve dabbled in numerous programming languages over the years, but recently I tried to develop a web application with a friend. Neither of us had ever worked in a group prior. It was a disaster. I know there are tools out there for that sort of stuff, but there’s so many, and I don’t know where to start.
For those of you who have worked in a group environment, I’d like to hear about your experiences; how did you get started; what tools did you use; and what was the workflow like?
I just learned about GitHub (for version control), and FreeCodeCamp (for learning). In the past, my partner was responsible for the back-end services, meaning that he set up the server, database and website. We used FileZilla, where we’d have to reupload every file we changed just to see it in action on our website. Surely there’s a better way.
Thank you for all your help, in advance!
When you say it was a disaster, what were the specific pain points you encountered?
(1) When editing files on my local system, I would have to manually overwrite the master files on FileZilla just to test them because they required data from the database. In other words, we didn’t have a way to develop either offline or without overwriting the master branches.
I’m sure this is a terrible methodology, but that’s exactly what brings me here asking for your help.
(2) There was no version control or branches (which I now know GitHub offers). Meaning that I’d come back to my computer after an hour, to find that the website was changed dramatically but with no list of how or why, let alone a way to reverse any unwanted changes.
(3) We often would be unable to work on certain files in fear the other person might be working on them offline, and that they might overwrite my work. I know this is resolved with GitHub’s branches.
As you mention, GitHub is the likely solution to most of these issues
You might like to look into the ‘Fork and Pull’ GitHub workflow, where you use pull requests in order to ask your partner to review your code before it is merged. That way there are no surprises when you come back hours later.
You might find that something like Heroku is easier to use for deployment. I don’t know what FileZilla is like, but for Heroku, deploying updates is as easy as keeping your GitHub up to date. Basically you push your new code to it as you would GitHub so your local copy always reflects the master branch on GitHub and Heroku.
Branches won’t fix this because there will still be merge conflicts if you’ve both worked on the same file. Version control is absolutely critical, but so is communication. Figuring out what needs to be done and making sure each person has an assignment to stick to will help keep your changes focused enough that merging will be… not as painful. You can assign and track tasks using GitHub issues. Check this out:
If you do stumble into merge conflicts, Git Kraken is a great visual tool for helping you fix your problems.