Blog 9, CS 200W

Delivering a project and presenting to a multi-level audience

A project delivery is a culmination of the team’s effort after a series of sprints. After a several sequences of twists and turns or crests and troughs of requirement/direction changes, the team is finally at the juncture where it has produced a product that the client wanted. The client has been involved in the process from the beginning, so nothing should be a surprise. Project delivery is also an opportunity to showcase the product to a broader audience than the immediate client that the team has been working on. Now comes the question of presenting the product to an audience that is not aware of the product yet. Worse, the audience may be very diverse in their technical or domain knowledge. How do we go about creating a presentation that appeals to all.

A common rule of thumb for presentations is to go with the least common denominator in the audience who is significant enough. If the person with the least technical knowledge understands your framework, it is a win. There is always more hardwork in creating a simple presentation than a complex one. One usually starts by creating a presentation with all details in it and then stripping it slowly of the complexities layer by layer, in the end leaving only the most vital information that could be understood by all. After all, we’re investing time and energy, the audience is expecting to get something and if we disappoint, the ramifications could be disastrous. The audience may never come back even if the next product is stellar.

Figure 1: Image. Retrieved November 20, 2014. From: http://www.todaysengineer.org/2004/Aug/presentations.asp

Figure 1: Image. Retrieved November 20, 2014. From: http://www.todaysengineer.org/2004/Aug/presentations.asp

The objective is very simple – grab audience’s attention and keep it.

As the picture above shows, audience will naturally lose interest with time. The key is to find out what interested the audience in the beginning – is it curiosity, is it a joke that you told in the beginning ? Each audience is unique, so you would have to determine what works for a specific audience at that time. Whatever works, use that technique often so that you can bring the audience to a higher attention span than they normally would be in.

Also, always remember to keep the presentation simple and easy to remember.

If you’re successful, the audience will be engaged, they would have a good opinion about the product and also good knowledge about the product to make the right choices.

 


 

References:

Reimold, P., & Reimold, C. (2003, October). IEEE-USA Today’s Engineer. “On the Road to a Great Presentation —
Step One: Care About Your Audience”, Retrieved November 20, 2014, from http://www.todaysengineer.org/2003/Oct/presentations-p1.asp

Reimold, P., & Reimold, C. (2004, September). IEEE-USA Today’s Engineer. “Many Audiences, One Formula for Success”, Retrieved November 20, 2014, from http://www.todaysengineer.org/2004/Aug/presentations.asp

Standard
Blog 8, CS 200W

Handing off a project to a client; what are the risks and challenges?

The biggest risk and challenge when handing off a project to a client is the fear of meeting the expectation of the client. The lingering question in the mind is “What if what we are presenting is different from what the Client is expecting?”. This happens in spite of the best documentation, design, execution and testing. Even projects that go into meticulous details of documenting every single requirement might in the end come to delivering something that the client is not expecting. Many times the client’s mindset changes, environment changes, technologies change.

The picture below depicts a very common joke in programming circles –

Figure 1 : Image Retrieved, Nov 14, 2014. From: http://www.projectcartoon.com/cartoon/2648

Figure 1 : Image Retrieved, Nov 14, 2014. From: http://www.projectcartoon.com/cartoon/2648

Multiple methodologies have been developed to counter this – more in software development than other domains since software is abstract and clients may not be able to envision it before it is created, the risk of not meeting the expectation is higher. Many times, clients might want a new functionality when they see the product for the first time !

It is precisely for this reason that Agile methodologies have become very popular in the last decade or so. Scrum and other frameworks have ensured that there is maximum transparency between the client and other stakeholders and the product under development. Frequent releases are done and client would be able to see the product and it evolves thereby having a chance to mould it in the right direction before having to say something after it is tool late.

The other aspect of handing off a project to a client is the sense of loss. As a person who has developed solutions for clients, I can personally vouch for this feeling. Here is a project that the team has worked on for months together and finally when it is handed over and knowledge transition is done, there is a feeling as though something precious is gone from hand to another owner who may not take care of it as you have done ! But effective documentation and good knowledge transition processes would ensure that the system does not get broken under the supervision of new team.

A good reference for how to hand over a project could be an article written by Ben Ferris where he outlines different steps in the process –

  1. Picture the end product
  2. Make the Date Clear
  3. Documentation and Training
  4. Get the Sign Off
  5. Let It Go

Those 5 points are self-explanatory. In summary, if there is a good plan and team in place to do effective handover, all the parties would be happy.

 


 

References:

Ferris, B. (2012, July 7). How to Hand Off a Project Successfully. Retrieved November 14, 2014, from http://cobaltpm.com/project-hand-off/

Standard
Blog 7, CS 200W

What five technical skills are employers seeking? What five soft skills put you on top?

Before jumping directly into technical skills, let us briefly look at the current climate in the world of Information Technology. The current trend is that more companies are trying to recruit new grads. There was a time when companies would want only professionals. More the experience, more the degrees and certificates you had, more sought after you were. But that trend is changing. In an ever changing world, what is required is not someone who has deep expertise in a specific area but someone who can acquire skills fast.

Top 5 skills according to me would be

  1. Ability to work in a team
  2. Ability to make decisions and prioritize work
  3. Ability to communicate well
  4. Technical competence in the domain that the company works in
  5. Domain knowledge and passion to work

Yes, technical competence is #4. I’d say that an intelligent person with strong fundamentals can pick up technology pretty fast. Also the technology landscape keeps changing and what is relevant today may not be so tomorrow. So a list of ‘hot technical skills’ today in 2014 may not be relevant to someone who might read this in the future.

From my experience, the top technical skills are the following. They are not specific languages per se but areas that an average engineer should be aware of. So a Front end engineer who knows basics of deploying in the cloud, programming for mobile and take care of security would be greatly in demand.

  1. Front end web development – Long gone is the time when the meat of programming was done in the backend and front end was just a layer to show the data using HTML, JSP ..etc. Recent years have seen an explosion of front-end technologies and frameworks – HTML5, bootstrap.js ..etc have enabled smart engineers to create amazing web applications.
  2. Mobile development – iOS or Android – E-commerce on mobile has been growing steadily and has outpaced web in many categories. With the advent of IPad and wearables, apps on devices make more money than corresponding websites. So this is a highly sought after skill.
  3. Data Scientist / Analyst – Another area that is growing very fast is Machine learning and data mining. Companies are accumulating petabytes of user and item data and need to have intelligent systems to mine relevant information to recommend useful items to customers. So if there are engineers who know R language or Classification and clustering techniques, they are in high demand.
  4. Cloud Computing – In today’s age, an average engineer is expected to know how to provision an Amazon EC2 instance and deploy code to it. Automating the process of provisioning and depoyment, creating an internal cloud, growing or reducing machine pool size on demand ..etc are key skill that are sought after.
  5. Security – Computer security is another key area that is growing rapidly. Security in the cloud and mobile devices is a niche area at the moment. Every company now seeks engineers who know basics of security and also engineering who are experts in the area.

References:

Top IT Skills For 2014. (n.d.). Retrieved December 2, 2014, from http://www.forbes.com/sites/emc/2014/04/22/top-it-skills-for-2014/

Standard
Blog 6, CS 200W, Social Media

Social Media and Branding

We are in an era where social media influences everyone more than parents, friends, peers, etc. A couple of decades back, it was improbably to even think that something virtual could control so many aspects of your lives. It was also impossible to think that we would have tools to reach over 100 million people within minutes. The power and the challenges are amazing.

Social media marketing industry report done by Social Media Examiner in 2013 came out with the following findings:

  • Marketers place a very high value on social media: A significant 86% of marketers indicate that social media is important for their business, up from 83% in 2012.
  • Tactics and engagement are top areas marketers want to master: At least 88% of marketers want to know the most effective social tactics and the best ways to engage their audience with social media.
  • YouTube holds the top spot for future plans: A significant 69% of marketers plan on increasing their use of YouTube, making it the top area marketers will invest in for 2013.
  • Marketers want to learn most about blogging: While 58% of marketers are blogging, 62% want to learn more about it and 66% plan on increasing blogging activities in 2013.
  • Facebook and LinkedIn are two most important social networks for marketers. When forced to only select one platform, 49% of marketers selected Facebook, followed by LinkedIn at 16%.
  • Most marketers aren’t sure their Facebook marketing is effective: Only 37% of marketers (slightly more than one in three) think that their Facebook efforts are effective.
  • Increased exposure is the top benefit of social media marketing: significant 89% of marketers stated that increased exposure was the number- one benefit of social media marketing.

There are clearly a lot of benefits of doing marketing through social media.

So it makes practical sense to create a brand through social media that aligns with the way you want yourself to be perceived by others.

There has never been a more important time to create and promote your self as your brand. You must take ownership of your profile and make it compelling, concise, and attractive. In fact, if you are serious about your career, you need to be keeping online profiles in LinkedIn, Facebook, etc. updated.

The diagram below shows the most commonly used social media platforms:

So, what can be done to improve your brand ?
This can be done in several stages:
  1. Identify the social media that you would focus on. Use the diagram above for help to decide.
  2. Once you have narrowed down the sites that you want to have your brand reflected, you need to modify your profile to make it more compelling. You can follow the steps outlined in the earlier blog post on LinkedIn https://robinsonrajusjsu.wordpress.com/2014/10/19/linkedin-profiles-how-to-use-them-how-to-market-yourself-how-to-network/. Thought it was only for LinkedIn, the same techniques can be applied to the other social media as well.
  3. Once you have a rock-solid profile, the next step is to master the connection process. You must strive to expand your network as much as possible. You should remember that connections are like a garden vine. If left unattended, it could destroy the garden! You should send updates to your profile as often as possible, which will in turn reach out to your networks’ home pages.
  4. The next step is to expand your network. Use your personal brand to create a circle of influence around the topics of your expertise.
If you keep practicing it, you will notice that your brand will improve, more people start taking notice and lot more opportunities come your way. One silver bullet solution may not work for everyone. Each needs to try out different methods, find the path that works best and keep iterating on improving the brand recognition and keeping a close eye on the benefits.

References:

Stelzner, M. (2013, May 21). 2013 Social Media Marketing Industry Report. Retrieved November 4, 2014, from http://www.socialmediaexaminer.com/social-media-marketing-industry-report-2013/

MIKOLUK, K. (2013, July 25). Advantages and Disadvantages of Social Networking: Should You Spend More Time Connecting Online? Retrieved November 4, 2014, from https://www.udemy.com/blog/advantages-and-disadvantages-of-social-networking/

Kievman, N. (2007). Take Control of Your Image and Brand. In LinkedIn Quick Start Guide (1st ed.). LinkedStrategies.com.

Standard
Blog 5, CS 200W, LinkedIn

LinkedIn profiles, how to use them, how to market yourself, how to network

sIn this post, we take a segway from discussions around Agile methodology and focus on something that is very important for everyone’s career – to have an online professional profile, something that someone can look at and find out about your career, capabilities and achievements.

There are many sites where one can host a professional profile but LinkedIn is the most popular business oriented social networking service. With a huge database of over 120 million people, all of whom you can search and most of whom you can message within minutes, LinkedIn is far ahead in features and reach than other networking services. Employers and recruiters actively look at LinkedIn profiles either to find potential candidates that suit the role that they are looking for or to find out more about the person that they are interviewing. So it is very pertinent to look a little in-depth at what the site provides and how effectively it could be used.

What does LinkedIn provide?

LinkedIn’s remarkable value is making our second and third degree networks visible, as well as the connecting paths, thereby revealing the networks of people we know. Thus it helps in finding the right people using our connections. Here is a short summary of what LinkedIn provides:

  • Provides an ability to find and identify the right people through 2nd and 3rd degree networks and connecting paths.
  • Gives a platform to discover information that can help in a conversation, meeting or network event by reading the other person’s LinkedIn Profile beforehand.
  • Helps in maintaining relationships with your network via personal messages, sharing ideas in Discussions and helping people out in Answers.
  • Helps in getting Recommendations which are visible to anyone, but in particular to the people who are important in your job or for your goals.
  • Provides a platform to receive introductions and referrals to the people who matter to you via the introduction tool or a regular email.
  • Helps in discovering the relationships between people by looking at mutual connections.
  • Raises your visibility, reputation, personal brand, and company brand via your LinkedIn Profile, your contributions in Answers and Discussions and on the web via search engines.
  • Helps in “word of mouth publicity” by receiving Recommendations, or from people recommending you in Discussions or mentioning you as the expert in Answers.
  • The platform sends notifications via Network Updates when someone changes jobs. This might be a good reminder to reconnect with them.
  • Helps in picking up trends in the marketplace via Discussions.
  • Assists in finding professional organizations to join, both online and offline, via Groups, and via people’s Profiles.

LinkedIn profile:

Your LinkedIn profile is the page that people go to when they want to find out information about you. It means that many times, it is the first professional impression you make on someone. You need to make your profile relevant and highlight specific portions so that it increases your visibility, supports your personal branding and reputation.A good Profile increases your visibility on LinkedIn and also on the web. Google and other search engines index the information from your Public Profile on LinkedIn. Since LinkedIn has a high Page Ranking in Google the Profiles will also appear high in search results. If someone is not looking for you, but looking for a person with skills that you are expert at; a great LinkedIn profile will channel them to you.
How to market yourself by creating a great LinkedIn profile:There are 5 portions of your profile that you need to focus on to create an attractive LinkedIn profile:

  1. Your “Teaser”: Picture, Name, Professional Headline, Location and Industry.
  2. Short Overview: Current & Past experience, Education, Recommendations, Connections, Websites, Twitter, and Public Profile.
  3. The Core: Summary and Specialties.
  4. The Specifics: Experience, Education, and Sections.
  5. The Details: Additional Information, Personal Information, and Contact Settings.

1. Teaser: Make sure that you provide a professional picture. Since there is not much space for photo, just focus on have a good photo of your face with the upper torso. Make sure that you provide a name that people can recognize you with. Do not give nicknames. Give a professional headline that tells something about your area of expertise. By default it is the current job title, but it is better to change it. Provide a location that indicates where you are working out of. Also provide the industry where you have your expertise.

2. Short Overview: It is important to use “Current & Past Experience” section to help being found by former colleagues or by people searching for skills and roles that you have performed. Education is an important section where you could get found by people searching for alumni from specific schools or to connect with your former class or school mates. Recommendation is another powerful feature that you could use. Make it a habit to ask for recommendations, and provide recommendations for other people. Make it a point to have connections who know you or can recommend your skills. If you cannot have one of your connections give you introduction to another, it is not of much use. There is also a section that asks you about your websites and you can list up to 3 websites. Instead of the standard “Company website” or “Personal website”, choose “Other”and then write some compelling text. If you have a Twitter account, list it so that people can follow you. At this moment this feature exists on LinkedIn also. But if you are actively posting on Twitter, it makes sense to post Twitter link. Lastly, you must take care to see that you have a public profile URL that is not the standard undecipherable alpha-numeric string but a URL with your name it in. This is good for SEO.

3. The Core: “Summary” is the place where you convey a lot of information about you in a very small area. It should not be too long or too short. The recommendation from Jon Vermeiren’s book “How to really use LinkedIn” is to use three blocks of text: information about the organization, some professional information about yourself, and some personal information. “Specialties” is the place to share the skills and knowledge you have accumulated in all your past jobs. This is the place to explain your expertise. You can put your certifications, knowledge of tools and programming languages, jargons, acronyms that are relevant to your industry here.

4. The Specifics: The “Summary and Specialties” section has limited room. The Specifics section is where you describe in as much detail, your experience and education – including courses, projects, certifications, patents, organizations, etc.

5. The Details: In this section you provide additional information related to your interests, groups that you belong to, honors and awards, personal information to reach you, etc.

The above steps need to be followed through on a periodic basis to ensure that the information does not get stale. Keeping your LinkedIn profile up to date is the best strategy to market yourself and present your best to the world.

How to expand your network:

In their book “How to really use LinkedIn”, Vermeiren & Verdonck give 4 phases to building a foundation of your LinkedIn network.

Phase 1: Upload your email contacts and connect with the ones already on LinkedIn.
Phase 2: Find current and former colleagues and classmates and connect with them.
Phase 3: Discover people you may know and connect with the ones you actually know.
Phase 4: Promote your LinkedIn Profile with a LinkedIn Email Signature and LinkedIn Profile Badge for your website and blog.

Once you have done these, you have a solid foundation on which you can build your network. It is said that there are just 6 degrees of separation between everyone in the world and since LinkedIn gives you 3 degrees of connections, you can leverage it to reach any contact that you have in mind. The next logical step is to join Groups that are relevant to your area or work or expertise. Groups are a place to help others and be helped by them, to apply the Golden Triangle of Networking and to raise your Know, Like, and Trust factor. Once you participate in some groups and gain trust and establish your brand as someone who can answer questions on specific topics, you can start groups or become Group manager.

There are a lot of other strategies to network and improve your sphere of influence. As you use LinkedIn more, you would be able to effectively find more of your ‘target audience’ by doing specific searches, setting up alerts, browsing the connections of people in your network, browsing through LinkedIn recommendations of who to connect to, which groups to join, etc.


References:

Vermeiren, J., & Verdonck, B. (2011). How to really use LinkedIn, second edition (2nd ed.). Stamford, Conn.: Hannacroix Creek Books.

Elad, J. (2011). LinkedIn for dummies (2nd ed.). Hoboken, N.J.: Wiley.

Brown, K. (2014). Mastering LinkedIn (1st ed.). Bookboon.com.

Kievman, N. (2007). LinkedIn Quick Start Guide (1st ed.). LinkedStrategies.com.

Standard
Agile, Blog 4, CS 200W

Agile tasks lists, what does “done” mean in Agile?

This is the fourth post in this series of “Introduction to Agile methodology”. The topic of this blog is “Agile task lists, what does “done” mean in Agile?”.

Teams change their methodology to agile with the lofty goal of getting great results but often fail. A primary reason for failure is the ambiguity around the definition of “done”. When what needs to be done in a User story is not clearly defined, what gets done does not fully meet end user requirements or even if it meets, might create technical debt. During the sprint planning, when the team discusses about the user story, everyone needs to make sure that the tasks required to complete the User Story is fully understood. If not, the scope would be inaccurate.

One way of listing down a task for the User Story is to go over a “done thinking grid“. A sample one is below:

"Done" Thinking Grid

Column 1: Make sure that the User Stories for a sprint are clear and understood by the team. Also make sure that the acceptance criteria are validated by the product owner. Make sure that the tasks for the Stories have been identified. Estimation will not be accurate if the tasks were not clearly understood by the team. Communicate build and package changes to the build master if you have one. Make sure that there is enough time for the product owner to sign off the User Stories after the User Acceptance Test. Also ensure that the features not done during the sprint are added back to the product backlog.

Column 2: Make sure that development, staging and production environment is ready with all tools and artifacts needed to complete the tasks at hand. Continuous integration, automation, test data, etc., need to be in place. Also, the Design needs to be complete. Lack of design may mean that the steps in the tasks have not been thought through. This situation is risky since it could result in scope creep or not being able to deliver on time. Unit tests, documentation and pre-release builds need to be ready.

Column 3: Make sure that all the coding for features in the task list are done. “Code complete” implies that coding is done, unit testing is done, code re-factoring is done, bug fixes are done and the code is checked in.

Column 4: Make sure that automated code reviews, for e.g review by a tool like P.M.D for Java coding conventions are done. Every code that is written needs to be peer reviewed and approved. Check if code coverage metrics have been maintained. If the new code didn’t add tests, coverage might decrease. Check if the project metrics like burn-down chart are updated.

Column 5: Ensure that the product is fully tested before being released to production. Check if functional testing is completed. All kinds of automated and manual testing as per test cases need to be completed. Also make sure that Regression testing, Load and Performance testing and User Acceptance testing are done. After this mark the tasks as closed.

Summary: Having one definition or checklist of “definition of done” is not practical since every project and organization is unique. Most teams go wrong with the “definition of done” in the initial stages of Agile. If the team is committed to learning from each sprint by earnestly doing Sprint retrospective, then gradually, they would get it right. Getting to a state of the ideal “definition of done” is key to delivering ship-able products that satisfy customer expectations.


References:

Gupta, M. (2008, September 3). Definition of Done: A Reference. Retrieved November 4, 2014, from https://www.scrumalliance.org/community/articles/2008/september/definition-of-done-a-reference

Schwaber, K. (2004). Appendix A. In Agile project management with Scrum. Redmond, Wash.: Microsoft Press.

Standard
Agile, Blog 3, CS 200W

Agile Sprint Retrospective

This is the third post in this series of “Introduction to Agile methodology”. The topic of this blog is “Agile Sprint Retrospective”.

Overview:  Agile Sprint Retrospective is a meeting that happens after a Sprint to evaluate how the last one went. The Team, the Scrum Master and the Product Owner attends this meeting in Scrum. The objective of the meeting is to reflect on the current process and determine what steps could be taken to make corrections and adapt to future sprints.

Screen Shot 2014-09-29 at 11.52.36 PM

Figure 1   Sprint Meetings – Sprint Retrospective highlighted

The meeting starts with all the team members answering 2 questions –

  • What went well during the last Sprint?
  • What could be improved in the next Sprint?

In Scrum, the Scrum Master writes down the answers in summary form. Then everyone prioritizes in which order it wants to talk about improvements. Actionable items could be added to the next Sprint during the Sprint Grooming session as “Non-functional Requirements”.

Advantages of this meeting are as follows:

  • It often exposes Organizational impediments
  • Everyone gets clarity on what could be improved.
  • Actionable steps can be taken towards better execution.

There are many impediments to having a good retrospective. Few of them are as follows:

  • Lack of a proper environment where the members could speak their minds would mean that people could avoid bringing up uncomfortable issues. It is advisable for managers (who do performance evaluation) to be not present in the meeting.
  • Lack of co-operation from everyone might make the retrospective life-less and stale with no constructive inputs to improve in the next iterations.
  • Geographic distribution is another impediment. If everyone in the meeting is not face to face, the communication might cease to be fully transparent.

Scrum Masters employ a variety of techniques to get honest and transparent feedback from the team. Below are a few:

  • Go around the table and ask 2 questions mentioned above.
  • Silent writing: In this, the team is asked to write down feedback about the current process and submit.
  • Satisfaction Histograms: Here the team given a survey of questions and asked to rate each on a satisfaction scale of 1 to 5.

In summary, the retrospective is a very good mechanism to keep the team agile and improve continuously. Scrum Master aims to get answers and compiles them into an actionable list. These are either put into the next sprint’s backlog or into the product backlog to be tackled later.

References:

  • Schwaber, K. (2004). Appendix A. In Agile project management with Scrum. Redmond, Wash.: Microsoft Press.
  • Agile Methodology. (2014, July 1). Retrieved September 10, 2014, from http://agilemethodology.org
Standard
Agile, Blog 2, CS 200W

The Agile Team and the backlog

The Agile Team and what is a Backlog? What are they for and why are they important?

This blog continues on the last week’s blog about introducing Agile to newcomers to the practice. The focus this week is on 2 things – The agile team and the artifacts that they work on, namely “backlogs”.

Agile Team

Agile team is a self contained team that can by itself complete a user story in the backlog. Let’s take the example of “Scrum” which is a popular Agile framework. In scrum, there could be dependencies with external teams. But it is up to the Scrum Master to resolve these dependencies. Otherwise, the team would flag such User Stories as having ‘impediments’ and move on to the next one.

Typically a Scrum team consists of the following roles

  • Scrum Master – Person who is in charge of the sprints
  • Product Owner – Person who represents the stakeholders
  • Team – Consists of different people who collectively have skills to complete tasks in the backlog.

Below is a short summary of responsibilities for each role.

Scrum Master:

  • Manages 1 sprint at a time
  • Facilitates Sprint Planning, Review & Retrospective
  • Finds and works to remove roadblocks
  • Helps to motivate the team and keep them excited
  • Protects team from outside distractions
  • Facilitates communication between roles for every aspect of the project
  • Responsible for keeping release/project information consolidated, organized and up to date
  • Drives the cross-functional team at all levels
  • Responsible for throughput
  • Drives the execution of sprint items

Product Owner:

  • Responsible for market, business case, and competitive analysis
  • Responsible for long and short term product vision
  • Responsible for ROI and Net Profit
  • Prioritizes features for releases based upon expected ROI
  • Writes Acceptance Criteria
  • Writes user stories
  • Makes tradeoff decisions between scope and schedule

Team:

  • Responsible for implementation of the backlog items as per the acceptance criteria
  • The team could contain people with specialized skills
    • Architect to define the design and ensure that best practices are followed.
    • Developers to develop and unit test the features
    • Quality engineers to test the features and ensure that they have been done as per the acceptance criteria
    • User Experience Designers to take care of the human interaction perspective
    • ..etc.

Backlog

The product backlog in Scrum is a list of features that are desired for a product at that point in time. Features are short descriptions of the functionality that is needed and these are prioritized. They could contain new features, bugs, technical debt..etc. Typically a team picks few features from the top of the list during ‘Sprint Grooming’ sessions. During ‘Sprint Planning’, the product owner shows up with the prioritized list and the team take these, estimates and locks the features that could be accomplished in a sprint (called ‘Sprint backlog’).

References

Standard
Agile, Blog 1, CS 200W

What is agile and what are user stories

Introduction

In the earlier days of the software industry, the process of developing software products mirrored engineering practices of the day. Like a bridge construction needed elaborate planning, design and construction, a software product went through a “waterfall” model of requirement definition, design, development, testing and release, with each phase occurring one after another.

But the cookie cutter approach failed for big software products which ended up creating products and systems that user didn’t have in mind or didn’t want anymore or became obsolete because the technology had changed. This is where Agile methodology comes into light.

What is Agile?

Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement and encourages rapid and flexible response to change. It is a conceptual framework that focuses on frequently delivering small increments of working software.

Short History

A small group of people got together in 2001 to discuss their feelings that the traditional approach to managing software development projects was failing far too often, and there had to be a better way.

They came up with the agile manifesto[1], which describes 4 important values that are as relevant today as they were then.  It says,

Agile Manifesto

We value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Though incremental practices have been in existence since late 1950’s[2], the ‘Agile Manifesto’ ushered in a new era of focus on lightweight-iterative development. The Agile Manifesto is based on twelve principles[3] :

Agile Principles

  1. Customer satisfaction by rapid delivery of useful software
  2. Welcome changing requirements, even late in development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Self-organizing teams
  12. Regular adaptation to changing circumstances

Agile development provides opportunities to assess the direction of the project and to evaluate the end product at very early stages. This is achieved through regular cadences of work, known as Sprints or iterations, at the end of which teams must present a potentially shippable product increment. At the beginning of every sprint, the team does a “Sprint Planning” session where it pulls requirements from the top of a “backlog”, estimates the effort and determines if they can be accomplished during the sprint or not. The requirements are in the form of “User Stories” which is a high level definition of a feature being built for an end user. We’ll talk about User Stories in detail in the next section.

User Stories

A user story is a short, simple statement of a requirement from the perspective of the end user of a system.

It typically follows this structure :

As a “type of user”, I want “some goal” so that “some reason”.

A user story is a very high-level definition of a requirement, containing just enough information so that the developers can produce a reasonable estimate of the effort to implement it. User stories are often written on index cards or sticky notes, stored in a shoe box, and arranged on walls or tables to facilitate planning and discussion. As such, they strongly shift the focus from writing about features to discussing them. In fact, these discussions are more important than whatever text is written.

Typically, if an index card is used, a user story might contain the following – User story summary (in the format mentioned above), priority and estimate on one side of the card and acceptance criteria on the other side.

All the user stories of a release are sorted in the order of priority in the “Release backlog”. Stories from the top of the pile are taken and a “Sprint backlog” is created for every sprint during the “Sprint Planning” meeting. At the end of every sprint, the team presents a potentially shippable product increment which is demoed during the “Sprint Review” at the end of the sprint. Details about the workflow of an Agile Sprint and related meetings would be the subject of another blog post.

Epics

Epics are large user stories, typically ones which are too big to implement in a single iteration and therefore they need to be dis-aggregated into smaller user stories at some point. Epics are typically lower priority user stories because once the epic works its way towards the top of the work item stack.

User Stories in the backlog

Screen Shot 2014-09-15 at 4.26.34 PM

figure 1[4]

Conclusion

We looked at how agile methodologies took shape, what agile is, a high level overview of the development life-cycle using agile and also looked in depth into one of key artifacts of agile – “User Stories” .

References :

  • [1] Beck, Kent; et al. (2001). “Manifesto for Agile Software Development”. Agile Alliance. Retrieved 14 June 2010.
  • [2] Gerald M. Weinberg, as quoted in Larman, Craig; Basili, Victor R. (June 2003). “Iterative and Incremental Development: A Brief History”.
  • [3] Beck, Kent; et al. (2001). “Principles behind the Agile Manifesto”. Agile Alliance. Archived from the original on 14 June 2010. Retrieved 6 June 2010.
  • [4] Ambler, S. (n.d.). User Stories: An Agile Introduction. Retrieved September 10, 2014, from http://www.agilemodeling.com/artifacts/userStory.htm
  • Scott, A., & Holitza, M. (2012). Agile for Dummies. John Wiley & Sons.
  • Agile Methodology. (2014, July 1). Retrieved September 10, 2014, from http://agilemethodology.org
Standard