Throughout the first weeks of Software Engineering,
we frequently broke into groups in order to complete team oriented activities. These activities were designed to simulate the work flow of a software engineering team that is both brain storming an application, as well as the planning that goes into designing the details, writing user stories, dividing work up between team members, and estimating how long each feature would take to develop. I recently interned as a software engineer at a local company and found that the procedures followed in class were nearly identical with those that I took part in while working. The exercises served as a great tool to refresh my memory on standard procedures, as well as learn some of the theory behind the standard practices that I initially took as arbitrary decisions. The process began with a need to think of a theoretical application to develop. All of the members had a dog, so we thought that a lost dog tracking application would be a novel concept. At this point, we needed to think of the scope of the project, as well as what a typical user would prefer out of this kind of software. We decided that there would be a need for users to register dogs, gather the location via GPS (pinpointed by an chip implant), as well as different terms of service. For example, users may wish to simply pick up their dog themselves, or pay a little more to have it delivered. These ideas were purely conceptual at this point, and next came the need to turn them into tangible, descriptive user stories. The segment of the process was intriguing, as each team member gave their estimate via cards at the same moment, providing an unfiltered look into what everyone actually felt, gather than simply conforming to the group. We then came together in attempt to name all of the assumption we made with the previous estimates, provoking us to re-think some of our previous estimates. These included assumptions relating to legal concerns for our potential application, as well as assumptions relating to API’s we anticipated using. In most cases, estimates were lengthend. Finally, we democratically divided each user story into several tasks. These tasks were descriptive implementation details pertaining to each user story, averaging around three per story. Software engineering is implicitly a team oriented activity, so positive and efficient team interaction is key. Our team thoroughly enjoyed the polite polite discussion that went into making critical development and projection decisions, and I believe this open discourse contributed to a well-rounded simulation of real world software development. We operated primarily in a democratic fashion. If team members both had different thoughts on an topic, be it the estimated length of time to give a certain user story or a type of feature, we would routinely allow all members to express their beliefs or ask questions, and then hold a vote. The decision with a majority was taken. We would then ask any party that voted against the majority decision if they had any burning objections, at which point we would have held another discussion. However, it never did come to this point. In hindsight, there were only a few ways I thought the exercise could’ve been improved. One idea would be to have groups create a tangible mockup for our application. I believe that direction could have sparked more creativity in designing our application, as well as how long each feature may take. Also, we ran In terms of practices that went well, applying democratic principles to the decision process went remarkably well in terms of gauging every team members understanding of the direction of the application as well as ensuring everyone’s opinion was heard. In conclusion, I felt that stepping into the shoes of a real life software development team turned out to be an enriching experience, as it gave a lightweight glimpse into the challenges, rewards, and learning experiences that developers face everyday.
Title: Set home range
Description: The owner can set the dog's home location on a map. My Estimateimate: 3 Days Group Estimate: 5 Days Priority: Tasks: 1. Show map Display map centered on user's location Estimate: 2 Days
2. Select location and range
Allow user to click spot on the map and enter a radius. Store lat/lon and radius in database. Estimate: 1 Day
Title: Alert owner when dog is out of bounds
Description: A notification will be sent to the user when the dog leaves home. My Estimate: 5 Days Group Estimate: 5 Days Tasks: 1. Create notifications Create a system for sending notifications to user. Estimate: 2 Days
2. Monitor dog's location
Check dog's location every 5 minutes to see if it has gone out of range. Estimate: 2 Days
Title: Report a lost dog
Description: I want to be able to report a dog as lost. My Estimate: 5 Days Group Estimate: 3 Days Tasks: 1. File a report page Click a link that directs the user to a report page Estimate: 1/2 Days 2. Fill in report Prompt the user for the dog's name, description, id, and last seen location. Estimate: 1/2 Days
3. Save report Store the lost dog report in the lost dogs database. Estimate: 1 Day
Title: Browse through found dogs
Description: I want to be able to view a list of dogs that have been posted as found. My Estimate: 2 Days Group Estimate: 2 Days Tasks: 1. Create database Create database to hold all dog records. Estimate: 1/2 Day
2. View dogs page
Create a page to display dog records. Estimate: 1 Day
Title: Share on social media
Description: Share lost dog info via Twitter, Facebook. My Estimate: 13 Days Group Estimate: 8 Days
Title: Claim a dog
Description: If I see my dog while browsing, I want to claim it. My Estimate: 5 Days Group Estimate: 5 Days
Title: Remove lost dog posting
Description: If I find my dog, I want to remove my lost dog post. My Estimate: 1 Day Group Estimate: 1 Day
Title: Book dog delivery
Description: Users can have dog delivered to them via uber. My Estimate: 13 Days Group Estimate: 13 Days
Title: Track lost dog's route
Description: The owner can view where the dog has been on the map. My Estimate: 3 Days Group Estimate: 3 Days
Title: Calculate best route to dog
Description: I want to view directions on a map to my dog's location. My Estimate: 5 Days Group Estimate: 5 Days
Title: Compare to friends
Description: I want to compare my dog's information to friends' dogs. My Estimate: 8 Days Group Estimate: 3 Days Revised Estimate: 8 Days
Title: Report a dog as found
Description: If I find a dog that isn't mine, I want to list it on the lost dogs board. My Estimate: 2 Days Group Estimate: 2 Days
Out of scope:
Title: Send feeding reminders
Description: Notify the user when it is time to feed the dog.
Title: Finalize payment
Description: Allow users to pay electronically.
Title: Arrange for dog pickup.
Description: A user can log a spaceflight for dog delivery.
Title: View vitals
Description: User can view a dog's hunger, thirst, and other metrics. Title: Calorie / weight loss counter Description: Measure the weight your dog loses or gains.
Title: Communicate with dog
Description: Allow user to speak with dog telepathically.