Scenario Mockups - bounswe/bounswe2024group1 GitHub Wiki
Persona: |
---|
Name: John Wick |
Age: 25 years old |
Occupation: Junior Software Developer |
Region: New York, USA |
Context:
John is a junior developer working on a small project using Python. While coding, he encounters a performance issue with a specific algorithm and wonders whether another language might offer a more efficient implementation. He stumbles across the app, which offers a forum to ask questions and exchange information with other users, but he is not yet registered.
User Goals:
- John wants to ask for suggestions on implementing a more efficient version of his algorithm in another programming language.
Pre-conditions:
- John is not a registered user of the app.
- John has internet access and a basic understanding of programming.
Actions:
- John opens the system and searchs a question about algorithm efficiency in Python versus C++,he founds a related question with the tags of C++ and Python, then he realizes he know the answer and wants to post his answer, but is prompted to create an account.
- John clicks the "Sign Up" button and is taken to the account creation page.
- He enters his details (name, email, password) and completes the registration process.
- Once registered, John receives a welcome email confirming his account.
- John logs in and navigates back to the question.
- He posts his answer to the question: "Is there a way to improve the time complexity of my algorithm in Python, or should I rewrite it in C++?"
- A few hours later, John sees other users' answers for the same question. Other users suggest optimizing his Python code but also provide example code snippets in C++.
- John finds one answer particularly helpful and decides to follow that user for future answers.
- Over time, John continues participating in discussions, follows other experts, and builds a profile in the community.
Mockup
Persona: |
---|
Name: Sofia Martinez |
Age: 35 years old |
Occupation: Senior Software Engineer |
Expertise: C++ and System Programming |
Region: Madrid, Spain |
Context:
Sofia is a senior software engineer with over 10 years of experience in system programming, particularly using C++. She enjoys sharing her knowledge and expertise with the broader programming community. Sofia recently discovered the app, where users can answer questions, share insights, and earn reputation points based on the quality of their contributions. Sofia aims to gain more reputation by providing accurate and helpful answers in her area of expertise.
User Goals:
- Sofia wants to build her reputation by answering questions related to C++ and other programming topics.
- She aims to reach the top contributor status in the C++ community on the platform.
Pre-conditions:
- Sofia is a registered user of the system.
- Sofia has a complete user profile and understands how the reputation system works.
Actions:
- Sofia opens the system and heads straight to the search.
- She filters the search results to display questions tagged under "C++"
- Sofia spots a question from a user asking about the best way to manage memory in C++ using smart pointers.
- Sofia writes a detailed answer explaining the use of
std::unique_ptr
andstd::shared_ptr
, providing examples and best practices. - Within a few hours, Sofia’s answer is upvoted by several users, earning her reputation points.
- Later, Sofia tries to answer new questions about C++ best practices, debugging tips, and memory management. As she continues to answer these, building her reputation in the process.
Mockup
Persona: |
---|
Name: Alex Roberts |
Age: 20 years old |
Occupation: Computer Science Student |
Region: London, UK |
Context:
Alex is a computer science student who frequently uses the app for studying and researching different programming concepts. His professor, Dr. Jane Smith, is active on the platform, often answering complex questions related to functional programming and JavaScript optimization. Alex likes to follow Dr. Smith to stay updated on her insights, as her contributions often help him with his coursework.
User Goals:
- Alex wants to check the recent answers and upvotes his professor has received on the app.
- He plans to review Dr. Smith’s recent answers for helpful information related to his assignments.
Pre-conditions:
- Alex is a registered user of the app.
- Dr. Smith is a registered user of the app.
Actions:
- Alex logs into the system using his student email address.
- From the homepage, he searches for Dr. Smith.
- Alex clicks on Dr. Smith’s profile to view her latest answers and their upvote counts.
- Alex starts following Dr. Smith's profile.
- He notices that one of Dr. Smith’s answers on “Optimizing Recursion in JavaScript” has gained significant traction, with multiple upvotes and comments praising her explanation.
- Alex bookmarks the answer for later review, as it’s relevant to his current assignment on JavaScript recursion.
- He also upvotes Dr. Smith’s answer to show support and help boost her reputation on the platform.
- After reviewing her answers, Alex feels more confident in applying the techniques Dr. Smith shared and continues to follow her for future insights.
Mockup
Persona: |
---|
Name: Sarah Lee |
Age: 22 years old |
Occupation: Computer Science Student |
Region: Sydney, Australia |
Context:
Sarah is working on her programming languages homework, which requires her to explore and compare different functional programming languages. Her professor has asked her to explain the principles of functional programming and give examples of languages that follow this paradigm. To gather the required information, Sarah logs into the Programming Languages Browser app.
User Goals:
- Sarah wants to find a list of functional programming languages along with their key features and differences for her homework.
- She aims to learn more about languages like Haskell, Lisp, and others that follow the functional programming paradigm.
Pre-conditions:
- Sarah is a registered user of the app.
Actions:
- Sarah logs into the Programming Languages Browser system and goes to the Search section.
- She types “Functional Programming Languages” into the search bar.
- The app provides a list of functional programming languages, including Haskell, Lisp, Scala, Erlang, and OCaml.
- Sarah clicks on Haskell to view detailed information about the language.
- She also explores Lisp, by looking at the related questions & answers learning about its use of recursion, symbolic expression manipulation, and its historical significance as one of the earliest functional programming languages.
- Sarah takes notes on the differences between these languages, including how Haskell emphasizes pure functions while Lisp is known for its flexibility with macros.
- To deepen her understanding, Sarah visits the Questions section and finds discussions on how functional programming compares to object-oriented programming.
- Sarah reads expert answers to better understand how functional languages handle state management and concurrency.
- Satisfied with the information she’s gathered, Sarah saves the links of some questions & answers to her account for easy reference while completing her assignment.
- Finally, she logs out of the app, feeling confident that she now has enough material to finish her homework.
Persona: |
---|
Name: Mark Evans |
Age: 28 years old |
Occupation: Full-stack Developer |
Region: Berlin, Germany |
Context:
Mark is working on optimizing a piece of backend code for a web application that processes large data sets. While the code works, it runs slowly when handling high volumes of data. Mark suspects that there’s room for optimization, particularly with memory usage and processing speed, so he turns to the Programming Languages Browser app to ask for suggestions on how to optimize his code.
User Goals:
- Mark wants to receive suggestions on how to optimize his Python code for better performance.
- He aims to make his code more efficient, especially in terms of memory usage and speed when processing large data sets.
Pre-conditions:
- Mark is a registered user of the app.
- He has the code snippet ready to share with the community.
Actions:
- Mark logs into the system.
- He creates a new question with the title: "Need Help Optimizing Python Code for Large Data Processing."
- In his post, Mark provides a description of his code's purpose and the specific performance issues he’s facing. He also shares the relevant code snippet, highlighting the areas where he believes optimization might be needed (e.g., loop efficiency, memory usage, or data structure choice).
- Mark tags his post with "Python" to ensure it reaches the right audience.
- Within a couple of hours, Mark starts receiving answers from experienced programmers and Python experts.
- One user suggests switching from using regular lists to NumPy arrays to improve memory efficiency and processing speed.
- Another user provides advice on optimizing the nested loops in his code by using list comprehensions and generator functions to reduce memory overhead.
- A third user shares a benchmarking tool that Mark can use to measure the performance of his current code and track improvements.
- Mark upvotes the most helpful answers and thanks the users for their contributions.
- Encouraged by the support, Mark continues to engage in the community by answering other users’ questions on topics he’s knowledgeable about.