How to to manage & develop big TYPO3 projects?
Problems we could find in large TYPO3 projects are not to much different from any development project.
General practices :
- configure continuous integration platform with continuous deployment tools;
- Test Driven Development with automated testing;
- robust architecture (dB, URL routing, ...);
- performance tests during development;
- use versionning with formatted comments;
- use powerful IDE as PHPStorm, Eclipse, Netbeans;
Common TYPO3 practices :
- use official API;
- follow TYPO3 API code guideline;
- use TYPO3 hooks where You can if You need to modify the logic of Core or 3rd party extensions;
- use TypoScript constants to separate data from logic in Your configuration;
Additional references :
Extensions could help to manage complex TYPO3 installation :
Use modern project management methodologies & tools
- Scrum, Kanban, lean developement principles
- Bugtrackers as Redmine, Trac
Books :
I absolutely recommmend start using PHPUnit for unit testing, but remember unit testing is really about how you create the code in the first place, not usually something you add later. But of course, better late than never.
You should consider setting up a build server like jenkins/hudson or atlassian bamboo. The latter is quite nice and integrates with zend studio which in my opinion is the better choice when developing in PHP. In general the atlassian products are widely used for software projects. (Jira + confluence + greenhopper in particular)
I would also recommend setting up phpunit on jenkins - see http://jenkins-php.org/ as a template, although I've read good feedback about Teamcity. Then, depending on the code you write you setup unit tests (for raw php code, maybe a bit with of mocks), integration tests (API and module connectivity) and system tests (selenium).
Once you have it running after each build you can be sure that at least covered functionality is working. The problem however is that you will spend more time on writing tests and their support as well as thinking about testable code. Also keep in mind that you cannot cover everything - thats not the point. You must have critical paths covered.