I was fortunate enough to attend the inaugural Agile Africa Conference held in Braamfontein . The very first conference of its kind on the African continent exploring Agile development.
Here I will briefly share some pointers on Agile development shared by an array of local and international speakers. One need’s to bear in mind there are various permutations of Agile, but the core principles remain the same. So let’s take a look at Agile development in the Application Development space.
To kick start, consider how Wikipedia defines Agile software development: “Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.”
Some high-level Agile application development principles include:
- Adaptive planning: The plan will change as you develop
- People first then process: Build your apps for people
- Think business value: Agile creates a shared understanding between IT and business
- Daily Scrums: Short concise daily 15 min team meetings
- User stories: What will the application do
- Test driven development: Develop your test cases first to understand what is being developed
Agile development is a gradual process, it doesn’t have to be done at the flick of a switch. Start with the Kanban methodology with things like
- Daily scrums
- Retrospectives (look back on work done and see how the team can be made more effective)
Make Agile development a gradual process as with most process changes, it includes a mindset change – which takes time and can dull productivity during the ramp up period. Most companies will never achieve the full Agile dream due to organizational structures and deeply entrenched non-Agile processes.
Agile development creates winning teams
Let’s quickly debunk the myth that Agile means working remotely. Sometimes this is unavoidable, but to build the best collaborative team, working together in the literal sense is key. Under much controversy the new Yahoo CEO Marissa Mayer made this statement,
“To become the absolute best place to work, communication and collaboration will be important, so we need to be working side-by-side. That is why it is critical that we are all present in our offices. Some of the best decisions and insights come from hallway and cafeteria discussions, meeting new people, and impromptu team meetings. Speed and quality are often sacrificed when we work from home. We need to be one Yahoo!, and that starts with physically being together.” … So there goes the dream of working at home in ones pajamas.
I tend to agree with this. If purely just to create the collaborative thinking that drives innovation. Great ideas are often a few separate ideas brought together to create the ultimate solution. Communication is essential and key to Agile development process.
Agile software design
Why is software design still so important even in Agile? Some think the Agile development process means there is little planning, but this too is a myth. Don’t sacrifice quality for features as quality is not tradable. There are two types of quality to design for – external and internal quality. External quality is creating a cool User Interface for end users. Internal quality would be a good modular design.
One should strive to have few defects when marrying the two.
Good design causes initial slower development and progress but pays off in the long run. Poor initial design will show quick wins early on but in the long run will slow down development and increase the likelihood of bugs and ultimately require more effort. Lack of design will make it more complex to add new features later on in the development process.
Agile development can provide working software now and one can build on that base. Agile allows for continued integration. Opposed to the waterfall approach, one does not need to deal with all major integration’s at once.
Agile is a flexible way of development, which allows for the opposite of scope creep. i.e. drop the functionality that is not business critical the bells and whistles can always come later.
Agile development allows for Continuous delivery biweekly or weekly delivery of new functionality into production. Scrum boards with sticky notes aid in delivery, all the teams’ goals and objectives up on the wall for all to see. This makes the process fun and visual.
Documentation even in the Agile development process remains important, especially with continuity when new developers are tasked with the continuation of the project. Documentation can be in the form of a business case or business process. User stories form a critical part of documentation.
Agile development challenges
Resistance from stakeholders when it comes to change is inevitable. Many organizations are risk averse, as they have to remain profitable regardless of methodologies. One of the biggest worries is around fixed cost projects, where the scope of work to be done has not been fully comprehended yet, but needs to be quoted on. On the other hand, one cannot forget personal agendas where there could likely be a fear that the transparency of Agile development will expose personal shortcomings.
Challenges aside, Agile development is the way forward. Embrace change, and make the magic happen. Individuals drive this change. It’s time to create software applications that work in the real world and are able to adapt to change as fast as business needs to adapt to its clients in order to stay relevant.