XNSIO
  About   Slides   Home  

 
Managed Chaos
Naresh Jain's Random Thoughts on Software Development and Adventure Sports
     
`
 
RSS Feed
Recent Thoughts
Tags
Recent Comments

Playing Customer for Penn State University Project

Last year, Oct I visited Penn State University, York and presented some guest lectures. Thanks to Dr. Samir Shah for taking the initiative and getting everything organized. In fact he hosted me at his place. Later, in Nov, Penn State hosted the Simple Design and Testing Conference. During both these visits I met IST instructor Bill Cantor. Samir introduced me to Bill, as Bill was planning to facilitate a distributed project with final year IST Students.

Last year Samir facilitated two distributed projects between US and India. He came up with some very interesting stats about the two projects. For one project he used Agile and for another one he used traditional methods. More details…

This year Samir is busy establishing relationships with Universities in India for a 2 + 2 program where students can study 2 years in India and then go to US for the last 2 years. In the end of the 4 years course they would get a Penn State University Degree.

While Samir is busy, Bill will lead the initiative on distributed projects. The plan with this project is to have a customer offshore and have the project management and development team (University Students) in US. I really liked the idea and I agreed to play the customer role on this project. This will really help me understand the reverse sourcing funda.

Now that we have the team and the customer in place, what do we build in 3 moths? The answer was easy. For a long time, I wanted to develop a Content Management System specialized for Conferences. I run at least 4 different conferences each year and each of those conference have very different formats. Some are open space based, while some are more traditional conferences where speakers submit proposals and then we select speakers, create a well defined program for the conference. They have quite different sponsorship structure and have a huge variation in terms of target audience. I have 3 different websites built on completely different technologies to run these conferences. Well, it great to experiment with different technologies, but after a while they really become a pain. Also the big issue I face is each time I want to create a new conference, the bootstrap time is huge. There is a huge duplication in terms of content. I want to minimize this and help other people easily create new conferences. So this was my chance to scratch my personal itch and also help others.

For this distributed project we plan to use extreme programming along with Ruby on Rails. The students are new to Agile and are currently learning about Agile and the programming language. We kick started our first iteration today (on February 11th). We are planning on five two week iterations. Totally we have 12 weeks for the project. 10 weeks would go in the iterations and 2 weeks to wrap up stuff.

Due to the timezone issues, we have our meetings are crazy times. We meet at 9:30 PM EST and 8:00 AM IST. To make sure everyone on the team is on the same page, I asked the team to build a mindmap about the project during our last meeting. Last week, we had an overview meeting and this week the team presented the mindmap. I was very impressed with their work.

Content Management Site MindMap

Based on the mindmap, we selected 3 basic functionality and broke them down into stories. I also created acceptance criteria of each story. Based on this the team estimated and came back with a feedback saying the stories were too complex to complete in one iteration. Iteratively we trimmed down the story till the team felt comfortable with them. Finally we have 3 stories which will give me a good feel of progress when I see the demo in 2 weeks from now. The team has also setup an online story and issue tracking system. We’ll be using the same to Q&As. Hopefully this will become our knowledge base.

The goal for our first iteration is: Wet out the two basic ways to update content.

We want to
– locally edit content offline and then upload it
– CMS style (wiki)

For the first iteration we have one user, that is myself….Naresh Jain – Organizer of the Simple Design and Testing conference. So in this case, Naresh is the admin for the website.

Story 1: Complexity 4
As an admin of the conference site,
I should be able to authenticate myself
So that I can edit the pages online

Acceptance Criteria:
Given that I’m a registered user
When I enter my user name and password
Then I should be able to see the welcome page

Given that I’m not a user of the site
When I register as a new user, by giving a new user name, password and other deails
Then I should be able to see a welcome new user page

Story 2: Complexity 5
As an admin of the conference site,
I should be able to edit pages locally and upload them
so that I can work offline

Acceptance Criteria
Given that I’m a registered admin of a site and I’ve logged into the site
When I upload a plain text file thru the website
Then I should see the website updated

When I upload multiple files thru the website by selecting a directory
Then I should see all the webpages in the website updated

For now we can ignore rendering the file. Just update a plain text file and it should show up.

Story 3: Complexity 5
As an admin of the conference site,
I should be able to edit the page online (CMS Style)
so that I can update information from anywhere once I’m connected to the site

Acceptance Criteria
Given that I’m a registered admin of a site and I’ve logged into the site
When I go to the edit section in the admin area and edit and save a page
Then I should see that page updated on the website

For now we can ignore template and other stuff. Just updating plain text. No images, no hyperlinks, etc.

At the end of the iteration I would like to have:

  1. Fully unit tested code
  2. Some basic UI tests in Selenium or any other tool the team is interested in
  3. Zipped version of the site with rake script to deploy the rails app

    Licensed under
Creative Commons License