Most would think of programming and software development to be a solitary pursuit that has computer nerds tucked away in their rooms, hammering away at millions of lines of code, but that’s far from the truth. Real software development is a significant group effort that requires teams of developers with different specializations to work together in coming up with software that is functional, easy to use, and packed with the right features.
Getting a development team to be on the same page throughout the development cycle means following a model that can best facilitate the process. There have been quite a few over the years with names like Waterfall, Spiral, V-model, and so on that illustrate how software gets developed, from conception to having a finished product and then maintaining that.
Image Source: Agile Manifesto Poster by Adam Weisbart.
The process that a lot of big developers ascribe to now is what’s known as Agile, named for its core tenet of adaptability and constant evolution. Based on what’s called the Agile Manifesto and written by a small group of highly experienced developers.
They saw collaboration as the central pillar of development and both requirements and solutions can evolve from it. Agile Development takes a good while to master, but here are ten tips that can help you out.
Great Hardware for Your Developers and Testers
While it may be possible to code using a laptop, it’s better to develop your software with equipment that is more than just ample. It’s also just as important for testers to have quality machines to do their job since you would want to see the bugs and glitches that come up regardless of performance issues.
But what programmers really want is multiple monitors to have as much screen real estate to write their code on. Good keyboards are also a big boost since typing code is their bread and butter, and mechanical keyboards are both durable and great to type with (at least those with tactile switches).
Focus on Results
It’s never about whose idea is right, but coming up with the right idea. In the end, the direction comes from the upper management, unlike in the early days of Agile when it came from the bottom up. This was found to be the best process flow as the people higher up can focus on supervising and managing the project while the developers can focus on their work while following parameters and boundaries set by the upper management.
Due to this top-down model of management, the development team is expected to yield concrete and measurable results. They have to be able to show their work, not just in code, but have something that’s actually working as intended. This then gets put under the ringer through Test Driven Development (TDD), a process that plays a big role in Agile Development.
Implement Continuous Delivery First
Basically, keep it coming. This makes sure that the development is being achieved at a constant pace and the developers are getting feedback early and often. Constant communication and feedback are what Agile Development is all about, letting the team adapt to sudden changes and unexpected circumstances when needed. This is where “builds” come in.
A build is basically a usable version of the software being developed. Through the concept of Continuous Delivery (CD), there must be frequent deployment of successive builds, each released after making improvements and fixes that are drawn from the feedback on the previous build.
Gain Sponsorship for Upper Management
While Agile Development takes a top-to-bottom approach, it can be rather time-consuming to wait for the okay from upper management before implementing or changing something.
When done wrong, this could just result in a lot of time wasted on waiting for permission to be granted. A good solution is to have a spokesman who can take that concern from developer to authority quicker, preferably someone who’s good at pitching ideas and can understand what’s being asked for.
Moving to Shorter Development and Test Cycles
Development hell pervades many software, including major ones. There are also times when long development cycles result in features that are ultimately rejected by users, which makes that whole cycle a big waste of time and money that the company may not be able to recover from right away. A good way to mitigate these threats is to shorten development and test cycles.
Since Agile Development is all about getting things going as quickly as possible, including the influx of feedback, it’s important to have shorter development cycles to come up with the “minimal viable product“. This gives users something to sink their teeth into and be able to give feedback accordingly, which can then be addressed in the next build.
Achieving Automation from Day One
Also known as AD1, this is a lofty goal that can definitely make things go faster if you get everything set up as soon as possible. Realistically, you may be able to automate everything by the second or third year if you’re good, but at least you should keep getting it finished on day one whenever possible.
It’s a time saver, and even a life saver if you think about it hard enough. Having simple processes made automatic can really help developers and other members from having to deal with needless busywork.
Effective Team Ratio
As the saying goes, “Too many cooks spoil the broth.” While having too few members on a team can make work harder, having too many can be just as bad. It’s also a big drain on finances to have too many in a project since you have to pay them. Thus, it’s crucial to take into consideration the needs of the project and the team itself, as well as given timeframe and many other factors.
Plan Open Problems
The team can try to fix every single problem, but there will always be some that slip through and/or end up being open problems. This is handled by having those open problems worked on in the next development cycle.
Ask for Feedback
This cannot be emphasized enough – feedback is the lifeblood of Agile Development. It’s data that can help the software evolve, and both developers and upper management must heed at least the most pressing ones that are both for the present and in the long term.
Evaluating Your Process
This is where the evolution of the development comes in as you have to not just assess the software being worked on, but also your development process. There are so many things you can fine-tune, but you’ll have to determine which are the ones that can yield the best results at a given time frame with the current project and also future ones.