Some things i came across in india... best practices for the rest of us |
- Do not double-assign tasks to different people
- Do not switch task assignment when first one is 90% done - second person will start from zero again
- Do provide clear and precise bug reports.
- Actions to follow when reproducing behaviour
- Rerence to testcase if applicable
- Expexted result
- Actual result
- Log files, error messages, etc.
- Provide tracebility requirement->testcase->bugs/status
- Do not put date/version tags to the file names when using svn. Use svn mechanismn (copy to version) instead!
- Do not produce multiple copies of documents in different folders
- If you change something (code, config, etc), send precise and complete information
- Use same logins (username,password) on every environment
- Don't change them
- Provide public list of these logins (put on wall!).
- Do project/task planning in one location only. Do not mix MSProject, Excel, Whiteboard, Resultspace. This will become a maintenance nightmare!
- Plan activities or results, not fluff like "Anything else?" or "Multiple CDP porlets on same page leads to multilple calls to Content fetch"
- Intregrate specialists early in the project, especially in the design. It does not really help to do a bad design, than get lot's of experts to help implementing this.
- Get experienced people and leverage them properly. Do not let them do trivial things... They are too expensive and get pissed off easily.
- Do not start project with tons of rookies...
- Assure they know the basics upfront. You cannot easily teach a 4 years old how to drive a Ferrari...
- Have Arch decisions double checked by someone else. They may be wrong...
- Go for simple approaches, do not plan to future proof everything.
- Watch performance impact early. After 96% completion, it becomes harder to change.
- If you identify potential problems, clear them immediately, even if LOE seems to high. Later they will catch you again... (e.g. logger - my fault not to escalate it...)
- Enforce some discipline (be on time, read and answer email, check your own stuff, inform properly and precise, provide ALL necessary information,...)
- Setup process for environment replication early (ghost images, vmware, etc.). See this: 50 developers spend minimum 2 days on setup and also need help from others => Minimum waisted time= 100 person days = ??Euro??
- Setup monitoring and notification early. How often did we have the case of not running servers and following research?
- Environment down => 2-50 people playing pocket billiard...
- Provide a valid build process early. In the 39th week of implementation you don't want build problems any more...
- Start vertical slices of complex functionality early. Release working software often, with minimum functionality. E.g. implementation for CDP as a very important part of the solution might have started much earlier. And you always want to be able see something...
- Setup continuous integration - at least for common parts like framework or portal_commons, etc.
- Watch dependencies and 3rd party library usage!! We currently seem to include every open source lib in the world...
- Provide reasonable hardware. 100€ (even 1000!) for Ram is nothing compared to people being unproductive.
- Have QA people who know their job. Rookies will not give you any benefit here! Only if you want a "delivery assurance" instead of "quality assurance". But, this will get you later...
- Value/productivity of really good people compared to rookies can be 1:10!! So, get the best and let them do what they can do best!
- Roles of senior developers/techies needed! There currently is a gap.