Image by Kirk
Delivering high-quality software products on time, without overloading developers can be a challenge, but it’s definitely not a myth. It's quite possible in teams that have agile methods in their bag of tricks and utilize them on daily basis.
The great thing about agile development practices is that they’re very flexible and you can choose the methods that work best for your individual project. If you’re planning to introduce agile methods in your software development process, take a look at the these 5 techniques, as well as some great tools, that we believe can help your project succeed.
Based on our experience, we found the following methods useful:
- Code Review
- Module Testing
- Code Refactoring
- Build Automation
- Continuous Integration
1. Code Review implies a systematic check of initial source code which helps to detect and fix code smells and bugs and therefore build more stable software. The main instrument we use is Review Board. The software claims to "take the pain out of code review" and it really does, allowing to perform code review effortless after each product update.
This practice is especially useful with newbies on the team: the team leader appoints developers with more experience as reviewers and once a week or more often is necessary they examine newbies; code, make corrections and suggest improvements. Thus, the code becomes more functional and elegant and the final product — more stable and easy to maintain.
2. Unit Testing is a method used for checking software modules performance both working individually and combined while testing integration with other modules. Any clumsy change in product logic which might lead to errors and crashes is easily detected and timely fixed. Implementing Unit Testing we have used various libraries. The results were worth the efforts: now the products we develop work more stable and the errors, that previously occurred while integrating modules developed by different contributors, were wiped to all zeros.
3. Code Refactoring is a technique using which one can change the inner structure of source code without affecting its external operation, i.e. software behavior. It simplifies the structure optimizing software performance and making the product easier for further maintenance.
4. Build Automation is an efficient way to compile source code into binary code, package the binary code, test and, finally, deploy software to production systems or a test platform. This practice allows our team to accomplish tasks without pressing developers with redundant work on compilation and delivering final products to customers. It saves us both time and human resources.
5. Continuous Integration is a technique focused on making frequent automated builds, so the team could timely detect and resolve integration problems. In our team this practice has been implemented on the basis of Hudson Continuous Integration Server.
Some things to consider
The methods mentioned above are all interconnected and work best when used together, complementing each other and amplifying their effects. Each of these techniques was developed for working processes following the agile software development principles, but they can be used just as well by teams that follow other methodologies. We found that introducing these methods to our development process helps us build great software products faster and with smaller risks.
If you work with software development projects, you will agree that timely and effective communication with the client is key to a successful outcome. Using agile methods ensures a regular and clear communication not only within the development team, but also with the client. With detailed discussions on each stage of development process every aspect becomes open and lucid, eliminating possibility that the end product would fail to meet customer;s expectations.