I work at a small Web Dev firm, and have been handling all the PHP/MySQL/etc. for a while. I’m looking at improving our practices to allow for easier collaboration as we grow. Some things I have in mind are:
- Implementing a versioning system
- Coding standards for the team
(unless mandated by a certain
framework, etc.) - Enforcing a common directory
structure for our Desktops (for
backup purposes, etc.) - Web-based
task/project/time/file/password/contact
management and collaboration app(we’ve tried a bunch; I may just create one)
What do more experienced Lead/Sr. Developers view as necessary first steps in this area? Do you recommend any books? One thing to consider is that the bulk of our daily tasks involve maintenance and adding minor functionality rather than new projects, and the team size will be between 3 and 5.
I’m surprised I didn’t find a similar question by searching SO… Is there a more appropriate place?
1) Implementing a revision control
I would suggest making friends with Git. It is a distributed revision control system. You do not need any “central unit” and every working copy contains full development history (and therefore is a backup copy). There is “Git Magic” – a great tutorial for those who are not familiar with revision control systems.
Revision Control Systems help with progress assessment. You work therefore you commit. A simple diff can give you a lot of useful information about progress, problems and the actual code in no time. A diff is like a picture: worth a thousand words.
2) Coding standards
It is not about re-invention, it is only about implementation. As you are working with PHP, I would implement the Zend Framework Coding Standard for PHP.
For documentation you might want to use phpDocumentor. There will never be enough time to document everything. But many things are obvious and need no explanation. Discuss the other things with other team members, make comments on that.
3) Workstations
It is much better to use a revision control system or a shared directory than a unified workstation solution. A distributed revision control system is very good for backups. Not only for the output (the code, you make), but also for the input (the stuff, you get from clients). Think of it as of a thing, you do not want to consume the time on.
4) Collaboration app
It is difficult. There is no perfect app. And it is all about discipline. As I mentioned before, a revision control system helps you to monitor a progress and identify problems. Do you, as a Project Manager, need a planner app? Does a pencil and a piece of paper work? If so, then does a wiki. Contribute to it and let your team to contribute. it works well for me.
5) Books
Joel Spolsky is your friend when it comes to project management.
6) Additional advice
7) If in doubt…