By Laszlo Szalvay
Scrum is a lightweight project management framework that is taking over the software development industry. It has become the de facto management strategy for most IT organizations, dominating the discourse within the Project Management Office (PMO) in recent years. Although the founders of Scrum intentionally refrained from prescribing engineering practices, many Scrum teams have experienced success by pairing the framework with engineering practices from the eXtreme Programming movement (XP). Here are the top 7 engineering practices to consider when running a Scrum team.
- Pair Programming.
Employing a “driver/navigator” work paradigm for your software developers helps to ensure that quality standards for code remain high. In pair programming, a senior developer is typically partnered with a less experienced developer and, as described above, the senior developer “navigates,” while the junior developer “drives.” The benefits of this arrangement are huge: Junior developers can learn the ropes from a more experienced mentor; the two can brainstorm new ways of working; and the organization experiences improved employee retention, thanks to heightened morale. - Sustainable Pace.
Software development is complex and hard. One of the best ways to get past burnout is to limit the number of hours your software development teams work via a working agreement. Surely, it can be a team building experience to pull an all-nighter, but these exercises should be unique and infrequent. If your company culture includes a death march work schedule strategy as policy, one good way to mitigate the employee churn or turnover is to have a strong recruiting division. - Coding Standards.
Coding standards are similar to writing standards, like MLA or AP. They are agreed upon at the outset of the project, either adhering to a recognized standard or a baseline the team has developed among itself, so as to limit heartburn later. - Endless Refactoring.
Refactoring is the process by which a software team improves the code’s readability, structure, design, and scalability. XP advocates refactoring as an ongoing, cyclical process, in which code is thoroughly and repeatedly re-factored. - Acceptance Tests.
Performing acceptance testing in the form of UATs (User Acceptance Tests) helps the team ensure that the product it has built is in alignment with the acceptance criteria staked out by the customer. By continually comparing progress-to-date against the customer’s expectations, the team can make sure it doesn’t waste time or energy pursuing undesired functionality. - Unit Testing.
Unit testing, whereby units of code are tested to see if they are fit for use, are essential to successful product development. Even if, through acceptance tests, a team determines it has built everything into the product that the customer requested, the product still has to perform flawlessly. - Continuous Integration.
This XP practice leads teams to speed up the development process by decreasing integration times. There are myriad "CI" tools on the market to choose from. Pick one and then integrate early and often to expedite the development process.