I suggest starting with implementing the Agile ceremonies (e.g. release planning, sprint planning…..), because:
– These ceremonies require minimum training to introduce process discipline
– These ceremonies facilitate learning about real issues and improvement opportunities
– Can quickly produce results of having shippable product every iteration
– Can dramatically improve collaboration and alignment of the team with the organization and its customers
Once the Agile management practices are in place we will have the forum to develop continuous improvement including the introduction of technical practices (e.g. code review and continuous integration). Introduction of these practices will be based on causes, ROI and group agreements. Starting with engineering practices, from my background, would not be sustained if it’s not supported by disciplined process. The disciplined process improves developers morale and motivation. Motivated developers are prerequisites for developing quality code, yet alone the engineering practices.
A disciplined process produces metrics and provides visibility to management. This can allow the Agile team to sell the improvement and the acquisition of new tools or receiving technical training.
I have worked as Agile facilitator in a project which before I joined had had unit-test-automation part of the development cycle. In reality there were many developer bugs. The process was not helping developers to obtain the benefits of introducing engineering practices. The ROI to the organization was low. As we introduced visualization and Agile ceremonies engaging all related people we all found the technical issues which will help in reducing defects. The level of understanding and buy-in from various team members and other related groups became higher.
It depends on the implementation, usually I suggest to introduce technical improvement 1-2 months after Agile ceremonies are introduced.