EzineArticles - Expert Authors Sharing Their Best Original Articles



  Submit Articles
  Members Login
  Benefits
  Expert Authors
  Read Endorsements
  Editorial Guidelines
  Author TOS

  Terms of Service
  Ezines / Email Alerts
  Manage Subscriptions
  EzineArticles RSS

  Blog
  Forums
  About Us
  What's New
  Contact Us
  Article Writing Shop
  Advertising
  Affiliates
  Privacy Policy
  Site Map


Advanced Search


Would you like to be notified when a new article is added to the Software category?

Email Address:


Your Name:


Prefer RSS?
Subscribe to the
Software
RSS Feed:

Why Agile Software Development is Not an Excuse For Lack of Design
Print This Article Ezine Publisher Send To Friends Add To Favorites Post A Comment Suggest Topic Report Author

I once wrote an article titled "A Time-Saving Programming Tactic That Doesn't Work." In this article, I lamented the tendency of many programmers to deal with software deadlines by simply coding away, without stopping to think about a proper software design. "I don't have time to design the software!" they say, so they just start churning out code. The intent is to save time, but this approach almost never works except on the simplest of projects. Without a carefully considered design, more problems are bound to emerge, thus causing more time to be lost. What's worse, many of these problems won't become clear until the testing phase comes around, and by then, it may be too late.

Most of the feedback that I received was positive; after all, experienced programmers have generally encountered this pitfall time and again. However, one reviewer said, "This fella obviously knows nothing about agile progamming. With agile methods, you don't need any elaborate designs. You can just start coding away, and you can save yourself a lot of time that way."

I always appreciate honest feedback; however, I think this comment betrays a common misconception about agile software development techniques. It is true that non-agile methods tend to emphasize extensive up-front documentation and design; however, this does not mean that agile programming is synonymous with a lack of design or documentation. Rather, when agile methodologies are used, the designs (and documentation, as applicable) are iteratively refined as the code is tested and one gains greater understanding of the project's scope and problems.

In other words, it would be grossly unfair to say that agile methods do not require any prior design. Agile methods are adaptive, not unplanned or undisciplined. I am by no means an evangelist for these techniques, but I do recognize that they go far beyond merely jumping in and coding away.

Personally, I tend to favor up-front design. I feel that agile techniques tend to be overhyped and overrated. I also believe that thoughtfully considered up-front designs will tend to save time and prevent a great many problems from creeping into the code. However, this does not mean that I would insist on a comprehensive up-front design, since in most situations, this tends to be unproductive. I find that it's better to adopt a measure of agility. That is, I prefer to develop a reasonably thorough systems-level architecture - something more than just skeletal - and then refine it as bugs are found and ideas come along.

The reality is that most up-front designers will tend to do the same thing. They will tend to create an initial design, but they seldom have the patience to plan everything down to the fine details. Nor is this generally advisable; after all, agility advocates are correct when they say that one's understanding of the required software functionality will tend to increase as the software is developed.

Similarly, skilled agile programmers generally will not abandon up-front design altogether. They understand the need to think things through and consider various approaches. They might write tentative pieces of code in an exploratory way, but that's vastly different from simply jumping in and coding away. Even within an agile development process, skilled programmers will generally alternative between frenetic coding and careful contemplation.

Programmers need to divest themselves of the notion that one can avoid software planning and design on account of being "agile." Agility means adaptability. It is not a synonym for coding by the seat of one's pants.

About the author:

V. B. Velasco Jr., Ph.D. works for a small bioscience firm that provides ELISPOT analyzers and serum-free media.

Article Source: http://EzineArticles.com/?expert=V._Berba_Velasco

Other Recent EzineArticles from the Computers-and-Technology:Software Category:

Most Viewed EzineArticles in the Computers-and-Technology:Software Category (90 Days)

  1. The Benefits of the RegCure Software Product
  2. How to Delete The Total Security Virus From Your Computer - A Total Security Removal
  3. How to Remove Security Tool - Get Rid of Security Tool and Regain Your Safety
  4. How to Remove Cyber Security - Uninstall Cyber Security and Get Rid of it Forever!
  5. How to Remove The Green Antivirus 2009 - Uninstall 'Green AV' Quick and Easy
  6. Fix Windows Vista Shut Down Issues - How to Fix Them in a Very Easy Way Instantly
  7. Javascript Calendar - Add an Event Calendar to Your Website
  8. The Best and Simplest Way to Speed Up My Computer - How to Increase Computer Speed Massively
  9. Follow These 5 Easy Steps - How to Speed Up Computer Instantly - Do the Steps & Speed Up in Minutes
  10. Fix BSOD Problem - How to Fix the Blue Screen Physical Memory Dump Easily
  11. 4 Things You Should Know How to Fix Windows XP Error Messages - Resolve Windows Error Made Easy
  12. 3 Easy Ways How to Fix Bad Pool Caller Issue Instantly - Solving Bad Pool Problem
  13. 3 Steps to Speed Up My Computer - Make Your Computer Work Faster in Minutes!
  14. How to Tweak Windows XP Speed? - Follow These 3 Steps on How to Increase Your Windows XP Speed Now
  15. How to Remove Alpha Antivirus - The Easiest Alpha Antivirus Removal Available!

Most Published EzineArticles in the Computers-and-Technology:Software Category

  1. Workstation Optimizer - What is It? And Does it Work?
  2. How Do I Get Rid of a Trojan Virus From Your Computer? Best Tips to Protect Computer From Virus
  3. Need a Trojan Horse Remover? Remove Trojans Virus Easily and Effectively
  4. Internet Antivirus Pro Removal - 3 Top Ways to Protect Your Computer From Trojan Virus Instantly
  5. Trojan Virus Removal - 3 Steps How to Get the Trojan Virus Off My Computer Quickly
  6. Learn 5 Fast Steps Instructions of Removing Personal Antivirus From Your Computer
  7. 3 Fast Ways - How Do I Get Pav Exe off My Computer? What Should You Do?
  8. Remove PAV - 3 Top Tips How to Conduct A PAV Virus Removal
  9. How to Remove Google Redirect Virus? Use These Google Redirect Virus Fix Instructions to Fix Your PC
  10. How to Remove Antivirus System Pro - Follow These Instruction in 5 Minutes
  11. How to Speed Up Your Computer - This is How to Fix a Slow PC!
  12. How to Speed Up Your PC - This is How to Make Your PC Run Faster the Easy Way!
  13. How Do I Get Rid of Personal AV Instantly? Remove it Now in Less Than 5 Minutes
  14. Google Redirect Virus Removal - 5 Steps How to Get Rid Of Google Redirect Virus Instantly
  15. 6 Easy Ways to Do Internet Antivirus Pro Removal - How to Remove Internet Antivirus Pro Instantly!

 

This article has been viewed 11 time(s).
Article Submitted On: November 02, 2009



© EzineArticles.com - All Rights Reserved Worldwide.