Lesson Monday

As you know, being a developer isn't just about coding. Sure, that's a huge portion of the job, but we'll also be required to collaborate with a team, possibly even work directly with clients, help identify and outline goals, manage deadlines, and re-assess project goals and features as deadlines near. In this lesson, we'll discuss an important "soft skill" that falls into this category: User stories.

The Importance of User Perspective

After your time at Epicodus, you'll begin a transition. Instead of making projects for yourself, and for your understanding of concepts we're learning, you'll begin to code projects for other people.

All software, applications, and programs have a user. Whether the program you're creating is a complex tool aimed to assist other developers, or a basic application meant to be accessible enough for anyone, all programs have an end-user. It's important to keep this end user in mind throughout the development process.

User Stories

One of the most common ways developers keep their users in mind is through user stories. User stories are short descriptions of features described from the perspective of the person who needs that new capability; usually a user, customer, or client. Before coding begins, we need to think about human behaviors and interaction with our application. Like generating plain English specs, creating user stories is a way to identify the purposes of our app in non-technical language.

Often it is the client or stakeholders, not the developers, that generate user stories as they identify what they want to see developed and why. The developer then determines how to accomplish the work. That is, how to "translate" these user stories from plain English into code.

Writing User Stories

User stories often use this sentence structure:

As a < type of user >, I want < some feature > so that < some reason >.

For our To Do List app, we are our own customers, so we will develop both our user stories and our application. Here is what some user stories for the To Do List might look like:

  • As a user, I want to see a welcome page with navigational links so that I can see where I can go and what I can do.
  • As a user, I want to see all of the lists that I have created so that I can manage them one at a time.
  • As a user, I want to create new lists of different categories so that I can keep similar tasks together (phone calls, school work, house work, errands to run, bills to pay, etc)
  • As a user, I want to select a single list and see the tasks for it so that I can see all the things I have to do in a particular category (phone calls, school work, house work, errands to run, bills to pay, etc).
  • As a user, I want to add tasks to a list so that I can record any new things I have to do.

Using these stories, we can begin to determine the final design of our views and how they will integrate with the code we have developed.

To become familiar with user stories, and to gain practice translating these "plain English" descriptions into the code necessary to create them in your program, we'll present many projects and assignments in a "user story" format from this point forward.

Additionally, when creating your own applications, we recommend you take a moment to list out the user stories that describe this application. As the end-user of this application, what features and capabilities would you want? How would you want to access them within the application? Before you know it, you'll have all kinds of clients and end-users waiting to utilize the applications you develop!