Agile Documentation

Documentation? What Documentation?

One of the biggest misconceptions within agile teams is that we do not need documentation. Also, many teams struggle to get to grips with documentation that is needed within agile projects. When implementing agile for the first time, many teams actually drop the ball before realising that some sort of documentation is still needed within agile projects.

The approach

So the first approach is the following:

When starting with agile you can still use exactly the same documentation that you were using when running non-agile projects. The only thing that really changes is the approach you have in compiling the documentation. In agile, we build software incrementally and so we focus on doing the documentation incrementally and the focus changes to describing the specific set of requirements that is developed for the next 2 weeks and not the whole solution upfront.

We although have identified a set of useful agile documentation that is more suited to agile projects than the documentation used during normal non-agile projects.

Agile documentation that adds value

So another more agile approach is that we look at useful agile documentation that adds value and we use the following criteria when deciding if the documentation adds value:

Agile documentation Criteria #1:

We ask if the document will be useful to the team or any client after the delivery of the project. If the answer is NO, then do not do it. A typical example is the thick word document specs we all have seen before. These documents never get updated with the changes that occur while developing the solution, so by the time the project is delivered the information in these documents is outdated. This means that no one will consult the documentation again as it does not describe the actual requirements implemented within the application.

Agile documentation Criteria #2:

We would like to stay away from using thick Word documents to describe agile requirements. As the implementation team, we often need to read through these thick documents and extract the information that will actually be relevant to implement. These documents often serve a purpose of keeping clients happy and to use it to cover our backs. As agile is about open, transparent and trustful relationships between parties involved, this does not really serve a purpose anymore.

Agile documentation Criteria #3:

Artifacts that help to describe the requirements to clients or the implementation team in a clear, simple & precise way are very useful agile documentation.

Agile documentation Criteria #4:

Artifacts that help to describe the requirements to clients or the implementation team in a visual way are very useful agile documents.

Agile documentation Criteria #5:

Artifacts that help us to complete acceptance testing on the delivered solutions are very useful agile documentation.

Agile documentation Criteria #6:

Artifacts that help us to understand a complex ecosystem of systems and solutions are very helpful agile documentation. This does not only aid understanding, but it aids us to get new employees up to speed within the organization quickly.



Enhanced by Zemanta

Facebook Pages, Profiles and Groups

Facebook has a number of ways to create an online presence, namely through Facebook Pages, Profiles and Groups. Clients often assume that when creating a business profile on Facebook, an account is created in the same way that you would for an individual. This approach is incorrect for a number of reasons. Let’s distinguish between the different Facebook options.

Facebook Profile

A Facebook profile (where you sign up for Facebook and create an account) is intended for individuals, or in order words, actual people. Businesses who set up a profile in order to promote their business are actually in violation of Facebook’s Terms of Service and Facebook can block or remove that profile.  Facebook profiles allow you to add friends, send inbox messages and join groups amongst other things.

Facebook Profile sign up

Facebook Groups

Groups are aimed at people who want to have a discussion. They are perfect for forums, interest groups and training etc. Businesses typically only create groups if they want to encourage a discussion around a topic, such as a focus group, or to build an online community etc. Groups can be open, closed or secret, depending on the required level of privacy, and groups allow private messaging to members.

Facebook Group

Facebook Pages

Facebook pages are ultimately created for use by businesses to promote their brands. They are also popular for use by celebrities, or any non-human entity for that matter, and are the best option for a business presence on Facebook. The major appeal of Facebook pages are that they allow businesses to communicate publicly and present a professional image on Facebook. When posting or commenting on the page, it is presented as the brand that is taking the action, and not an individual person. Pages are liked by friends and fans, and can be promoted through inviting friends of the admin, or through Facebook ads.

Facebook Pages

Thus, if you are a business looking at entering the social media arena and want to get started on Facebook, the Pages option is the ideal solution to allow you to interact with your clientele.


Enhanced by Zemanta

How to import CSV files into JIRA


It is sometimes quicker to import stories from a spreadsheet, especially when an existing project is migrated to JIRA. JIRA allows importing from a number of sources, one of which is from a Comma Separated Values (CSV) file. This is arguably one of the more useful import options. This tutorial discusses how to import CSV files into JIRA.

Other options include a direct import from one of the following applications:

[list_icon color=”blue” type=”icon_arrow”]

  • FogBugz
  • Pivotal Tracker
  • Trac


Import from a Json file is also an option.

Preparing to import CSV files into JIRA

The online documentation (see link below) is fairly comprehensive, but some important aspects are not highlighted, for instance, the Reporter field is required. Also add as many fields as possible when importing a large number of stories, otherwise stories would have to be modified manually after the import if incorrect default values are assigned. Some of the more obvious fields to include:

[list_icon color=”blue” type=”icon_arrow”]

  • Summary (also a required field)
  • Reporter
  • Assignee (if known at the time of doing the import)
  • Priority
  • Issue Type
  • Labels
  • Status
  • Description


In addition to being ‘well-formed’, CSV files have the following requirements.

[list_icon color=”blue” type=”icon_arrow”]

  • Each CSV file must possess a heading row with a Summary column.
  • The header row should avoid containing any punctuation (apart from the commas separating each column) or the importer may not work correctly.
  • The header row must contain a column for ‘Summary’ data.
  • The Reporter column is also mandatory.


For example, this is valid:

Summary, Assignee, Reporter, Issue Type, Description, Priority
“Test issue”, admin, admin, 1, ,

 Also note the following:

[list_icon color=”blue” type=”icon_arrow”]

  • Use double-quote marks (“) in your CSV file to capture data that spans multiple lines.
  • Use double-quote marks (“) around a section of text to treat any special characters in that section literally.


You can import multiple values into a JIRA field that accepts multiple values (e.g. Fix (for) Version, Affects Version, Component, Labels). To do this, your CSV file must specify the same column name for each value you wish to aggregate into the mapped JIRA field. The number of column names specified must match the maximum number of values to be aggregated into the mapped field. For example:

IssueType, Summary, FixVersion, FixVersion, FixVersion, Component, Component
bug, “First issue”, v1, , , Component1,
bug, “Second issue”, v2, , , Component1, Component2
bug, “Third issue”, v1, v2, v3, Component1,

You can attach files to issues created from your CSV file. To do this, specify the URL of your attachment in an ‘Attachments’ column within your CSV file.  Sub tasks can also be created via the CSV import, and tasks can be linked to more than one project.  The project name and key data is the minimum JIRA project data required for importing issues from a CSV file into specific JIRA projects. When generating the CSV file from Excel or any other spreadsheet application, ensure that a comma is used as the field separator.

Import the CSV file into JIRA

Once logged into JIRA, go to ‘JIRA Admin’ and then click on the ‘External System Import’ link (underneath the System / Import & Export section).

Locate the option for CSV import:  Import projects and issues from a Comma Separated Values (CSV) file into JIRA.       

Import & Export

Click on the Import button to be taken through a 5-step wizard.

During the first step, the project can either be specified in the CSV file as mentioned, or you can select a project from a list of available projects. There is also an option to set an email address for new users (to be created as part of the import if need be), and the date format used in the CSV file.

import CSV file into JIRA_1_of_5

import CSV file into JIRA_2_of_5

The next screen (step 3 of 5) allows you to map fields/columns from the CSV file to JIRA fields. Custom fields can be selected, as well as fields such as Reporter, Assignee, Issue Type, etc.

import CSV file into JIRA_3_of_5

Unless fields were selected for mapping, step 4 of 5 simply allows you to start the actual import:

import CSV file into JIRA_4_of_5

A summary is then displayed on the next screen (step 5 of 5), showing the progress and allowing you to stop the import:

import CSV file into JIRA_5_of_5

And finally, once the import has been completed, a summary of the number of issues that could be imported, are shown with links to a detailed report and the option to save the import configuration:

import CSV file into JIRA completed

Post import checks

Once the import has been completed, and the report has been studied, open the project and insect the issues for any obvious errors.

Happy importing!


More information can be found in the online documentation section:



Enhanced by Zemanta

Agile project management tools

There are many agile project management tools out there. To name a few that we have tried and tested: Pivotal Tracker, VersionOne, Scrumy and Jira.

We have settled on Jira as the best agile project management tool on the market at the moment, but our reasons for selecting our best of breed agile project management tools is not only focused on agile project management, as there is more to an agile organisation than agile projects.

Comparison of Agile Project management tools

So here is a comparison of the main characteristics of these agile tools:

[ahm-wp-tabular id=855 template=tagbox]

Jira: Agile project management tool of choice

Since at Infoware Studios we focus on not only agile project management, but on shifting your organisation to become agile end-to-end, Jira is our tool of choice. Jira assists to manage an agile organisation end-to-end including aspects like production support, costing, governance and people planning straight through to tracking and managing projects. Thus although tools like VersionOne come close to Jira in the agile project management tool space, our tool of choice after using all of the above tools on our projects are Jira.


Enhanced by Zemanta

Creating a Windows 2012 Server in the Windows Azure cloud: Part 1


As Agile Consultants we are always looking at ways to improve processes, both internally and for our clients. Today we will be looking at Microsoft Windows Azure as a cloud computing platform. We will setup a Windows Azure account, proceed to create a Windows Server 2012 instance and login with RDC (Remote Desktop Connection).

Cloud computing is the use of computing resources (hardware and software) that are delivered as a service over a network (typically the Internet). The name comes from the use of a cloud-shaped symbol as an abstraction for the complex infrastructure it contains in system diagrams. Cloud computing entrusts remote services with a user’s data, software and computation.

Creating a Windows Azure Account

To create a Windows Azure account you should have a Microsoft account, if you don’t have one you can create one before signing up for Azure.

Microsoft is offering a 90 day free trail on their cloud computing platform which includes the following services:

[list_icon color=”blue” type=”icon_arrow”]

  • 750 small compute hours per month
  • 10 web sites
  • 10 mobile services
  • 1 SQL database
  • 100 hours of SQL reporting per month
  • 35GB of storage
  • unlimited inbound data transfer
  • 25GB outbound data transfer
  • 50GB media services encoding
  • 20GB outbound CDN
  • 128MB cache
  • 1500 relay hours service bus
  • You can


Windows Azure Login

To sign up for a Windows Azure account go to the Windows Azure login page.

Login with your Microsoft account.

Windows Azure Signup page

You will be greeted with a signup form, you should have a mobile number and a credit card number ready, these are used to confirm your identity.

Click on the next arrow.

Windows Azure Signup page 2

You will be prompted for you mobile number, enter your number in international format and wait for an SMS. You should enter the verification code in the text box that appears.

Windows Azure Signup page 3

You need to enter your billing details into the next screen. Click next when everything is filled in. You won’t be billed for the first 90 days and after that Windows Azure will prompt you to purchase a subscription.

Virtual Machine Dashboard

windows azure vms list

Create a new Virtual Machine

create a vm for windows azure

Click on “Quick create”

create a vm details for windows azure

[list_icon color=”blue” type=”icon_arrow”]

  • Fill in a DNS name
  • Choose the server type ( default Windows Server 2012)
  • Choose Size
  • Enter Password and Password confirmation
  • Choose Location
  • Create Virtual Machine


Connecting to a Virtual Machine

rdc download button

 Just click on the Virtual machine that you want to connect to and then click on the “Connect” button, this will download a RDC file.

Double click this file to launch Remote Desktop Connection.

remote desktop connection prompt

You will be prompted for a user name and Password once you click on connect. The user name will be “Administrator” and the Password will be what you’ve written in the form to create the Virtual Machine.

If you press ok you should be remotely logged in to your brand new Windows Server 2012 on Windows Azure!

Windows server 2012

Go ahead and click around, enjoy your brand new server in the cloud. Be sure to check back soon for articles on how to configure Windows Server 2012 on Azure with different server roles and applications.



Enhanced by Zemanta

Agile Tool Support: JIRA System Administrator Guide – Issues and Fields

JIRA Training

As part of our JIRA training modules, we have developed instruction guides to assist users when making use of JIRA as an Agile tool. In this blog series, we will be providing tutorials for JIRA System Administrators on how to perform certain functions in JIRA, starting with the Issues and Fields elements in JIRA.

Issues Types in JIRA

Everyone’s needs are different and so JIRA also allows you to add, edit and delete your own custom issue types. You can also control the set of available issue types for each project by Associating Issue Types with Projects.

Creating an issue type

Step 1: Log in as a user with the JIRA Administrators.

Step 2: Select Administration > Issues > Issue Types to open the Issue Types page, which lists all issue types.

Issue Types 1
Different JIRA issue Types

Step 3: Click the Add Issue Type button to open the Add New Issue Type dialog box

Add new Issue type in JIRA

Step 4: Add New Issue Type and click the add button. You can Delete or Edit by going to Administration > Issues > Issue Types to open the Issue Types page and click the Edit link.

Fields in JIRA

JIRA enables you to add custom fields in addition to the built-in fields and you could choose to create this field as a Free Text Field, in which users can type whatever they wish, or as a Select List, which will force users to select from a list of pre-defined options.

To create a new field, associate it with a context, and add it to a screen:

Step 1: Select Administration > Issues > Fields > Custom Fields (tab) to open the Custom Fields page.

Step 2: Click the Add Custom Field button.

JIRA Fields Create Custom field in JIRA

Step 3: Select the appropriate type of field for your custom field, in this instance we will choose Text Field.

Step 4: Click the Next button to open the Create Custom Field – Details (Step 2 of 2) page.

Create Custom field in JIRA 2

Step 5: The Field Name will appear as the custom field’s title in both entering and retrieving information on issues, whereas the Field Description is displayed beneath the data entry field when entering new issues and editing existing issues, but not when browsing issues.

Step 6: Select an appropriate Search Template (see above). Pre-configured search templates are available for each shipped custom field type. A description of each search template will appear next to the select list when you select one.

Step 7: Select one or any number of ‘Issue Types‘ to which this custom field will be available. Alternatively, select ‘Any issue type‘ to make the custom field available to all Issue Types. You can change this in the future if you need to.

Step 8: Select the applicable context, that is, the ‘Project(s)‘ to which the custom field will be available. Alternatively, select ‘Global context‘ to make the custom field available to all projects. Click the ‘Finish‘ button.

Step 9: This will bring you to the screen association page. Select a screen, or screen tab, on which to display your newly created custom field. You must associate a field with a screen before it will be displayed. New fields will be added to the end of a tab and click on update.

Associating fields in JIRA

Newly created custom field will be displayed in a summary of all custom fields in your JIRA system. You can edit, delete or configure custom fields here.

Summary of custom fields in JIRA


Related articles

Enhanced by Zemanta

Agile testing: Getting agile tests incorporated into your sprints using BDD and Cucumber in C++

Agile testing

We’ve adopted agile testing in the form of Behavior Driven Development (BDD) as part of our agile development process, and use Cucumber features extensively on Ruby on Rails web application projects for our own customer software development projects, although we have done Java, Delphi and C# implementations of agile testing as well using BDD and Cucumber.

Cucumber for C++

A recent project called for the introduction of agile testing using BDD to an existing Windows code base, with a large portion of the code being developed in C++. Cucumber-cpp is currently the most active implementation of Cucumber for C++. It can be used on Linux, Mac OS X as well as Windows.

Cucumber-cpp prerequisites

The current cucumber-cpp library relies on at least one of the following libraries:

[list_icon color=”blue” type=”icon_arrow”]

  • Boost 1.40 or later
  • GTest 1.4 or later
  • CppSpec development branch
  • GMock 1.6 or later


We’ve decided to use Boost, specifically version 1.5.2 (the most current version at the time). The following software was used on Windows 8:

[list_icon color=”blue” type=”icon_arrow”]

  • CMake – version 2.8.10
  • Boost – version 1.52.0
  • Cucumber-cpp – master branch
  • Visual Studio 2012
  • Ruby 1.9.3 with the cucumber gem


Installing cucumber-cpp on Windows

Installing cucumber-cpp and the included example on Windows proved to be quite a challenge, largely as a result of the dependency on Boost and it’s test framework.  Installation on Linux was trivial in comparison, and the instructions at the library’s Github page worked as expected (for use on Linux).

Step 1: Install Ruby

There are various options to install Ruby on Windows, we’ve used RubyInstaller 1.9.3-p374 as found on the Ruby Installer web site.

Verify the installation in a Windows console:

ruby -v

Once Ruby is installed, install the cucumber gem:

gem install cucumber

Step 2: Install CMake 2.8.10

We’ve decided to use the pre-compiled binary as found on the CMake web site, and it installed perfectly without any issues.

Step 3: Install Boost 1.52.0

Boost was another kettle of fish, especially since it’s unit tests must be included to ensure that cucumber-cpp can be compiled and linked properly. Download the source from the Boost web site and extract into C:\Boost\boost_1_52_0, and then use the following to build Boost (warning, this will take quite a while to complete):

cd c:\Boost\boost_1_52_0
.\b2 –prefix=c:\Boost –build-type=complete –with-thread
–with-regex –with-system –with-date_time –with-test
–with-filesystem –with-chrono –with-program_options
address-model=32 install

Once built, add C:\Boost\lib to the Window system PATH (to ensure that the applicable .dll files are found at runtime when running the executables that will be built in Visual Studio.

Step 4: Build the cucumber-cpp library and example

Download or clone the latest version of cucumber-cpp from the github repository into C:\Cucumber\cucumber-cpp and follow these instructions to prepare a Visual Studio project file:

cd c:\Cucumber\cucumber-cpp
cmake -E make_directory vsprj
cmake -E chdir vsprj cmake -G”Visual Studio 11″

Once done, open C:\Cucumber\cucumber-cpp\vsprj\Cucumber-Cpp.sln with Visual Studio 2012 and build the project.

Running the features

Two steps in a Windows terminal or console are required to run the given example features (change to C:\Cucumber\cucumber-cpp).

a) Run the cucumber-cpp listener

cd vsprj\examples\Calc\Debug
start  BoostCalculatorSteps.exe

A new terminal window should load up, with ‘Listening on port 3902’ as the output.

b) Run features

cd examples\Calc
cucumber CalcFeatures

If all goes well, you should see the following output (showing output inside console2 with ansicon):

agile testing: windows cucumber cpp output screenshot

Bonus feature: Improve the Windows console output

The default output are not colour coded (as one would expect), we’ve installed console2 with ansicon (x86 on Windows 8) to fix this.

More information can be found here:

References and resources

[list_icon color=”blue” type=”icon_arrow”]




Clear user requirements using agile user stories and automated testing

It is vital to have clear user requirements. This can be achieved by using agile user stories. Lately one of the biggest problems we experience in the agile space is the lack of clearly defined requirements.  Lack of clear defined non agile requirements results in a lot of problems during the development cycle.  The following is just some of the key observations around this:

[list_icon color=”blue” type=”icon_arrow”]

  • Lots of rework is identified during Scrum sprint reviews from the business
  • User stories are often only really completed after 3 agile scrum sprints as rework is identified in 2 or 3 agile scrum sprint reviews.
  • This means that the business is paying 2 – 3 times for delivery of a user story.
  • A typical non agile requirement specification goes into the agile scrum sprint. By the time the scrum sprint ends the non agile requirement specification is no longer valid as changes have been made to it due to lack of detail in the original agile requirements and no one bothered to update it


So to overcome issues during requirement definition we use a more agile way of documenting business requirements using agile user stories.

So what is so great about this approach of documenting user stories? Well there are a few benefits of agile user stories that we can highlight here:

[list_icon color=”blue” type=”icon_arrow”]

  • It clearly defines what is required for agile user stories
  • It provides test data as part of agile user stories
  • It forms acceptance criteria for agile user stories that can be used during user acceptance testing (uat)
  • It can be used during automated agile testing
  • When changes are required we update this within agile user stories resulting in user stories being living requirement documents, unlike non agile requirement specifications
  • If you are automating using user stories then it saves developers, testers and the business execution of all the repetitive tasks during quality assurance (qa) or user acceptance testing (uat)
  • It assists to bridge the gap between IT and business and it serves the need of both audiences. Wow!
  • We can use it to keep our codebase clean of unwanted code, implemented but never materialized


So what type of user stories do we get?

[list_icon color=”blue” type=”icon_arrow”]

  • Functional user stories, specifying functionality and used to test if an application is doing what it is suppose to do
  • Characterisation tests, aimed at discovering the behavior of old legacy code
  • UI user stories, aimed at simulating the interactions of users with a user interface, thus the process flow of the user throughout the ui


Enhanced by Zemanta

Jira FAQs – Issue Hierarchy

We often get lot of questions when working at our clients implementing agile (scrum, kanban, xp (extreme programming) so we decided to start a general FAQ page for this as it often is the same across all our clients.

Q1. How do you display hierarchy between Epics, user stories and subtasks in Jira (Greenhopper)?
A. Like with anything in Jira there is always more than 1 way to skin a cat. So there is 3 options for overcoming this.

Option 1:

Within Greenhopper 6 there is a configuration setting that allows you to show epics on the ‘Plan’ view of the agile scrum board. The setting is within

Greenhopper Labs configuration

Greenhopper Labs configuration

that allows you to set Epics being visible on a seperate column on ‘Plan’ view of the Scrum board.

This setting is: 

Enabling Epics within the agile scrum board on Greenhopper configuration

Enabling Epics within the agile scrum board on Greenhopper configuration

Option 2:

See the ALMWorks plugin: jira structure plugin

ALMWorks Structure Plugin

See the ALMWorks pricing for this plugin.

Option 3:

Is the free Links Hierarchy plugin.

Jira Issue Hierarchy Plugin

Enhanced by Zemanta

The job market for IT graduates

Infoware Studios recently gave a presentation to IT students on the IT job market and landscape. Here are some things we highlighted that graduates need to keep in mind when entering the job market.


Contrary to popular belief, money is not the best motivator. Surprised? If you get stuck in a job that you really hate, an increase in money is only a temporary motivator. You will still have to face your dreaded boss each morning, or deal with annoying colleagues, or struggle with unchanging and stifling environments. There will be a point when it is just no longer worth it for your peace of mind. So what really motivates us? We think the following has a big impact, and is something to keep in mind when starting your first job.


If you had the space to design your own destiny and career path within a company, would that not encourage you to strive to achieve that? Mastery is about creating a space that provides the tools and allows you to do what you really want to do. To master what you are passionate about, and then bringing that passion to the company. We think it’s pretty powerful stuff.


Taking control and responsibility for your career path through owning it. Understanding where you fit into the bigger picture and tangibly seeing and sharing in the results of your efforts. Having the ability to make decisions within the boundaries of your authority when executing your daily work.


Understanding the why. Being given a reason and knowing why things are being done in a certain way. Knowing your purpose creates focus.

As a graduate, you are probably about to enter into your first job, and the experience you gain will shape and mould your future career path. If you are truly passionate about your field, find a company that will allow you to develop that passion, take ownership for it and determine your purpose.


In our current economic climate, when going for interviews, many job seekers are often so desperate and grateful for the opportunity of an interview that they often forget that they need to interview the company as well, to determine if it will be a good fit with their needs. Not everyone has the luxury of turning a job opportunity down, but if you are serious about developing your passion and finding the right company that will allow you to flourish, remember to follow these tips:

1. Ask questions

You are also interviewing the company you go to. Often at the end of an interview, the interviewer will ask if you have any questions. Ask! This allows you the opportunity to see if this really is a place you want to spend 40-50 hours a week at, whether they allow for growth and whether they suit your needs. It also gives the impression that you are interested in the company.

2. Misrepresentation

Look out for misrepresentation. In an interview, both parties are putting their best foot forward – the company is painting the prettiest picture in order fill a role, and the candidate is highlighting all their impressive achievements so as to land the job. However, be wary if something sounds too good to be true. Every company has its flaws, you need to determine whether it’s something you can work with or not.

3. Speak to someone

Speak to someone working in the business. This will give you a better feel for how things are done at the company and whether things match up according to what was said in the interview.

4. Check your contract

Look out for contract clauses. Many graduates will begin in an intern position and working from the ground up is the best way to gain experience. However ensure that the contract doesn’t snare you into a situation that is unfavourable, such as working for a long period of time on an unsustainable income.

Remember, most companies look for someone with the right attitude that they can grow and keep. Although skills do play a role, if the person has the right attitude, skills can easily be taught and added to. Now go find the right company for you!

Enhanced by Zemanta
Page 5 of 6 «...23456