ATL ALT.NET
A community in Atlanta dedicated to helping each other
learn and apply
the best of .NET technologies...
Navigation
Main Page
Random Page
Create a new Page
All Pages
Categories
Administration
File Management
Login/Logout
Language Selection
Your Profile
Create Account
Quick Search
Advanced Search »
Back
History
High-Performance Teams
==Problem: Competitive Landscapes Necessitate Rapid Responsiveness from .NET Software Engineering Teams== Today's internet and ecommerce companies often face steep competition. Even if they do not currently face this competition, there are very low barriers to entry for ecommerce compared to traditional manufacturing or production companies. The reasons for this are fairly simple: * Low-cost or no-cost of software tools (languages, IDEs, frameworks & libraries, tools) * Low-cost of infrastructural components (relational DBs, file servers, network bandwidth) * Rising maturity of engineering best-practices (design patterns, agile, scrum, XP, TDD) Faced with these realities, software development shops are forced to reexamine the way they produce software. They are forced to take notice of the rapidly changing competitive landscape and adjust their practices. Failure to do this will result in: * Stagnation in the market * Decreased customer-value * Diminishing ROI for existing products and services * Lower revenue * Shrinking developer and management morale * Ultimately, obsolescence However, companies that successfully navigate these waters and modernize themselves will position themselves to reap the opposite: * Increased market-penetration * Increased customer-value * Continued accrual of ROI for both existing products and services and also new ones * Increased revenue * Healthy and increasing developer and management morale * Sustained market dominance ==Goal: Achieve Sustainable Market Dominance By Modernizing .NET Software Engineering Practices== We know that in order to achieve sustainable market dominance a software engineering team must achieve a level of engineering efficiency and responsiveness likely to be unrivaled by its competitors or potential competition. To do so requires careful planning and attention to detail. This effort must seek to improve the team in several crucial competencies: * Increase frequency and reliability of software delivery by: ** Reducing time-to-market through frequent customer-value-added releases ** Increasing degree of actual customer involvement and feedback by enrolling them in alpha and beta testing programs ** Reducing time and effort spent eliminating defects by building quality into their software in the beginning and also improving quality-control measures * Increase customer value and company ROI by: ** Incorporating customer-valued features more rapidly and regularly by using focused incremental release strategies ** Minimizing the potential for degradation of core technology by properly using risk management * Increase responsiveness to changing market conditions, including the ability to: ** Rapidly thwart existing competition and new entrants to the market ** Rapidly address increased regulatory or security concerns ** Rapidly leverage advances in technology without incurring expensive or time-consuming research & development activities ==Solution: Creating High-Performance .NET Software Engineering Teams Using Agile Techniques for Highly Competitive Markets== The good news is that this is not new territory. There is much research and empirical data that points to a clear path for implementing best practices to build a high performance team. The rest of this article will link to dozens of resources, including web sites, presentations, podcasts, software, and videos that will help you and your team become a high performance team. Since this is a collaborative wiki, please feel free to sign up and help edit this article. If you have time to watch only one video, then take an hour and listen to or watch this video: [http://www.infoq.com/news/2008/07/Agile-Google-Jeff-Sutherland] This is Jeff Sutherland, the co-creator of Scrum for software development, presenting a retrospective at Google discussing how the AdWords team used Scrum to manage this multi-billion dollar project successfully. This video covers many key points about agile development and Scrum. ==General Resources== This being the internet age, there is far more material you can find on your own than I can give you! However, what I provided below represents resources I have used so far. ===Primary Sources=== [http://www.infoq.com] On InfoQ you will find hundreds of videos, interviews, articles, and presentations related to enterprise class software development for .NET, Java, Ruby, PHP, and other technologies. The topics cover Agile, Scrum, SaaS, REST, SOAP, refactoring, databases, and more. In my opinion, this is the best web site available for keeping yourself educated about modern techniques and practices. For .NET and agile software, here are some specific sub-sections to check out are: [http://www.infoq.com/dotnet] [http://www.infoq.com/architecture] [http://www.infoq.com/agile] [http://www.infoq.com/scrum] ===Secondary Sources=== [http://www.codeproject.com/] CodeProject is well known for having thousands of useful articles and tutorials. You will find many great resources here. [http://www.codeplex.com] CodePlex is Microsoft's analog to SourceForge.net. Many open source projects are houses on CodePlex now, including the ASP.NET framework itself and the MVCContrib project. [http://www.se-radio.net/] Software Engineering Radio is a great podcast that features interviews with key figures in enterprise software development. The content spans many languages, platforms, and tools. [http://www.dotnetrocks.com/] Karl Franklin and Richard Campbell were two of the very first "podcasters" out there. Their .NET Rocks podcast is a great way to stay on top of the latest trends in .NET development. The content is not as balanced as what you'll find on InfoQ or Software Engineering Radio, naturally, since it's .NET specific. [http://polymorphicpodcast.com/] The Polymorphic Podcast is Craig Shoemaker's podcast. This show gets better and better every time I visit the web site. The topics are usually technical in nature and help you with real-world practical issues. [http://www.pragprog.com/] The Pragmatic Programmers, Dave Thomas and Andy Hunt, have a great web site that has information about their book titles and features podcasts and videos as well. ==Agile Software Development Resources== These are currently loosely categorized, but will be categorized and commented on as time permits: ===Web Sites=== * [http://en.wikipedia.org/wiki/Agile_software_development] - Summary of Agile Software Development * [http://agilemanifesto.org/] - The Agile Manifesto from the original 17 signatories * [http://www.agileallience.org/] - The Agile Alliance web site * [http://www.ambysoft.com/] - Scott Ambler's indispensable collection of Agile wisdom, writings, and recordings * [http://www.ambysoft.com/podcasts/] - Scott's audio and video presentations ===Presentations & Videos=== [http://www.infoq.com/presentations/role-of-testing-in-agile-scott-ambler] Scott Ambler presents an overview of agile software development and then explains the crucial role of QA and Testing within agile development. Here is the overview: <blockquote> Agile developers are "test infected", we do test-first development and treat acceptance tests as full-fledged requirements artifacts and work with our stakeholders to acceptance test throughout the dev lifecycle. The end result is significantly higher quality software, achieved with very little input from the testing community. So what is the role of testers and QA people on agile projects? </blockquote> '''Critical:''' Ambler says that he has seven criteria for determining whether a team is really agile: <blockquote> Seven criteria to put you on the path to agility Agile teams: 1. Can introduce you to their stakeholders, who actively participate on the project. 2. Can show-and run-their regression test suite. 3. Produce working software on a regular basis. 4. Write high-quality code that is maintained under CM control. 5. Welcome and respond to changing requirements. 6. Take responsibility for failures as well as successes. 7. Automate the drudgery out of their work. </blockquote> Regarding the automate regression suite requirement, he says that if a team does not have that then he considers them code-and-fix [http://en.wikipedia.org/wiki/Hacker_%28computing%29#Negative_usage_in_engineering|hackers]. More about this here: http://www.ddj.com/architect/184415445 ==Scrum== Scrum as a software project management framework was formalized primarily by Jeff Sutherland and Ken Schwaber. Both are quick to state they are not the creators of it, however. Instead, they point out that it emerged naturally from research into Japanese companies and other highly successful and innovative companies in product development and manufacturing. ===Links=== [http://del.icio.us/search/?fr=del_icio_us&p=scrum&type=all] The most popular links tagged with Scrum on del.icio.us. This is bound to be a more fluid and complete and diverse list than what I have below. ===Web Sites=== [http://en.wikipedia.org/wiki/Scrum_(development)|http://en.wikipedia.org/wiki/Scrum_(development)] Good overview of Scrum with a clear breakdown of its basic operation and team roles [http://harvardbusinessonline.hbsp.harvard.edu/b02/en/common/item_detail.jhtml;jsessionid=0HFXYN5AE3TBAAKRGWDR5VQBKE0YIISW?id=86116&referral=7855 |The New New Product Development Game] 1986 Harvard Business Review paper by Takeuchi and Nonaka about how manufacturing companies were utilizing a "scrum" based development methodology of overlapping phases. This paper formed the groundwork for Sutherland and Schwaber to develop Scrum for software development. [http://www.controlchaos.com] Ken Schwaber's Scrum information and training web site [http://www.MountainGoatSoftware.com] Mike Cohn's web site with hundreds of presentations and resources about Scrum and Agile ===Presentations & Interviews=== [http://www.infoq.com/interviews/jeff-sutherland-scrum-rules] Jeff Sutherland explains the basic rules of Scrum and describes the "Nokia Test", which his venture capital partners use to determine whether teams are truly doing Scrum. [http://www.infoq.com/presentations/The-Roots-of-Scrum] Jeff Sutherland presenting the history of Scrum. He covers Japanese manufacturing and the first Scrum at Easel Corporation. [http://www.infoq.com/news/2008/07/Agile-Google-Jeff-Sutherland] Jeff Sutherland presenting Agile Project Management Lessons Learned at Google. This provides an excellent experience report about how Mark Striebeck introduced Scrum into Google to manage the AdWords project. A key observation that Jeff makes is that Mark introduced Scrum in an incremental, agile way. He introduced one concept at a time and let the team lead itself forward. [http://www.infoq.com/presentations/AgileEnterpriseRealWorldExperience] Jeff Sutherland describes real-world experience in helping lead companies to become Agile through adopting Scrum. He discusses Google, Yahoo, PatientKeeper, and many others companies. [http://video.google.com/videoplay?docid=-7230144396191025011] Ken Schwaber discussing "Scrum, et al" at Google in 2006. Ken shares with Google engineers the research and findings of Scrum from both a theoretical and a practical perspective. He discusses ways to circumvent common issues people face when implementing Scrum. [http://www.infoq.com/news/2006/11/ken-schwaber-code-quality] Ken Schwaber on Code Quality as a Corporate Asset. Ken discusses why teams should deliver, for example, 16 units at 100% quality rather than 20 units at 80% quality in order to maintain core functionality as a corporate asset. This is an excellent presentation that explains the corporate motivation for maximizing ROI through ensuring code quality. [http://video.google.com/videoplay?docid=8795214308797356840] Jeff Sutherland presenting "Scrum Tuning: Lessons Learned at Google". In this talk, Sutherland covers the history of Scrum and some ideas gained from the implementation at Google. This is similar to his other presentations, but different in some areas. [http://www.infoq.com/presentations/Scrum-bbc-newmedia] Scrum Boosts Effectiveness at BBC. Andrew Scotland tells how BBC's New Media division, characterized by a lot of uncertainty and emergent software process, decided to use Scrum to more effectively deliver software amidst all that change and uncertainty. ==Lean Software Development== Tom and Mary Poppendieck have done a lot of research into the history of Lean Manufacturing and have applied those principles to software development. Here is a link to their web site and some excellent presentations by them: [http://www.poppendieck.com] Consulting web site for Tom & Mary Poppendieck. [http://video.google.com/videoplay?docid=-5105910452864283694] Mary Poppendieck on Competing on the Basis of Speed. This excellent presentation covers the need for automating tests and JIT principles. [http://www.infoq.com/presentations/poppendieck-agile-leadership] Mary Poppendieck on the history of leadership and management and the role of leaders in software development. [http://www.infoq.com/interviews/poppendieck-lean-2007] Tom and Marry Poppendieck on using Lean Software Development for a competitive advantage. ==Extreme Programming (XP)== * [http://www.extremeprogramming.org/] - Great overview of XP * [http://www.infoq.com/news/2007/04/beck-ease-at-work] - Kent Beck (XP creator) presenting about being comfortable at work
ScrewTurn Wiki
version 2.0.31. Some of the icons created by
FamFamFam
.