There are many different ways that software can be developed. A major impact on this can be the methodology that you choose to use, this can be a defining difference not only in how efficient your business is, also it can impact the employees you attract the mind set of those employees, how much collaboration your team will do. The benefits of the technology for small business are even greater.
There are many many different software development methodologies. These range from the absurd to the amazing. I want to briefly explain what used to be the largest software development methodology first and then ill move onto Agile..
A so-called "Traditional" methodology. This method contains a few stages all of which are sequential and have to follow in that order, each stage has to be finished before the next can commence. This method slopes downwards through phases, something like "Requirements Analysis", "Design", "Implementation", "Testing", "Deployment", "Maintenance".
This model discourages revisiting and revising any prior phase once it is complete; this method is pretty inflexible, though it used to be widely used. The biggest problem with this methodology is: Imagine your development cycle takes 20 weeks or even more; you must completely finish the product before any customers have seen it! This means there is no feedback from customer to see if this is actually what they want. If its not then you have to go right back to the start and begin again! The costs involved with running this sort of software development methodology can escalate very quickly if you are not totally in tune with exactly what you customer wants. If we take the 20 weeks of development; if re-visited again that's 40 weeks your project costs have doubled!.
The Agile Manifesto
Individuals and Interactions over Process and tools
Working Software over Comprehensive documentation
Customer Collaboration over Contract negotiation
Responding to Change over Following a plan
The Scrum variation of agile is personally one of my favourite variations and widely used across the software development industry. It is an iterative and incremental agile framework. Its very nature is to be a flexible and holistic product development strategy that allows a whole development team to work as a single unit to reach a common goal. Scrum encourages and enables a team to self-organise by encouraging close collaboration, as well as daily face-to-face communication among all team members.
A key principle of Scrum is that customers can and generally will change their minds about what they want or need, that unpredictable challenges can not be addressed easily in more traditional methodologies.
Scrum adopts the approach of "accept that not all problems can be understood or defined" instead it focuses on maximising the teams ability and to deliver quickly to evolving requirements. This means that agile teams really do embrace change.
In Scrum there are three core roles: Product Owner, Developer, Scrum Master (pigs), other roles are (chickens). This is from the fable The Chicken and the Pig:
A Pig and a Chicken are walking down the road.The Chicken says: "Hey Pig, I was thinking we should open a restaurant!" Pig replies: "Hm, maybe, what would we call it?" The Chicken responds: "How about 'ham-n-eggs'?" The Pig thinks for a moment and says: "No thanks. I'd be committed, but you'd only be involved!"
Scrum uses iteration based development practices. What this means is that a we split work up into what we call Sprints. A Sprint is a time-boxed effort; which is generally between one week and one month, though two weeks is typical.
A planning meeting starts each sprint where the team will estimate the work involved. A sprint ends with a retrospective; a discussion on what worked and what didn't and where to improve.