Software Development Methods

Introduction
Lately I’ve been noticing that it’s not that common to understand the different software development methodologies that are being used in the field. So this post is to provide you with a quick overview.

“A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.” Source : Wikipedia

Waterfall (Traditional)
The waterfall development model originates in the manufacturing and construction industries; highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development. The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through all the phases.
Waterfall_model_(1).svg
More info : http://en.wikipedia.org/wiki/Waterfall_model

RUP (Iterative)
The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs.
Development-iterative
More info : http://en.wikipedia.org/wiki/Rational_Unified_Process

RAD (Spiral)
Rapid application development (R.A.D) is a software development methodology that uses minimal planning in favor of rapid prototyping. The “planning” of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements.
RADModel
More info : http://en.wikipedia.org/wiki/Rapid_application_development

XP (Agile)
Extreme Programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent “releases” in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.
XP-feedback
More info : http://en.wikipedia.org/wiki/Extreme_Programming

SCRUM
Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. Scrum focuses on project management institutions where it is difficult to plan ahead. Mechanisms of empirical process control, where feedback loops that constitute the core management technique are used as opposed to traditional command-and-control management. Its approach to planning and managing projects is by bringing decision-making authority to the level of operation properties and certainties.
Scrum_process.svg
More info : http://en.wikipedia.org/wiki/Scrum_%28development%29
(Another method named “Kanban” is oftenly associated with SCRUM, yet there are subtle differences!)

Closing Thoughts
Be aware that there is NO silver bullet… Each method has its own advantages and disadvantages. Be sure to study each one before choosing the right on for YOUR team. It’s not because SCRUM worked with a given team for project Z, that it will for another team that’ll code project Y. (Be aware of cargo cult!)

Advertisements

Why do we need “IT”?

In today’s world we cannot imagine our day to day lives without technology. This reaches from our personal to our professional experienxce. At a given point, I posed myself the question ;

“What business benefit does IT bring to the table?”

We have sales that makes sure prospects become customers and make sure that they stay wit us. Production creates the product, supply chain optimizes the processes between vendors, … and so on.

20121224-215631.jpg

After pondering about it, I came to the conclusion that there are two benefits ;

Acceleration
Some call it “Time to market”, others say “Speed of exection”, … But feel free to name it any way you want. In essence the ability to change quickly is where IT needs to prevail. If IT becomes a bottleneck for the organization, the it has lost its main function. And here we see one of the basic aspects why some IT departements are losing the fight for budget. If you are a bottleneck for the company, why should it invest in “you”?

Scalabiliy
IT prevails in automation and automation wins when an economy of scale is at hand. When a company is expanding their operations, then IT will be there to make sure that the costs do not grow exponentially. That is why IT is more native to enterprises and still a bit akward to small business owners.

Beginner’s Mind

Shoshin (初心) is a concept in Zen Buddhism meaning “beginner’s mind”. It refers to having an attitude of openness, eagerness, and lack of preconceptions when studying a subject, even when studying at an advanced level, just as a beginner

Source : http://en.wikipedia.org/wiki/Shoshin

What does it mean? The following parabel describes it quite well ;

Empty Your Cup
A university professor went to visit a famous Zen master. While the master quietly served tea, the professor talked about Zen. The master poured the visitor’s cup to the brim, and then kept pouring. The professor watched the overflowing cup until he could no longer restrain himself. “It’s overfull! No more will go in!” the professor blurted. “You are like this cup,” the master replied, “How can I show you Zen unless you first empty your cup.”

We all start with an empty cup. Yet during the course of our lives, we fill our cup with preconceived ideas, concepts, techniques and methods that prevent us from receiving the new. The beginner is not held back by this. So it is good to act like a beginner from time to time and take a step back to look at this in a different perspective…

Mimicking doesn’t work! Understand why you do things…

Cargo Cult
Ever hear of “Cargo Cult“?

“A cargo cult is a religious practice that has appeared in many traditional pre-industrial tribal societies in the wake of interaction with technologically advanced cultures. The cults focus on obtaining the material wealth (the “cargo”) of the advanced culture through magic and religious rituals and practices. Cult members believe that the wealth was intended for them by their deities and ancestors. Cargo cults developed primarily in remote parts of New Guinea and other Melanesian and Micronesian societies in the southwest Pacific Ocean, beginning with the first significant arrivals of Westerners in the 19th century. Similar behaviors have, however, also appeared elsewhere in the world.

Cargo cult activity in the Pacific region increased significantly during and immediately after World War II, when the residents of these regions observed the Japanese and American combatants bringing in large amounts of matériel. When the war ended, the military bases closed and the flow of goods and materials ceased. In an attempt to attract further deliveries of goods, followers of the cults engaged in ritualistic practices such as building crude imitation landing strips, aircraft and radio equipment, and mimicking the behavior that they had observed of the military personnel operating them.”

The red thin line throughout this story is that mimicking doesn’t work! Attempting to recreate succesful outcome by replicating circumstances associated with the outcome, although those circumstances are unrelated to the causes of the outcome or insufficient to produce them by themselves, will fail! In our day-to-day lives, we come across this situation frequently. People who repeat a given ritual just because they were told to do so, without knowing why they actually do it. Let’s get down to earth, and reflect by looking towards our own job… Are their aspects where we just repeat things we’re said, without actually knowing why we do it? *silence*

The tail of the fish
There is another, not so known story, that reflects to the same situation.

A mother is baking a fish. Before she throws in the fish, she chops of the tail. The little daughter asks; “Mommy, why do you chop of the tail?”. The mother replies; “Because my mother did so.” The little daughter visits the grandmother a week later and asks ; “Granny, why do you chop of the tail of a fish before baking it?”. The grandmother replies; “Because my mother did so.” That week, the little girl visits her great-grandmother in the nursing home and ask here ; “Nana, why do you chop of the tail of a fish before baking it?”. The great-grandmother replies; “Because the pan was to small for the fish. So we chopped of the tail so it would fit!”.

So know why you are doing this… Mimicking might work out sometimes, yet in most of the cases you will not be working efficiently.