عربي

5 agile software development practices for your startup

Arabic

5 agile software development practices for your startup

In just a few years, the lean software development movement has gained influence by promoting a powerful yet simple methodology. Beyond the high level concepts, the success of an agile development approach relies heavily on key software tools and practices that influence the daily operations of your software team.

In this guide, I’ll be briefly discussing each of these tools and practices. After reading, you might want to schedule a meeting with your lead programmer to make sure your startup’s software strategy is as efficient as it could be.

Version control

Whether you have a solo developer or a team of 20, using a version control system is critical for your team’s collaboration. A version control system:

•       Facilitates collaboration between different programmers on the same team
•       Maintains different versions of your codebase
•       Reverts back to older versions
•       Helps introduce experimental changes without making stable versions of your product obsolete

There are several good and affordable online services for getting up and running with a modern VCS system such as Github and Bitbucket.

An automated build system

One of the biggest mistakes that a development team can make is waiting until there’s a big change to the software to prepare it for deployment. Rather, a lean team would build the software regularly, updating tiny changes as they happen so everything is up to date when a big change comes along. In this context, building is the process of converting source code files into a standalone software unit that is published and ready to be deployed on a server.

Having a regular and automated build system, enables your team to:

•       Produce a full, clean build each time your team publishes new features
•       Provide a history of which change actually broke the software when it fails
•       Take less time when publishing new features
•       Have a safety net that ensures that all components of the system are working together correctly before publishing. Broken builds due to bugs would be detected as early as possible and don’t make their way online.

Even with a very small team, without regular automated builds, the ripple effect of changes could go unnoticed for a long time, leading to major problems down the road.

Automated continuous integration

With this practice, CI for short, members of a team integrate their work frequently, even multiple times per day. This means there’s a system that automatically integrates a new feature or bug fix into the product. Before it reaches the general public, each integration is verified by an automated build (including testing) to detect errors as quickly as possible.

This approach incorporates the automated build process mentioned above, but is not limited to it. CI is extended to include running automated tests, all the way through to generating a build, installing the product, and running full tests on it.

Practicing CI allows your team to:

•       Significantly reduce integration problems
•       Develop cohesive software more rapidly
•       Highlight as early as possible when code changes break the system
•       Ensure that all aspects of your development process are lined up to permit the daily creation of a working version of your product.
•       Detect who caused the break in the system (this psychological effect is very effective at encouraging your developers to do testing before pushing code).

But the ultimate goal is to help the entire project run according to core agile principles so that you deliver early and often. This, in turn, helps you leverage feedback from your users more effectively.

Many CI tools and services exist today to help in adopting CI such as codeship.com or travis-ci.org.

Automated backups

Your team should never skimp on daily backups. Having up-to-date backups of your product’s files and data is critical to its security and continuity. It is very important to be able at any point in time to recover your whole system in under 24 hours.

However, doing regular backups against many online servers, and taking endless server snapshots, is a tedious and time-wasting routine for your team.  

This is why it is important to invest time in tools that help you achieve fully automatic backups. Once your team is able to document the manual backup process, it should be relatively easy to hack a script to not only schedule backups but eventually handle them on its own. Make sure that your team documents how they did it and test it regularly as your infrastructure changes.

Scripting a backup procedure might be easy, but as soon as you start backing up often, you’ll realize that conventional storage is costing a fortune. That’s why its good to use an affordable cloud storage service like Amazon Web Services S3.

Issue tracking

As your product evolves and your team pushes one feature after another, the people who are responsible for quality assurance will need a way to track defects efficiently and assign someone from the development team to fix. Using sticky notes on a whiteboard might be helpful for a start, but that won’t scale very well.

Many source control systems come with issue tracking features baked in without extra cost, including Github and Bitbucket.

At Wamda we make sure to keep up with the latest best practices in agile development and adapt them to our product. We’ve adopted most of the above practices so far and are currently working on using Continuous Integration in our development process. We’d also love to know what development process looks like at your startup, so let us know in the comments!

Are you a web developer? We’re offering an opportunity to be part of an awesome team at Wamda. You’ll need to be proactive and willing to hit the ground running. In return, you’ll be working on rewarding projects that are set to shake up the entrepreneurial industry in the region.

If interested, send us your CV to joinus@wamda.com.

Thank you

Please check your email to confirm your subscription.