Scrum Process and Project Management with Scrum

Agile scrum methodology is iterative and incremental software project management methodology. It is a process skeleton that contains set of practices and predefined roles.

Agile scrum delivers the product in iterative cycles called sprint. At the start of sprint iteration the team reviews what it must do. It then selects what it believes it can turn into an increment of shippable product. Sprint is time boxed and the team is committed to deliver it. Typically sprint is between 2-4 weeks.

Scrum process is shown in above image. The lower circle represents Sprint cycle, it represents an iteration of development activities that occur one after another. The output of each iteration is an increment version of the product. The upper circle represents the daily inspection occurs during the sprint iteration, in which individual team members meet to inspect each other’s activities and make appropriate adaptations.

Scrum Roles

Scrum has clearly defined roles.

Product Owner
Product owner is responsible for maintaining Product backlog and prioritising deliverables representing the interests of the stakeholders.

Scrum Master
Scrum Master responsible for making everyone aware of the scrum process and ensuring it is properly being used.

Development Team
Cross functional group of people responsible for delivering the product. In Scrum methodolgy people work as team and self organisation is the key practice.

Scrum Meetings

Scrum process requires communication and working as team. It is achieved with the below meetings.

Daily Scrum
This occurs very 24 hrs. During this meeting each team member would talk about what they have done from last daily scrum? What is the plan for today? Any problems in accomplishing the task? This is timeboxed for maximum of 15 minutes.

Sprint Planning Meeting
During this meeting the team would select what work has to be done and prepare sprint backlog. This is timeboxed for maximum of 8 hrs.

Sprint Review Meeting
During this meeting the team and stakeholder would review what work has been done/not done. Present it to stakeholders.

Sprint Retrospective
During this meeting the team would discuss about what went well and what did not go well in the last sprint. Make continuous process improvements.


Scrum produces below artifacts for the project management.

Sprint burn down chart
Sprint burn down chart is a Daily progress for a Sprint over the sprint’s length. Burn down chart is a graphical representation of work left to do versus time. The outstanding work (or backlog) is often on the vertical axis, with time along the horizontal. That is, it is a run chart of outstanding work. It is useful for predicting when all of the work will be completed.

Product backlog
A prioritized list of high level requirements. It lists items adding value for the customer. It utilizes the simplest and the most effective way for prioritizing requests. The higher the items are located on the product backlog, the more detailed they are. Product backlog does not typically include the detailed requirement information.

Sprint backlog
A prioritized list of tasks to be completed during the sprint. The sprint backlog is the list of tasks that the Scrum team is committing that they will complete in the current sprint. Items on the sprint backlog are drawn from the Product Backlog, by the team based on the priorities set by the Product Owner and the team's perception of the time it will take to complete the various features. The sprint backlog is very commonly maintained as an Excel spreadsheet but it is also possible to use your defect tracking system or any of a number of software products designed specifically for Scrum or agile.

Three legs of scrum implementation Process

It means that those aspects of the process that affect the outcome must be visible to those controlling the process.

The various aspects of the process must be inspected frequently enough that unacceptable variances can be detected easily.

If the inspection determines one or more aspects of the process are outside acceptable limits, the inspector must adjust the process. The adjustment should be as quickly as possible, so that the further deviation is reduced.


Coding standards and Best practices tools

With a few months of programming experience, you can write 'working applications'. But doing it the most efficient way requires more work than just making it work! Writing 'Efficient Code' requires skills and practice makes perfect.

But there are few tools which can help you achieve it to an extent.

  1. Resharper
    ReSharper is a refactoring and productivity extension by JetBrains that extends native functionality of Microsoft Visual Studio 2003, 2005, 2008 and 2010.

    ReSharper executes solution-wide static code analysis (error detection on-the-fly, without the need to compile), provides additional features for error correction, code completion, navigation, search, syntax highlighting, formatting, code generation and optimization, carries out 40 automated refactorings, and streamlines unit testing using NUnit and MSTest, among other features.

    More Info: http://www.jetbrains.com/resharper/

  2. Gendarme
    Gendarme is a static code analysis tool that runs tests on our code, checking for avoidable bugs etc. It would also suggest how to optimise the codes. Gendarme is an extensible rule based tool to find problems in .Net applications and libraries. Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .Net) and looks for common problems with the code, problems that compiler do not typicall check or have not historically checked.

    More Info: http://www.mono-project.com/Gendarme

  3. StyleCop
    StyleCop analyzes C# source code to enforce a set of style and consistency rules. It can be run from inside of Visual Studio or integrated into an MSBuild project.

    More Info: http://stylecop.codeplex.com

  4. Pair Programming Review
    If time permits it is good to have some review of the code frequently. The easiest possible way would be pairing the programmers and reviewing each other code.


Useful developer and programming tools

Microsoft developer tools are the best for programming. They make developer job very easy and convinient. But they do not offer everything you need to accomplish your task in the best possible way.

Here some very useful developer (free) tools which can make the programming more convinient.

  1. SoupUI
    Simulating and testing Soap web services. soapUI is a tool for functional testing, mainly of Web Services like SOAP based Web Services and REST Web Services, but also HTTP based services and databases.

    More Info: http://www.soapui.org/

  2. Reflector
    Explore and analyze compiled .NET assemblies and viewing them in C#, Visual Basic and IL. Converts compiles assembly code into C#, Visual Basic programming language code.

    More Info: http://www.red-gate.com/products/reflector/

  3. BareTail
    Very useful tool if you are viewing/monitoring log files. Configurable text highlighting and real time file viewing.

    More Info: http://www.baremetalsoft.com/baretail/index.php

  4. IETester
    Using this application you can test websites for IE5.5, IE6, IE7, IE8 browsers. Allows you to have the rendering and JavaScript engines of several versions of IE in the same application.

    More Info: http://www.my-debugbar.com/ietester/index_all.php

  5. SQL Data Compare
    SQL Data Compare is a very useful tool to compare and synchronise databases. This would compare two databases, individual tables and rows in each table. This would give good knowledge if you want to understand what happened to data before and after a complex SQL transaction.

    More Info: http://www.red-gate.com/products/SQL_Data_Compare/index.htm

  6. XML Spy
    XMLSpy is an advanced XML editor for modeling, editing, transforming, and debugging XML-related technologies. The XML editor delivers the power you need to create the most advanced XML and Web applications.

    More Info: http://www.altova.com/xml-editor/

  7. SVNMonitor
    Another great subversion client. Acts as a front-end to Tortoise SVN for all your projects.

    More Info: http://www.svnmonitor.com

  8. NDoc
    NDoc generates class library documentation from .NET assemblies and the XML documentation files generated by the C# compiler. NDoc uses pluggable documenters to generate documentation in several different formats, including the MSDN-style HTML Help format (.chm), the Visual Studio .NET Help format (HTML Help 2), and MSDN-online style web pages.

    More Info: http://ndoc.sourceforge.net/

  9. GhostDoc
    Another documentation generation tool. GhostDoc is an awesome tool that takes some of the drudgery out of documentation. It's an addin for VS and it's free; right-click on a method or property and it will parse the name and figure out the proper summary for you. It's pretty smart when it comes to inheritance documentation and the override methods.

    More Info: http://submain.com/products/ghostdoc.aspx

  10. LINQPad
    LINQPad lets you interactively query databases in a modern query language: LINQ. LINQPad is also a great way to learn LINQ. LINQPad is more than just a LINQ tool: it's an ergonomic C#/VB scratchpad that instantly executes any C#/VB expression, statement block or program with rich output formatting.

    More Info: http://www.linqpad.net/

  11. NAAK – the .NET Accessibility Analysis Kit
    NAAK is a .Net control which can be placed bottom of each page in your web application to notify you of any known accessibility issues. This helps ensure compliance in two ways. First, it clearly exposes accessibility issues to each developer, QA analyst, and application reviewer. Second, and more importantly, because it is returned as HTML with each page, it can be checked using any web user interface testing framework.

    More Info: http://code.google.com/p/naak/

  12. Blueprint CSS Framework
    Blueprint is a CSS framework, which aims to cut down on your development time and eliminates the discrepancies across browsers. It gives you a solid foundation to build your project on top of, with an easy-to-use grid, sensible typography, useful plugins.

    More Info: http://www.blueprintcss.org/

  13. Firebug
    Firebug is a Mozilla Firefox extension that gives you plenty of web development tools and features. Firebug has a built-in JavaScript debugger that lets you step through your script as well as allowing you to perform benchmarks to see why your script is slow/sluggish. You can quickly hunt down CSS, HTML, JavaScript, and XML errors through Firebug, and it even allows you to filter and search for specific errors. Another handy feature is the DOM inspector pane which outlines a web page structure.

    More Info: http://getfirebug.com/

  14. Web Developer
    Web Developer extension is a very handy and time-saving extension for Firefox. You can rapidly validate your XHTML, find JavaScript/CSS errors, visualize a web page’s structure, quickly fill out web forms for testing purposes, clear your cache with a shortcut key, change XHTML on-the-fly, inspect HTTP headers information, and much more.

    More Info: http://chrispederick.com/work/web-developer/

  15. Internet Explorer Developer Toolbar
    IE Developer Toolbar is the IE add-on that provides the such as the DOM inspector option or the CSS Information option. It also supports JavaScript debugging.

    More Info: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=95e06cbe-4940-4218-b75d-b8856fced535


General software utility tools

Here some general utility tools that I use in my daily life. These are not specific to any programming, but generally I find these are very convinient.

  1. Launchy
    Launchy is the most efficient way to open files, folders, websites, and programs on your computer. Nobody likes to hunt through the start menu to find an application, just to find that the application is hidden under some obscure folder named after a company you have never heard of! Instead, Launchy is a smart search program which tries to guess which program or file you are looking for and will launch it when you hit the enter key.

    More Info: http://www.launchy.net/

  2. IrfanView
    IrfanView is a very fast, small, compact and innovative graphic viewer for Windows with excellent features. It is easy to use for beginners and powerful for professionals.

    More Info: http://www.irfanview.com/

  3. File Renamer
    File Renamer is a bulk renaming tool to rename your thousands of files in few clicks with 40+ possible renaming rules. Powerful yet simple and easy to use interface with built in preview to see new names before rename.

    More Info: http://www.filerenamer.net/

  4. PowerGREP
    The best way to search file systems for content without enduring significant ageing. Faster search results on windows file system.

    More Info: http://www.powergrep.com/

  5. ColorPic
    Simple and easy to use ColorPic tool is for picking color from the desktop or any application.

    More Info: http://www.iconico.com/colorpic/

  6. Beyond Compare
    Beyond Compare is a great tool for comparing files and folders on your file system. You can visualize changes in your files and carefully reconcile them. You can merge or synchronize files and generate reports.

    More Info: http://www.scootersoftware.com/

  7. Notepad++
    Great notepad replacement application. Notepad++ is a free source code editor and supports several languages.

    More Info: http://notepad-plus-plus.org/

  8. Textpad
    Another excellent notepad replacement. TextPad is a powerful, general purpose Easy to use editor for plain text files and supports several languages.

    More Info: http://www.textpad.com/

  9. Greenshot
    Greenshot is a light-weight screenshot software tool for Windows. It is easy to understand and configurable. Create complete or partial screenshots quickly. Easily annotate, highlight or obfuscate parts of the screenshot. Send the screenshot to a file, the clipboard, a printer or as e-mail attachment.

    More Info: http://getgreenshot.org/

  10. FileZilla
    FileZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

    More Info: http://filezilla-project.org/index.php


Test driven development tools and technologies

Test Driven Development is the practice of writing unit tests for your code before you actually write that code. By writing a test and then writing the code to make that test pass you have a much better idea of what the goal and purpose of your code is. Test Driven Development not only increases the quality of your code, but also allows you to refactor the internals of a method or class and quickly and easily test the outside interface of the object.

Some of the low cost tools and technologies for test driven development.

  1. TestDriven.Net
    TestDriven.Net is a unit testing add-in for Visual Studio. It supports multiple unit testing frameworks including NUnit, MbUnit, xUnit and MSTest.

    More Info: http://testdriven.net/

  2. NUnit
    NUnit is a open source unit-testing framework for all .Net languages. Using this the developer can write unit and integration tests and run using unit testing tool. It is written entirely in C# and has been completely redesigned to take advantage of many .NET language features.

    More Info: http://www.nunit.org/

  3. Typemock
    Typemock is a Mock Object Framework for Microsoft.Net. A Mock Object Framework enables you to simulate objects when testing your code. For example, you can use Typemock to simulate instantiating objects, calling object methods, and reading and setting object properties.

    When writing code using TDD, you constantly write and run unit tests. You run these tests over and over and over again. This means that a unit test must be fast. If your unit tests are not fast, then you’ll never get any work done because you’ll be sitting around all day waiting for your unit tests to complete.

    Using typemock isolator you can run your code in isolation and faster.

    More Info: http://www.typemock

  4. Selenium RC
    Selenium Remote Control (RC) is a test tool that allows you to write automated web application UI tests in any programming language against any HTTP website using any mainstream JavaScript-enabled browser.

    Using these test you can test your web application from a functional perspective, meaning that their aim is to cover the set of functionality available to the user, as opposed to testing internal implementation.

    More Info: http://seleniumhq.org/projects/remote-control/