Monday, October 4, 2010

Crystal Report Interview Questions

What is Crystal Report?
Crystal report is a report generation tool. Generally have interface with VB6. Crystal report basically generates dynamic data. You can format the data in whichever way you feel like.

Can we use Crystal report as a stand-alone application?
Generally we use Crystal Reports with VB6. However we can make crystal report stand-alone application also. But for that limitation is for viewing the report user should have crystal reports installed on his/her PC.

How do we connect to the database?
There are two ways of creating the report: -
1. Use crystal report built in query.
2. Use the tool ‘ Crystal SQL Designer’ provided by crystal report.
When you create report using crystal report built in query then it asks for the data source name that you have created. When you run the report, then for the first time it will ask for the user id and password. After that it will store the same. When you create ‘.qry’ using ‘Crystal SQL’ Designer then at that time it will ask for the user id and password. When you run the report for the first time instead of asking for the user id and password it will ask for the ‘.qry’ file location. You can change the query location also. For that open the report, select ‘Set Location’ option in Database menu item, and set the location.

How do we format field?
For formatting any field just right click on it and you will get many options like ‘Format Field.’ ‘Browse field data’ etc. Click on ‘Format Field.’ You can align data, suppress, make it multiline, change the font size, style, and type, make it hyperlink etc. If it is an amount field then you can display currency symbol also. Right click on the field select ‘Format Field’.

Can we give parameters to the report?
We can very well give parameters to the report. For creating parameters select ‘Parameter Field’ in Insert menu item. ‘Create Parameter Field’ dialog box will popped up, it will ask for the name of parameter, prompting text and datatype. Now when you run the report it will prompt for these parameters.

Can we create our own formulas in reports?
We can create our own formulas in reports. Select ‘Formula Field’ in Insert menu item. Write the formula in ‘Formula Editor’. Here you will get ‘Field Tree’, ‘Function Tree’, and ‘Operator Tree’, which will display the report fields, functions that are supported by crystal reports (like CDATE () etc.), operators (arithmetic, strings etc.) respectively.

Can we export data of reports into other format like in world doc etc?
Generated data can be exported to word doc, or in rich text format. Just click on ‘Export’ icon in the menu. Export dialog box will be popped up. It will ask for the ‘Format’ like comma-separated value (csv) etc and the ‘Destination’ like disk, application etc. After that it will ask for the file name and save the data. Only restriction is formatting of data will be lost, but crystal report will try to maintain as much formatting as it can.

Can we create report using more than one database?
We can create report using more than one database like Oracle, Access. Create data source name for both the databases. Select tables from them and create the report. Only restriction is if you use two databases then you cannot see the SQL generated by crystal reports.

Can we use our own SQL for creating a report?
We can also make our own query using ‘Crystal SQL Designer’ tool provided by SQL. Here you can insert your SQL statement as such. It will save this file as ‘.qry’ . And when you create a report instead of using ‘Database’ button use ‘Crystal SQL Statement’ button.

Can we edit SQL made by Crystal reports?
We cannot edit the SQL made by crystal reports. However we can view the SQL. For that select ‘Show SQL Query’ in Database menu item. Limitation is if you are using only one database. If you use two databases then you can’t even view the SQL prepared by crystal report.

Are there any limitations in crystal reports?
There are certain limitations in crystal reports.
They are: -
1. If database is having field whose length is more than 255 characters, then you cannot make formula using that field.
2. While exporting data formatting is lost.
3. When you browse data just by right clicking on the field then it displays that is there in the database not the data selected by the query.

Can we suppress printing in crystal reports if 0 records are fetched?
Yes, we can suppress printing if no records are fetched. Select ‘Report Options’ in File menu item. ‘Report Options’ dialog box will pop up. In that there is one option ‘ Suppress printing if no records’ Check this option. If no records are found then nothing will be printed on the report.

What are the sections that we have in Crystal reports?
Report has got standard sections like ‘Page Header’, ‘Page Footer’, ‘Report Header’, ‘Report Footer’, and ‘Details’. However you can add other sections also. Select ‘Sections’ in the Insert menu item. You can insert group sections also. If you don’t want to show any section just right click on that section and suppress that.

Can we add any database field once we have chosen ‘Close’ button?
Yes, we can add any database field afterwards also. Select ‘Database Field’ in Insert menu item. If you are using crystal report built in query then it will display the tables that you have selected. And you can select whichever field you want to display on the report. But if you are using ‘.qry’ file then it will display Query and you can select only those field, which are there in the query.

Does Crystal Report support all the functions that we have in Oracle?
No, Crystal report does not support all the functions. Like Decode function is there in SQL but not there is crystal report. You need to convert that in crystal report format (in if and else etc.). However if you use ‘.qry’ files then it take the SQL as such. There is no need of changing any syntax.

Is there any feature like summing total in crystal report?
Crystal reports provide features like grand total, sub-total, running total etc. You can select any of these features in Insert menu item. You can sum up records on the basis of each record or on change of group using ‘Running Total ‘ option in Insert menu item.

I am using two tables one is of access database and other is of oracle database, I am getting an error saying that ‘SQL odbc error’ what should I do?
If you are getting such an error then click the icon for ‘Report Expert’. It will give a warning saying that formatting will be lost. Ignore this you will get ‘Standard Report Expert’ dialog box. Reverse the links of access database table and it will work.

What versions of Crystal Reports have you used?
Please indicate both release version (9, 10, XI) and type of version (.NET or standalone boxed exition, for example). A) I was willing to consider individuals who were primarily programming version users, if they were able to adequately answer questions about Crystal Reports functionality. It has been my experience, however, that "programmer" Crystal Reports writers have vastly different skill sets and opinions about solutions that "report writer" or "business user" Crystal Reports writers.

What is 'Set Location' ?
A) This is very basic Crystal Reports functionality. If the candidate doesn't know what this is, then that's a red flag.

Please describe, in plain English, the most complex report you've ever written. What made it complex and how did you resolve the issues that presented themselves?
A) This question helps me to understand their level of understanding of functionality, their ability to potentially address complex requirements and their creativity.

Have you ever written a repot against a View or Stored Procedure?
A) No? They might be skilled in Crystal Reports, but may not understand the relationship between Crystal and the database. They may also not be skilled in SQL.

Is it better to build a report against a View or a Stored Procedure and why? Please explain.
A) This is a very good question, in my opinion. First, the right answer is neither. It really depends on the situation. That being said, there is a contingent of report writers out there that have been brainwashed into saying a 'stored procedure is always better, because its pre-compiled'. In my opinion, this is bunk and here's why?
==>A stored procedure is absolutely great to use if you're going to manipulate a lot of data or crunch a lot of numbers to return aggregates. If you're simply creating a SELECT/FROM/WHERE query, it's a complete waste. Furthermore, using a Stored Procedure (or a SQL Command Object, for that matter) can severely limit the functionality you would otherwise have in Crystal Reports. For example, a common report requirement is to have a parameter that allows the user to select one, multiple or all items in the parameter list. Crystal Reports allows this functionality through multi-value parameter selection. Stored procedures do not allow this functionality.
==>A View can be written to contain all of the necessary fields, joins, subqueries, etc..., but still be open enough to be used by a variety of reports. For example, I have a client who needed 15 reports, all of which were to be written against a particular module of their application. All of the reports had very similar fields, they were mostly just different in display and in the selection criteria. As such, I created a single view with both a SELECT and FROM clause, but no WHERE clause. I then built the 15 different reports all against the same view, but added selection criteria to each report. By doing so, they all used a single, easily maintainable database object, but were each unique and efficient.

What is the difference between crystal reports and normal reports?
In crystal reports we can genarate reports with any type of charts (bar charts,pie charts) it is automatically genarated when we give values vto it,but that is not possible with genaral reports we manually should caluculate every thing

What is different the vb.net and XML?
vb.net is product of micro soft corporation.it is for developing appication programs.xml is an open standerd one.it is for representing data.xml is not restricted to the particular language.we can use to represent data of any type of application.XML is common one.for bussiness to bussiness communication XML is Best one.

Is it possible to join more than one universe in Business Objects BOE XI?
If its so Please explain how is that possible?
Yes, we can join more than one universe in BO we can join 2 master or kernel universes to one derived universe. To Link the universes go to universe parameters->links tab->add link

How many .rpt files are be there in a main report having 2 sub reports?
We can keep, one .rpt file for both or we can individually create .rpt files and made them as single with sub report. [there are 3 .rpt files including the main and 2 sub report. but when the sub reports are inserted into main it will behave like one only.]

How to Filter the Crystal reports?
To filter the reports we have to use Formulas
We can prepare the formulas with
(1) Field Explorer (Window) or
(2) Writing the code
Syntax for preparing the formulas:
{classname.FieldName} & value. For Ex:
?{Employee.Emp_id}=? + value
?{Employee.Emp_name}=? + value + ??? (Strings to be in single quotes)

How to present data from Crystal Reports on to form?
Drag Crystal Report viewer control from toolbox to form.Properties:Crystal Report Name: CRV1Report Source= or And call show () methodDOCK=Fill (The control resizes while form is resized [Using Crystalviewer]

Is there any feature like summing total in crystal report?
Yes, we can add any database field afterwards also. Select Database --> Field ; in Insert menu item.

Can we use stored procedure for creating the report?
Can. By Adding Command in Crystal Report XI

Does Crystal Report support all the functions that we have in Oracle?
No, Crystal report does not support all the functions. Like Decode function is there in SQL but not there is crystal report. You need to convert that in crystal report format (in if and else etc.).

Can we add any database field once we have chosen close button?
Yes, we can add any database field afterwards also. Select Database Field in Insert menu item.

What are the sections that we have in Crystal reports?
1. report header 2. report footer 3. page header 4. page footer 5. details

How many sections are there in the report?
Header, Detail, Footer and Page Header, Report Header, Page Footer, Report Footer [There are several sections. 1)Report header, 2)Page header, 3)Group header, 4)Detail section, 5)Report footer, 6)Page footer And also we can create our own sections if necessary.]

Can we use our own SQL for creating a report?
We can also make our own query using Crystal SQL Designer tool provided by SQL. Here you can insert your SQL statement as such. It will save this file as query . And when you create a report instead of using Database button use Crystal SQL Statement button. [Yes, Using Crystal SQL writer]

Can we export data of reports into other format like in world doc etc?
yes ..u can, not only in word but also in several formats like pdf, excel. .etc. .u can go to file in the menu in that u have this option[Reports can be exported to a number of formats, such as spreadsheet, word processor, HTML, ODBC, and common data interchange formats.Go to File->Export. There are two sub menus, Export Report, Report Export Options. This can be achievable through coding.ExportDestinationType eExportDestinationType = ExportDestinationType.DiskFile; ExportFormatType eExportFormatType = ExportFormatType.PortableDocFormat; ExportOptions eExportOptions =ExportOptions.CreateDiskFileDestinationOptions;][Sure.We can save the crystal report as many formats.There are Doc ,xsl, .pdf and etc. The sample code i used in my project is given below.case "pdf": { //setting disk file name crDiskFileDestinationOptions.DiskFileName = ExportPath + filename; //setting destination type in our case disk file crExportOptions.DestinationOptions = crDiskFileDestinationOptions; //setting export format type crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; //setting previously defined destination opions to our input report document crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;break; }case "xls": { //setting disk file name crDiskFileDestinationOptions.DiskFileName = ExportPath + filename; //setting destination type in our case disk file crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; //setting export format type crExportOptions.ExportFormatType = ExportFormatType.Excel; //setting previously defined destination opions to our input report document crExportOptions.DestinationOptions = crDiskFileDestinationOptions;break; }]

Can we create report using more than one database?
Yes. We can create report using more than one database like Oracle, Access. Create data source name for both the databases. Select tables from them and create the report. Only restriction is if you use two databases then you cannot see the SQL generated by crystal reports.

How do we format field?
Right click on that field and choose format field.

How do we connect to the database?
1. Use crystal report built in query.
2. Use the tool Crystal SQL Designer provided by crystal report. [Most data sources can be chosen through the Database Expert dialog box. The Database Expert appears when you create a report from scratch using Blank Report, or when you choose Database Expert from the Database menu.
Note: You also select a data source in the Report Creation Wizards. The Data screen in all of the Report Creation Wizards, except the OLAP Report Creation Wizard, is much like the Database Expert dialog box.To select a data source Choose Database Expert from the Database menu. The Database Expert dialog box appears. Use the tree view in the Available Data Sources list of the Data screen to select your data source: Current Connections Favorites History Create New Connection Repository Some popular choices in the Create New Connection folder are described here:Access/Excel (DAO), Database Files, ODBC (RDO), OLAP OLE DB (ADO)Note: The data source options available in the Create New Connections folder depend on the data access components selected during installation.]

Can we use Crystal report as a stand-alone application?
We can make crystal report stand-alone application also. But for that limitation is for viewing the report user should have crystal reports installed.

How to "Print" in Crystal Reports while using ASP DOT NET Platform?
Using Crystal Decisions. SharedCrystalReport1 cr= new CrystalReport1;'here crystalreport1 is crystal report which we design.CrystalViewer1.ReportSource = cr; OR we can directly print the report without showing reportCrystalReport1 cr= new CrystalReport1;cr.PrintToPrinter(1,False,1,1);

What are the advantages or disadvantages of using Crystal?
Reports in a Windows Forms application as opposed to say rolling our own reports as HTML and displaying them in the Internet Explorer control
Advantages
(1) Secure as End user cannot modify the data which is appear in the report if we use crystal report to show the report but in HTML, user can modify the report data
(2) Report layout is not transparent, so that end user will not know about how we design the report. But in HTML, anybody can study the report layout and can copy the technology
(3) Can export into different format like PDF, HTML, XML, etc, and many more.
Disadvantages :
(1) End user need to have the crystal report viewer in his PC in order to see the crystal report output. But this can be overcome if you export the report as PDF/HTML
(2) You need to buy Crystal Report license for each pc you are used to design the crystal report.(3) Must buy the version which allows you to install run time components in end user PC
(4) Crystal Report is slow as compare to Active Reports
(5) If we have 100 pages report then crystal will need to process all pages and then it shows the output. and many more.

What are Crystal Reports and Crystal Reports Explorer?
With Crystal reports explorer one can quickly create and modify reports on the web, and since its built on the trusted Business object enterprise platform, it can easily manage massive user loads, individual access, and application customization.

How to conditionally suppress a field based on whether a page number is odd or even?
Select the field -->Click FORMAT-->Click FORMAT FIELD-->Select the COMMON tab-->Click the FORMULA BUTTON to the right of SUPPRESS (Don't click the suppress check box)To suppress a field on odd numbered pages PageNumber MOD 2 = 1To suppress a field on even numebred pages PageNumber MOD 2 = 0 -->Click SAVE Icon-->Close the formula editor-->Click OK on the FORMAT screen

How to pass stored Procedure Parameters to the report?
Choose File-->Options menu.
In the Options dialog box -->Click the Database tab and ensure that Stored Procedures is selected. Selecting ""Stored Procedures"" automatically displays any available stored procedures when you log on to an SQL database.-->Click OK to exit the Options dialog box. -->On the Start Page, click Blank Report.-->Locate and select the SQL Server data source that contains the stored procedure you want to use.-->Click Next to go to the Connection Information dialog box-->Enter the required information to log in.-->Click Finish-->Highlight an SQL stored procedure in the Stored Procedures folder, and click the-->arrow to add it to the Selected Tables list.-->The Enter Parameter Values dialog box appears.-->Highlight a parameter in the Parameter Fields list-->Assign a value by typing into the Discrete Value box and then click OK-->You are returned to the Database Expert-->Click OK and create your report using the fields in the stored procedure.

What is the "refresh" button suppose to do on the crystal Report viewer?
(1). When you use Refresh Button in crystal report viewer, it refreshes the report data.
(2).When you refresh data from the Preview tab, the Refresh Report Data dialog box appears
Select the "Use current parameter values" option to use the current parameter value,
Select the "Prompt for new parameter values" option to enter a new parameter value.
When you select this option and click OK, the Enter Prompt Values dialog box appears. The program now runs the report using the new value(s) you specified.

Is there a way to export a report definition without writing code?
Yes. The following steps work assuming you have Crystal Reports on the machine and the appropriate export dlls loaded.

  • Open the report
  • Preview it
  • Click the EXPORT envelope
  • Select REPORT DEFINITION for the format
  • Select DISK FILE
  • Click OK
  • Enter a file name or accept the default
  • Click SAVE. The file is a text file and can be viewed with NOTEPAD.

Where is the "save data with report" option?
You can find File menu.

Is there a way to export the report formulas, like totals to excel?
Yeah we can do that using crystal report

What does it mean when we get the error message "Invalid report version" when try to open a Crystal Report?
Crystal in its evolution has changed the report file format several times. In most cases the file format is FORWARD-compatible. By this I mean a file created in Crystal 6 can be opened in Crystal 6 or higher. When the file format changes were major the format is not BACKWARD compatible. By this I mean a file created in CR 9 cannot be opened in CR 8 or before. Crystal changed the report file format with CR 8 and CR 9. The CR 9 change was because of the introduction of Unicode support. CR 8 has the ability to save a file in CR 7 format. Because of the support for Unicode CR 9, 10, and XI cannot save the file in previous formats.

How to write a formula to change a font based upon data?

  • Select the field
  • Click FORMAT
  • Click FORMAT FIELD
  • Select the FONT tab
  • Click the FORMULA BUTTON to the right of FONTif ({YourField} = Value) then "Arial"else "Times New Roman
  • Click SAVE Icon
  • Close the formula editor
  • Click OK on the FORMAT screen
How to refresh the crystal report from the application?
calling crystalreportcontrolname.reset (by selecting Report menu under Refresh the report menu item at design time) will refresh the report[crystalreport1.DiscardSavedData=True]

How many sub-reports can report can have?
0-256

Tuesday, September 28, 2010

Learning Scrum

Overview of Scrum for Agile Software Development

As a brief introduction, Scrum is an agile process for software development. With Scrum, projects progress via a series of iterations called sprints. Each sprint is typically 2-4 weeks long. Scrum is ideally suited for projects with rapidly changing or highly emergent requirements.

Introduction to Terms
A scrum team is typically made up of between five and nine people, but Scrum projects can easily scale into the hundreds। The team does not include any of the traditional software engineering roles such as programmer, designer, tester, or architect। Everyone on the project works together to complete the set of work they have collectively committed to complete within a sprint. Scrum teams develop a deep form of camaraderie and a feeling that “we’re all in this together.”

The product owner is the project’s key stakeholder and represents users, customers and others in the process। The product owner is often someone from product management or marketing, a key stakeholder or a key user.

The ScrumMaster is responsible for making sure the team is as productive as possible. The ScrumMaster does this by helping the team use the Scrum process, by removing impediments to progress, by protecting the team from outside, and so on.

The product backlog is a prioritized features list containing every desired feature or change to the product.

At the start of each sprint, a sprint planning meeting is held during which the product owner prioritizes the product backlog, and the scrum team selects the work they can complete during the coming sprint. That work is then moved from the product backlog to the sprint backlog, which is the list of tasks needed to complete the product backlog items the team has committed to complete in the sprint.

Each day during the sprint, a brief meeting called the daily scrum is conducted. This meeting helps set the context for each day’s work and helps the team stay on track. All team members are required to attend the daily scrum.

At the end of each sprint, the team demonstrates the completed functionality at a sprint review meeting, during which, the team shows what they accomplished during the sprint. Typically, this takes the form of a demonstration of the new features, but in an informal way; for example, PowerPoint slides are not allowed. The meeting must not become a task in itself nor a distraction from the process.

Note
The term “backlog” can get confusing because it’s used for two different things. To clarify: the product backlog is a list of desired features for the product. The sprint backlog is a list of tasks to be completed in a sprint.

A Visual Introduction to Scrum

Graphically, Scrum looks something like this:



This graphic is an introduction to everything essential in Scrum agile software development. On the left, we see the product backlog, which has been prioritized by the product owner and contains everything wanted in the product that’s known at the time. The 2-4 week sprints are shown by the larger green circle.

At the start of each sprint, the team selects some amount of work from the product backlog and commits to completing that work during the sprint. Part of figuring out how much they can commit to is creating the sprint backlog, which is the list of tasks (and an estimate of how long each will take) needed to deliver the selected set of product backlog items to be completed in the sprint.

At the end of each sprint, the team produces a potentially shippable product increment — i.e. working, high-quality software. Each day during the sprint, team members meet to discuss their progress and any impediments to completing the work for that sprint. This is known as the daily scrum, and is shown as the smaller green circle above.

The Daily Scrum Meeting

On each day of a sprint, the team holds daily meetings (“the daily scrum”). Meetings are typically held in the same location and at the same time each day. Ideally the daily scrums are held in the morning as they help set the context for the coming day's work.

There is an old joke in which a chicken and a pig are talking and the chicken says, "Let's start a restaurant." The pig replies, "Good idea, but what should we call it?" "How about 'Ham and Eggs'" says the chicken. "No thanks," says the pig, "I'd be committed, you'd only be involved." The joke is meant to point out the difference between those who are committed on a project and those who are only involved. Scrum affords special status to those who are committed and many teams enforce a rule in which only those who are committed are allowed to talk during the daily scrum.

All team members are required to attend the daily scrum. Since both the ScrumMaster and Product Owner are committed team members, they are expected to attend and participate. Anyone else (for example, a departmental VP, a salesperson, or a developer from another project) is allowed to attend but is there only to listen. This makes the daily scrums an excellent way for a Scrum team to disseminate status information--if you're interested in hearing where things are at, attend that day's meeting.

The daily scrum is not used as a problem-solving or issue resolution meeting. Issues that are raised are taken offline and usually dealt with by the relevant sub-group immediately after the daily scrum. During the daily scrum each team member provides answers to the following three questions:

  • What did you do yesterday?
  • What will you do today?
  • Are there any impediments in your way?
By focusing on what each person accomplished yesterday and will accomplish today the team gains an excellent understanding of what work has been done and what work remains. The daily scrum is not a status update meeting in which a boss is collecting information about who is behind schedule. Rather, it is a meeting in which team members make commitments to each other. If a programmer stands up and says "Today I will finish the data storage module" everyone knows that in tomorrow's meeting he will say whether or not he did finish. This has the wonderful effect of helping a team realize the significance of these commitments and that their commitments are to each other, not to some far-off customer or salesman.

Any impediments that are raised become the ScrumMaster's responsibility to resolve as quickly as possible. Typical impediments are:

My ____ broke and I need a new one today.
I still haven't got the software I ordered a month ago.
I need help debugging a problem with ______.
I'm struggling to learn ______ and would like to pair with someone on it.
I can't get the vendor's tech support group to call me back.
Our new contractor can't start because no one is here to sign her contract.
I can't get the ____ group to give me any time and I need to meet with them.
The department VP has asked me to work on something else "for a day or two."

In cases where the ScrumMaster cannot remove these impediments directly himself (e.g., usually the more technical issues) he still takes responsibility for making sure someone on the team does quickly resolve the issue.

Learning Scrum - The Product Backlog

The Product Backlog is the master list of all functionality desired in the product. When using Scrum, it is not necessary to start a project with a lengthy, upfront effort to document all requirements. Typically, a Scrum team and its product owner begin by writing down everything they can think of easily. This is almost always more than enough for a first sprint. The Product Backlog is then allowed to grow and change as more is learned about the product and its customers.

Product backlog items can be technical tasks ("Refactor the Login class to throw an exception") or more user-centric ("Allow undo on the setup screen"). My preference is to write express the product backlog in the form of user stories, which are a technique borrowed from Extreme Programming, another agile process.

The product owner shows up at the sprint planning meeting with the prioritized product backlog and describes the top items to the team. The team then determines which items they can complete during the coming sprint. The team then moves items from the Product Backlog to the Sprint Backlog. In doing they expand each Product Backlog item into one or more Sprint Backlog tasks so they can more effectively share work during the Sprint. Conceptually, the team starts at the top of the prioritized Product Backlog list and draws a line after the lowest of the high priority items they feel they can complete. In practice it is not unusual to see a team select, for example, the top five items and then two items from lower on the list but that are associated with the initial five.

An example Product Backlog from a real project appears as the following:



This Excel spreadsheet shows each product backlog item assigned a general priority (Very High, High, etc.) by the Product Owner. Estimates have been developed by the developers but it is understood that they are very imprecise and are useful only for rough assignments of tasks into the various sprints.

Learning Scrum - The Product Owner

The Product Owner (typically someone from a Marketing role or a key user in internal development) prioritizes the Product Backlog.

The Scrum Team looks at the prioritized Product Backlog and slices off the top priority items and commits to completing them during a sprint. These items become the Sprint Backlog.
In return for their commitment to completing the selected tasks (which, by definition, are the most important to the product owner), the product owner commits that he or she will not throw new requirements at the team during the sprint. Requirements are allowed to change (and change is encouraged) but only outside the sprint. Once the team starts on a sprint it remains maniacally focused on the goal of that sprint.

Release Burndown Charts for Scrum & agile projects

On a Scrum project, the team tracks its progress against a release plan by updating a release burndown chart at the end of each sprint. The horizontal axis of the release burndown chart shows the sprints; the vertical axis shows the amount of work remaining at the start of each sprint. Work remaining can be shown in whatever unit the team prefers--story points, ideal days, team days, and so on. My preference is for story points, for all of the reasons described in the Agile Estimating and Planning book.




On this burndown chart, the team started a project that was planned to be eleven two-week sprints. They began with 200 story points of work. The first sprint went well and from the chart you can infer that they had around 180 story points of work remaining after the first sprint. During the second sprint, however, the estimated work remaining actually burned up. This could have been because work was added to the project or because the team changed some estimates of the remaining work. From there the project continued well. Progress slowed during sprint 7 but then quickly resumed.

This type of release burndown chart works very well in many situations and in many teams. However, on projects with lots of changing requirements you may want to look at an alternative release burndown chart.

Learning Scrum - The ScrumMaster

The ScrumMaster is responsible for making sure a Scrum team lives by the values and practices of Scrum. The ScrumMaster protects the team by making sure they do not over-commit themselves to what they can achieve during a sprint.

The ScrumMaster facilitates the daily scrum and becomes responsible for removing any obstacles that are brought up by the team during those meetings.

The ScrumMaster role is typically filled by a project manager or a technical team leader but can be anyone.

Scrum Team Training

Scrum teams do not include any of the traditional software engineering roles such as programmer, designer, tester, or architect. Everyone on the project works together to complete the set of work they have collectively committed to complete within a sprint. Scrum teams develop a deep form of camaraderie and a feeling that "we're all in this together."
A typical Scrum team is 5-9 people. Rather than scaling by having a large team, Scrum projects scale through having teams of teams. In this way I have worked on projects with over 500 people and have consulted to projects with over 1,000.

Although not the only thing necessary to scale Scrum, one well-known technique is the use of a "Scrum of Scrums" meeting. With this approach each Scrum team proceeds as normal but each team identifies one person who attends Scrum of Scrum meetings to coordinate the work of multiple Scrum teams. These meetings are analogous to the Daily Scrum Meeting, but do not necessarily happen every day. In many organizations, having a Scrum of Scrums meeting two or three times a week is sufficient.

The illustration below shows how a Scrum of Scrums approach allows Scrum to scale up (in this case to 243 people). Each cell represents one person on a Scrum team. The bottom of this illustration shows teams with nine developers on them. One person from each team (the differently colored cell) also participates in a Scrum of Scrum to coordinate work above that team. Then from those nine-person teams another person is selected (this time shown with diagonal lines) to participate in what is called a Scrum of Scrums of Scrums.





Scrum Training on Sprint Backlog

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.

It is critical that the team selects the items and size of the sprint backlog. Because they are the ones committing to completing the tasks they must be the ones to choose what they are committing to.

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. An example of the Sprint Backlog in Excel looks like this:


During the Sprint the ScrumMaster maintains the sprint backlog by updating it to reflect which tasks are completed and how long the team thinks it will take to complete those that are not yet done. The estimated work remaining in the sprint is calculated daily and graphed, resulting in a sprint burndown chart like this one:



The team does its best to pull the right amount of work into the sprint but sometimes too much or too little work is pulled in during the Sprint planning meeting. In this case the team needs to add or remove tasks. In the above sprint burndown chart you can see that the team had pulled in too much work initially and still had nearly 600 hours to go on 5/16/02. In this case the Product Owner was consulted and it was agreed to remove some work from the sprint, which resulted in the big drop on the chart between 5/16/02 (619 hours) and 5/17/02. From there the team made good consistent progress and finished the sprint successfully.

Agile Training on Sprint Planning Meeting

The Sprint Planning Meeting is attended by the Product Owner, Scrum Master, the entire Scrum Team, and any interested and appropriate management or customer representatives.
During the sprint planning meeting the product owner describes the highest priority features to the team. The team asks enough questions during this meeting so that they can go off after the meeting and determine which tasks they will move from the product backlog to the sprint backlog.

The product owner doesn't have to describe every item being tracked on the product backlog. Depending on the size of the backlog and the speed of the team it may be sufficient to describe only the high priority items, saving the discussion of lower priority items for the next sprint planning meeting. Typically, the Scrum team will provide guidance when they start to get further into the backlog list than they know could be done in the next sprint.

Collectively, the Scrum team and the product owner define a sprint goal, which is a short description of what the sprint will attempt to achieve. The success of the sprint will later be assessed during the Sprint Review Meeting against the sprint goal, rather than against each specific item selected from the product backlog.

After the sprint planning meeting, the Scrum team meets separately to discuss what they heard and decide how much they can commit to during the coming sprint. In some cases there will be negotiation with the product owner but it will always be up to the team to determine how much they can commit to completing.

Sprint Review Meeting

At the end of each sprint a sprint review meeting is held. During this meeting the Scrum team shows what they accomplished during the sprint. Typically this takes the form of a demo of the new features.

The sprint review meeting is intentionally kept very informal, typically with rules forbidding the use of PowerPoint slides and allowing no more than two hours of preparation time for the meeting. A sprint review meeting should not become a distraction or significant detour for the team; rather, it should be a natural result of the sprint.

Participants in the sprint review typically include the Product Owner, the Scrum team, the ScrumMaster, management, customers, and developers from other projects.

Purpose of a Sprint Review

During the sprint review the project is assessed against the sprint goal determined during the Sprint planning meeting. Ideally the team has completed each product backlog item brought into the sprint, but it is more important that they achieve the overall goal of the sprint.

Training for Scrum Task Board Use

We use a task board during Scrum sprints (iterations). The task board shows all the work we’re doing during a sprint. We update it continuously throughout the sprint–if someone thinks of a new task (“Test the snark code on Solaris 8”) she writes a new card and puts it on the wall. Either during or before the daily scrum, estimates are changed (up or down) and cards are moved around the board.

Generically, the task board looks like this:



Each row on the task board is a user story, which is the unit of work I encourage teams to use for their product backlog product backlog. During the sprint planning meeting the team selects the product backlog items they can complete during the coming sprint. Each product backlog item is turned into multiple sprint backlog items. Each of these is represented by one task card that is placed on the task board. Each task card starts on the task board in the “To Do” column. The columns I always use on a task board are:
  • Story–The story description (“As a user I want to…”) shown on that row.
  • To Do–This holds all the cards that are not done or in process.
  • Work In Process–Any card being worked on goes here. The programmer who chooses to work on it moves it over when she’s ready to start the task. Often this happens during the Daily Scrum when someone says, “I’m going to work on the boojum today.”
  • To Verify–A lot of tasks have corresponding test task cards. So, if there’s a “Code the boojum class” card there is likely one or more task cards related to testing: “Test the boojum”, “Write FitNesse tests for the boojum,” “Write FitNesse fixture for the boojum,” etc. Some task cards don’t often get corresponding test cards (“Fix Bug #321 in Bugzilla”) so those are placed in the “To Verify” column.
  • Done–Cards pile up over here when they’re done. They’re removed at the end of the sprint. Sometimes I remove some or all during a sprint if there are a lot of cards.

Optionally, I sometimes use the following columns depending on the team, the culture, the project, and other considerations:

  • Notes–Just a place to jot a note or two
  • Tests Specified–I like to do “Story Test-Driven Development,” which means the tests are written before the story is coded. I’m not a stickler about it but it does help when there’s time to specify the tests (at a high level) in advance. This column just contains a checkmark to indicate the tests are specified. Ideally, not a lot of work (in the form of task cards) crosses this column without a checkmark in it.

Here are some photos of actual task boards in use।

A task board hanging in a team room।


Cork board hung on the wall.

A metal task board with cards placed with magnet.


A task board made with black tape on a large wall-sized cabinet. There's food in the cabinet!

A distributed team using Outlook's notes facility on a shared desktop.