Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Development environment with multiple developers on a single application

I'm looking for a good way to optimise/improve the way my colleagues and I work on our applications.

We currently all work in PhpStorm on a MacBook Pro (2016), an Ubuntu server in our network and a working copy mapped on a SMB share to our machines (we sometimes edit the same files, making this inconvenient). We use Git as source control and have 1 branch we all work in.

We are noticing performance problems using PhpStorm over the network share, our application is quite large and having PhpStorm index everything makes it freeze and feel non-responsive all the time.

We're looking for a way to improve the way we work, streamlining the development of our application and removing the performance problems we have with the network share/working copy combination.

We are thinking of each having a working copy locally on our machines, having a virtualised webserver (Vagrant) and all running the application separately from each other. This would fix the issues with the network, however it would bring other problems, if I, for example, make database changes, these changes would also have to be done on my colleague's working copy.

Also, we make changes in the same files all the time, the last thing we want is fixing file conflicts every time we make change, nevertheless having to pull every commit another developer makes during the day, plus having to do their database changes manually.

TL;DR, what is a good way to work on 1 application with 3 developers.

like image 799
Milanzor Avatar asked May 02 '17 09:05

Milanzor


1 Answers

A good improvement would definitely be working on your own local copy of the application. As you describe this would fix the performance issues, but will give you issues concerning database updates.

A way to manage database updates is to make use of migration files for every database schema change. Say you make a change, you add this change to a new migration file which you add to the git repository. Having those files, everyone is able to apply all migrations on top of their local development database to keep their database up to date. It also makes testing very easy because you can just reset your database at any time and apply the migrations again.

You might have a look how others apply this. There are back-end frameworks who support this out of the box (for example Laravel for PHP).

like image 68
Martin van Driel Avatar answered Nov 03 '22 10:11

Martin van Driel