Building an Application Development Team- New Ideas


After taking a great webinar from www.threebeacons.com and a good talk from Nathan Eror www.neror.com; I have a better understanding of Agile and how QA works in that team.  Using this information and the process of actually scoping an Agile project with my team-  I believe we have a general concept of how Agile works.

The first things we needed to understand were the words-  the jargon….  I have also learned that there are like 8,000 different ways to do Agile and every team takes what works from the best versions…
Release-  the actual final piece of software.

Iteration-  Time frame used to break up each development cycle within the entire release cycle.  Usually 1 to 2 weeks in length.  You want at least 4 iterations per release in order to take advantage of Agile methodology.

Epic-  It’s like a phase-  more like a block of functional pieces that are logically grouped together. Ex:  Login Page for Online Application

Story-  mini, functional pieces of the release within each epic.  Ex:  I am a Acme customer and I need to login to the Acme site with my email address.  Stories should be phrased as a functional need-  not CODE or DEV work.  Clients do not care about Tables and embedded graphics.  They want to see what works.

Unit Testing-  The heart of Agile.  Test everything as you build it.  Automate the testing if possible.

I will go into a whole different blog about testing-  I am sure I am about to learn a lot as I am being helped by a developer on setting up our testing, repository and bug tracking systems next week.

Basically what we learned is that Agile works if you sell it to the client as collaborative.  Your team MUST buy off on how iterations work and that everything- including testing and build deployment go into each iteration so that at the end of the iteration, you have a functional product for testing and sign off.   The product does not have to have all functionality, just what the client needs to provide a more defined scope as each iteration is completed.

We had to define optimal programmer hours available for each iteration.  We determined for our first project that we would sell 50 “points” for each iteration.  Those points were  based on programming hours and difficulty of each story.

That brings me to my next revelation-  you have to basically scope the project down to the story level before you can quote it-  so planning and pre-project fact finding is critical.  The idea is to pre-qualify the lead and plan the hell out of the project before you walk in with a presentation.  Then the client can shoot it apart through the Agile process by redefining needs.

I will post more as I get deeper.  What we have found makes Agile great for us-  although  a bit cumbersome for smaller projects.  We are finding our middle ground.

About Andrew Moore

Andrew has 10 years of IT experience – including 5 years of successful and profitable process development and business management through mastery of technology, compilation of industry research, and a keen knowledge of corporate goals. Through his work at ERGOS, Andrew effectively utilizes information systems and personnel to develop and document fundamental processes to increase profitabilty, customer satisfaction, employee retention, and opportunity for company growth. Andrew participates actively in the formation of detailed business strategies including budgets, remediation reports, profit and process analysis. Through his work with his team, Andrew has demonstrated successful process development through the ongoing creation and maintenance of training programs including new hire, business workflow, and technical process training. Andrew's goals are to drive high levels of employee satisfaction through the development of structured feedback, flexible work hours and increased focus on employee needs. Happy employees create happy clietnts.
This entry was posted in Intrapreneurship and tagged , , , . Bookmark the permalink.

3 Responses to Building an Application Development Team- New Ideas

  1. Adam Pridgen says:

    Hi Andrew,

    I noticed your post on LinkedIn, so I thought I would check this out. I did not see anything mentioned about security, so I wanted to offer some advice. My colleagues and I have come across many applications that met their software requirements, but they did not have any formal security processes integrated into their software development lifecycle. This often leads to high rick vulnerabilities that are found in the architecture or design flaws just before or after the product is in production. Many times these issues could have been resolved at the start and during the development if security had been integrated into the development process. Here are some good starter documents, if you have not already become familiar with a Security Development Lifecycle:

    * Microsoft, Microsoft SDL, http://www.microsoft.com/downloads/details.aspx?FamilyID=d045a05a-c1fc-48c3-b4d5-b20353f97122&displaylang=en

    * B. Sullivan, Agile SDL: Streamline Security Practices For Agile Development, MSDN Magazine, http://msdn.microsoft.com/en-us/magazine/dd153756.aspx

    * D. Wichers, Agile Security Breaking the Waterfall Mindset, AppSecEU08, http://www.owasp.org/images/b/b8/AppSecEU08-Agile_and_Secure.ppt

  2. Craig Mayer says:

    Hi Andrew:

    Interesting thread – what I’ve learned (the hard way) working with Agile teams is that if the “right” balance is not found between streamlining documentation for agility and not having sufficient / adequate documentation, large rocks lie ahead when your project ship puts out to sea and flips over into production.

    With my own particular specialization on the link between testing and requirements, I’ve found major problems occuring when the app breaks or testing indicates faulty design or code – which then can’t be traced back to original requirements, because of a lack of documentation.

    No need to go nuts on documentation, but having at least well-formed use cases and robustness diagrams (and solid design documents) can help drive better results, so that time-for-testing (which has been squeezed on 100% of the projects I’ve ever worked on) is used to validate that the app meets requirements (the purpose of testing), rather than spending time you don’t have trying to find and report defects (which is not the purpose of testing).

    This is particularly frustrating after an app goes into production, when things break and then you can’t figure out what happened or why – because you don’t have sufficient documentation / requirements to go back to review.

    Better to spend time up-front doing proper documentation than spending time and lots of money chasing things much farther down the road that should have been done right the first time. Good luck with the team.

  3. Craig Mayer says:

    Sorry – one last comment about automating testing . . . . setting a goal of trying to automate as much as possible can be very dangerous, if you don’t have well-formed requirements-designs-code, because you’ll just end up getting more crap faster than if you had not automated.

    Additionally, somewhat arbitrarily setting up to automate testing can be self-defeating when you don’t have solid requirements/design docs, because then it’s tough to figure out if the errors are being caused by poor reqs/design or because the tool itself (or the test environment or the data being used) wasn’t properly set-up.

    If your team embarks on test-driven development at the unit level (“test as you go”), chances are you’re going to get higher quality code than using more traditional dev methods, so that when the app reaches a higher level of testing (integration or system test), you’ll be more likely to get good results using a tool, because higher quality code is being feed into it.

    Again, if you work with a tight, high quality SDLC methodology and use approaches designed to ensure high quality output code – from the very beginning of the project – you’ll have far fewer quality issues to deal with at higher levels of application integration (especially if your app has to interface with external or 3rd party apps) and as you get closer to production.

    Then, after a first release when the application is stable and whatever defects are present are known, transitioning to more robust test automation (especially when working with a highly complex application, such as a mainframe mortgage banking or insurance app) at that point makes a great deal of sense (it lowers the cost of regression testing as the app is enhanced or updated in various ways).

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>