There is incredible money to be made by developers willing to follow their gut and be on the cutting edge of technology and innovation. Small and medium ICT companies offering services and customized software products can succeed if they are willing to take some chances.
Yet while projects become more demanding and complex, any software development professional — from programmer to project manager — will attest to having treated documentation, project planning and software engineering as nothing more than a formality, with no practical application in the real world. It wasn’t until I started working in a project-management capacity at a highly demanding startup environment that I realized the importance of properly planning to minimize risk, maximize efficiency and (anyone working in Egypt appreciate the importance of this one) fluidly and easily handle constantly changing requirements. Doing this effectively requires a thorough, systematic approach to development.
Extreme Programming (EP) is a software engineering methodology, which makes it more than just a software development lifecycle or a type of documentation. While EP incorporates both of these practices, it permeates the culture of an organization, rooting itself into why and how programmers like to work, while at the same time keeping it simple and easy for clients to define what they want the software to do. Using the core concepts outlined below, EP takes into account two of the biggest hurdles facing ICT professionals today: the difficulty in communicating business requirements to programmers and the fallibility of developers.
- Risk Management through Small Releases: Regular project releases every two weeks means that there is a constant analysis of the risk in the project every step of the way.
- Integration Management through Continuous Integration: Integrating every feature at the end of the two week development lifecycle means that you don’t fall into any major assimilation problems further down the line — which also further reduces risk.
- Timeline Management by Constantly Managing Scope: Gantt charts are great for demonstrating progress in board meetings — but if you can’t trace your timelines directly back to functional and software requirements, the charts become useless to ICT project managers. After roughly defining the scope initially, detailed functionality is defined in two-week stages, one at a time in a process called the Planning Game. This process clearly defines and assigns developers tasks every two weeks that can be directly traced back to software requirements and completed within a two-week period.
- Human Resource Management by Collective Ownership: In order to minimize the overhead usually associated with assigning code to programmers, EP applies the concept of collective ownership. Anyone on the team who sees something in the code that needs to be fixed is responsible for fixing that code. This creates an environment focused on value instead of resource availability.
- Quality Control through Simple Design and Refactoring: EP encourages simple design to focus on quality. Code modules are made to be as reliable as possible, instead of incredibly flexible. Future requirements are factored into the code when and if they arise.
- Corporate Environment with Pair Programming: One of the most interesting propositions of EP, pair programming puts two programmers side by side on a single computer. This fosters collective ownership, ensures all programmers are quite familiar with the project code and creates an environment where developers learn from one another. Interestingly enough, management literature states the output of two programmers sitting side by side is actually greater than two programmers sitting independently on their own computers.
- Communication Management through Standup Meetings and Common Workspace: Meetings are one of the biggest timewasters. To maximize communication and minimize time wasted, EP suggests standup meetings. Everyone stands in a circle, each individual speaks and updates the rest of the team with regards to which module they are working on and any problems they might have. Most importantly, anyone who thinks they can help with a problem offers to help — after the meeting.
EP is just one of many different methodologies for software management — others include AGILE, SCRUM, and FDD, to name just a few. Whichever one you find best suited to your organization, you can rest assured that you have a structure in place to ensure your projects roll out on time, and above expectation. However if you continue to run your projects on the fly - thinking that makes you a dynamic and fast moving company - you will quickly realize how fast things can unravel without the appropriate systems in place.
For More Information on Extreme Programming and how it can help your business succeed: http://www.extremeprogramming.org/
A version of this article was originally published in the November 07 issue of ICT Business Magazine.