What software development processes/principles are you familiar with ? Which one have you liked the most and which one have you liked the least ?
Agile (i.e. lightweight) software development process is gaining popularity and momentum across organizations.
Agile software development manifesto
Highest priority is to satisfy the customer.
Welcome requirement changes even late in development life cycle.
Business people and developers should work collaboratively.
Form teams with motivated individuals who produce best designs and architectures.
Teams should be pro-active on how to become more effective without becoming complacent.
Quality working software is the primary measure of progress.
Why is iterative development with vertical slicing used in agile development ?
Your overall software quality can be improved through iterative development, which provides you with constant feedback. Several methodologies fit under this agile development methodology banner. All these methodologies share many characteristics like iterative and incremental development, test driven development, stand up meetings to improve communication, automatic testing, build and continuous integration of code etc. Among all the agile methodologies XP is the one which has got the most attention. Different companies use different flavors of agile methodologies by using different combinations of methodologies.
How does vertical slicing influence customer perception ?
With the iterative and incremental approach, customer will be comfortable with the progress of the development as opposed to traditional big bang approach.
EXtreme Programming [XP]
Simple design, pair programming, unit testing, refactoring, collective code ownership, coding standards, etc. XP has four key values: Communication, Feedback, Simplicity and Courage. It then builds up some tried and tested practices and techniques. XP has a strong emphasis on testing where tests are integrated into continuous integration and build process, which yields a highly stable platform. XP is designed for smaller teams of 20-30 people.
RUP (Rational Unified Process)
Model driven architecture, design and development; customizable frameworks for scalable process; iterative development methodology; Re-use of architecture, code, component, framework, patterns etc. RUP can be used as an agile process for smaller teams of 20-30 people, or as a heavy weight process for larger teams of 50-100 people.
Feature Driven Development [FDD]
Jeff De Luca and long time OO guru Peter Coad developed Feature Driven Development (FDD). Like the other adaptive methodologies, it focuses on short iterations that deliver tangible functionality. FDD was originally designed for larger project teams of around 50 people. In FDD's case the iterations are two weeks long. FDD has five processes. The first three are done at the beginning of the project. The last two are done within each iteration.
Develop an Overall Model -> Build a Features List -> Plan by Feature -> Design by Feature -> Build by Feature
The developers come in two kinds: class owners and chief programmers. The chief programmers are the most experienced developers. They are assigned features to be built. However they don't build them alone. Instead the chief programmer identifies which classes are involved in implementing the feature and gathers their class owners together to form a feature team for developing that feature. The chief programmer acts as the coordinator, lead designer, and mentor while the class owners do much of the coding of the feature.
Test Driven Development [TDD]
TDD is an iterative software development process where you first write the test with the idea that it must fail.
Scrum divides a project into sprints (aka iterations) of 30 days. Before you begin a sprint you define the functionality required for that sprint and leave the team to deliver it. But every day the team holds a short (10-15 minute) meeting, called a scrum where the team runs through what it will achieve in the next day. Some of the questions asked in the scrum meetings are:
What did you do since the last scrum meetings ?
Do you have any obstacles ?
What will you do before next meeting ?
This is very similar to stand-up meetings in XP and iterative development process in RUP.
Which one have you liked the most and which one have you liked the least ?
You could say that liked the most is "agile" methodology and the least is the traditional "waterfall". Many agile methodologies tend to go hand-in-hand (i.e. complementary). Easiest agile process to understand is Scrum. XP seems to be more popular since it is a bit more involved than Scrum. You could become agile by introducing Scrum first from Waterfall and then add XP practices one at a time. You could also say that you like the "agile" methodology due to its iterative nature as opposed to the big bang approach in "waterfall" and it promotes a more collaborative approach compared to the waterfall methodology.