How do I interpret user needs and implement them into a program? How does creating "user stories" help with this?
A main facet of agile development is focusing on creating value for the customer. Most of this value is centered around the people who will ultimately be using the software being developed — the user. Features bring users to the application and provide value to the user's life in some way. One of the best ways of encapsulating these features at a high level is user stories. They are written from the users' perspective and focus on their experience. Encapsulating features centered around the user is both one of the easiest and most effective ways of creating a blueprint for a software application. They carry a low cognitive burden, speeding up requirements analysis in the development process. These user stories can then be ranked and organized by their importance and size. Large user stories can be broken down into multiple stories as needed. Conclusively, user stories are intuitive, quick, and easy to create, easily organized, and focused on the user experience and value created for the user, making them the most popular way to create requirements in modern software development.
How do I approach developing programs? What agile processes do I hope to incorporate into my future development work?
Before taking this class, when faced with an idea for a software application, I would first mentally modularize the program into separate features at a high level. Then, I would think about where I would get the data I needed for the program from. The first task would be to gather this data or at least enough of it to start writing some features and having data to test with it. The features would be mentally chosen starting with the main or most important feature of the application and working through the features by their level of importance. Often, I would get most of a feature done and then jump the next one and mostly finish that one, and probably jump around and put some finishing touches on features I have previously worked on as needed.
While that method worked for me for the relatively small projects I have worked on compared to typical production projects at a company, I have learned some new ways to make the development process more organized and efficient. First, in the requirements analysis process, using online tools or even a notebook to write down features as user stories will help greatly to organize my projects. I can then rank these user stories and break down large stories into multiple as needed. With all of this layed out, I will have clear direction in my development process. It would also help tremendously to stay organized if I'm working with other people, as we can discuss which user stories we are working on and how these features will interact with each other. Having a short daily meeting would also be a great way to stay up-to-date with each other.
To be a good team member in software development is to work with the bigger picture in mind: the success of the project as a whole. Fully understanding the direction and purpose of the project can help in making everyday decisions about how to implement features. Knowing what your role is as a team member in the success of the project is also crucial. Being able to effectively communicate your ideas and concerns and being able to listen and understand others' is also important. Effective collaboration is a trait of a good team member because much more can be accomplished as a team than as an individual. Bringing a positive attitude every day and being willing to help others goes a long way in fostering a great environment where teamwork can thrive. Technical competence and a passion for continuous learning also makes someone a great asset to a team. The ability to be humble and accountable allows one to learn from their mistakes and adapt to the rapidly changing software development process.