Case Studies

Identifying Code Presentation Challenges Regarding the Preparation and Presentation Delivery of Programming Projects Hindering Productivity and Presentation Performance to Inform the Potential Development of a Web and Desktop SaaS Product for Software Developers


Project Summary


To potentially develop a SaaS code presentation product for software developers, I aimed to uncover pain points that users found to be manually intensive, error-prone, knowledge-dependent, and cognitively demanding. Through my generative research study, I discovered four major problems software developers encounter when presenting code. These issues significantly impact their code presentation delivery performance and productivity when preparing and presenting their code projects. To tackle these problems, I developed four systems:


  1. A code grouping system to facilitate the preparation of organizing code for a presentation, saving hours of productivity.


  2. A note documentation system allowing developers to write presenter notes and document their code for presentation, helping them declutter their code from messy comments.


  3. A task automation system for automating common code presentation operations, thereby improving productivity.


  4. A presentation system for automating the presentation of code projects, eliminating typos, errors, and bugs, and enhancing code presentation performance and time efficiency. This enables developers to focus on delivering their presentations rather than getting bogged down by the manual and error-prone technical aspects of presenting code.


Project Summary


To potentially develop a SaaS code presentation product for software developers, I aimed to uncover pain points that users found to be manually intensive, error-prone, knowledge-dependent, and cognitively demanding. Through my generative research study, I discovered four major problems software developers encounter when presenting code. These issues significantly impact their code presentation delivery performance and productivity when preparing and presenting their code projects. To tackle these problems, I developed four systems:


  1. A code grouping system to facilitate the preparation of organizing code for a presentation, saving hours of productivity.


  2. A note documentation system allowing developers to write presenter notes and document their code for presentation, helping them declutter their code from messy comments.


  3. A task automation system for automating common code presentation operations, thereby improving productivity.


  4. A presentation system for automating the presentation of code projects, eliminating typos, errors, and bugs, and enhancing code presentation performance and time efficiency. This enables developers to focus on delivering their presentations rather than getting bogged down by the manual and error-prone technical aspects of presenting code.

Problem Statment

Developers face many challenges in preparing and presenting their code effectively, leading to reduced productivity and presentation quality. The manually intensive process of preparing their code for presentation, coupled with the lack of dedicated code presenter tools, results in time-consuming preparations leading developers to make fewer code presentations. Additionally, typing code during presentations causes frequent typos, errors, bugs, and disruptions, impacting the flow and quality of the presentation. The lack of presentation tools forces developers to use multiple tools and techniques fragmenting their presentation setup leading to multitasking and increasing the likelihood of errors and distractions during code presentations. These challenges not only consume substantial time and effort during code preparation but also impede presentation progress, diverting developers' focus from content delivery to grappling with code and presentation-related hurdles. In response to these issues, there is a pressing need to develop systems that streamline code preparation, enhance code readability, eliminate errors, and improve the overall presentation experience.


Key challenges according to the generative research study:

Problem Statment

Developers face many challenges in preparing and presenting their code effectively, leading to reduced productivity and presentation quality. The manually intensive process of preparing their code for presentation, coupled with the lack of dedicated code presenter tools, results in time-consuming preparations leading developers to make fewer code presentations. Additionally, typing code during presentations causes frequent typos, errors, bugs, and disruptions, impacting the flow and quality of the presentation. The lack of presentation tools forces developers to use multiple tools and techniques fragmenting their presentation setup leading to multitasking and increasing the likelihood of errors and distractions during code presentations. These challenges not only consume substantial time and effort during code preparation but also impede presentation progress, diverting developers' focus from content delivery to grappling with code and presentation-related hurdles. In response to these issues, there is a pressing need to develop systems that streamline code preparation, enhance code readability, eliminate errors, and improve the overall presentation experience.


Key challenges according to the generative research study:

  • Code is manually organized in preparation for a presentation using comments in Visual Studio Code (VSC)

    Annotations

    1.

    The code build order is set using comments (i.e. // 1, // 2). Comments are added using “//” turning the proceeding text dark green.

    Code Build Order & Setup is Manually Intensive

    Participants face challenges in preparing their code for presentation, such as manually setting the code presentation build order by writing comments to their code (Image: marker 1) or by using an external note tool. Setting the presentation code build order is time-consuming resulting in participants making shorter easier presentations and in some cases participants mentioned making fewer presentations due to the amount of work it takes to prepare their code.

  • Code in VSC annotated with notes.

    Annotations

    1.

    The reference code is annotated using code comments making the code hard to read when presenting the code.

    Presentation Notes And Code Readability Issues

    The lack of a dedicated presenter note tool leads developers to write comments directly into the code, making it more challenging to read and navigate the material when presenting their code. Other participants mentioned using external note tools for documenting their code.

  • VSC showing a compile-time error underlined in red. Compile-time errors are normally caused by syntax errors or semantic errors in the programming language's grammar.

    Annotations

    1.

    1. A code error is underlined in red for missing a colon in front of the “id” parameter.

    2.

    On the bottom is the console showing the problems preventing the code from building and running.

    Typing Code Leads To Errors and Bugs

    Participants make a lot of mistakes while typing and presenting code, disrupting the flow of their presentation and requiring time-consuming corrections during the presentation and in post-production. They struggle with cognitively demanding tasks like typing and explaining code during presentations, often misspeaking or mistyping resulting in errors, bugs, and warnings in their code impeding them from building and running their project ruining the flow of their presentation.

  • A multi-layout setup of source materials and tools for code presentations is often scattered on multiple monitors.

    Annotations

    1.

    The finished code project is often used as a reference when presenting code

    2.

    OBS software for recording the presentation

    3.

    The main code project that is being presented, often this is the main screen

    4.

    A script that is used as guidance when making a coding presentation

    Lack of Presentation Tools Leads to a Fragmented Setup

    The lack of proper presentation tools forces developers to split their setup and source material across multiple screens. This results in constant navigating between their notes, tools, and reference code increasing the potential for errors when presenting their code.

  • VSC editor.

    Annotations

    1.

    VSC file pane (left), console (bottom), and top search bar can be distracting when presenting code

    Presentation Accessibility Settings and UI Layout

    Some development tools lack accessibility features essential to presenting code, affecting the quality of the presentation. Some developers expressed a need for code presentation features and settings to improve code legibility and content clarity on different devices, for example, highlighting/emphasizing code, changing text size and fonts, and removing windows, media, and content for a clean layout. Participants expressed that a clean UI layout and easy-to-read code are essential to prevent distractions during code presentations.

  • Code is manually organized in preparation for a presentation using comments in Visual Studio Code (VSC)

    Annotations

    1.

    The code build order is set using comments (i.e. // 1, // 2). Comments are added using “//” turning the proceeding text dark green.

    Code Build Order & Setup is Manually Intensive

    Participants face challenges in preparing their code for presentation, such as manually setting the code presentation build order by writing comments to their code (Image: marker 1) or by using an external note tool. Setting the presentation code build order is time-consuming resulting in participants making shorter easier presentations and in some cases participants mentioned making fewer presentations due to the amount of work it takes to prepare their code.

  • Code in VSC annotated with notes.

    Annotations

    1.

    The reference code is annotated using code comments making the code hard to read when presenting the code.

    Presentation Notes And Code Readability Issues

    The lack of a dedicated presenter note tool leads developers to write comments directly into the code, making it more challenging to read and navigate the material when presenting their code. Other participants mentioned using external note tools for documenting their code.

  • VSC showing a compile-time error underlined in red. Compile-time errors are normally caused by syntax errors or semantic errors in the programming language's grammar.

    Annotations

    1.

    1. A code error is underlined in red for missing a colon in front of the “id” parameter.

    2.

    On the bottom is the console showing the problems preventing the code from building and running.

    Typing Code Leads To Errors and Bugs

    Participants make a lot of mistakes while typing and presenting code, disrupting the flow of their presentation and requiring time-consuming corrections during the presentation and in post-production. They struggle with cognitively demanding tasks like typing and explaining code during presentations, often misspeaking or mistyping resulting in errors, bugs, and warnings in their code impeding them from building and running their project ruining the flow of their presentation.

  • A multi-layout setup of source materials and tools for code presentations is often scattered on multiple monitors.

    Annotations

    1.

    The finished code project is often used as a reference when presenting code

    2.

    OBS software for recording the presentation

    3.

    The main code project that is being presented, often this is the main screen

    4.

    A script that is used as guidance when making a coding presentation

    Lack of Presentation Tools Leads to a Fragmented Setup

    The lack of proper presentation tools forces developers to split their setup and source material across multiple screens. This results in constant navigating between their notes, tools, and reference code increasing the potential for errors when presenting their code.

  • VSC editor.

    Annotations

    1.

    VSC file pane (left), console (bottom), and top search bar can be distracting when presenting code

    Presentation Accessibility Settings and UI Layout

    Some development tools lack accessibility features essential to presenting code, affecting the quality of the presentation. Some developers expressed a need for code presentation features and settings to improve code legibility and content clarity on different devices, for example, highlighting/emphasizing code, changing text size and fonts, and removing windows, media, and content for a clean layout. Participants expressed that a clean UI layout and easy-to-read code are essential to prevent distractions during code presentations.

  • Code is manually organized in preparation for a presentation using comments in Visual Studio Code (VSC)

    Annotations

    1.

    The code build order is set using comments (i.e. // 1, // 2). Comments are added using “//” turning the proceeding text dark green.

    Code Build Order & Setup is Manually Intensive

    Participants face challenges in preparing their code for presentation, such as manually setting the code presentation build order by writing comments to their code (Image: marker 1) or by using an external note tool. Setting the presentation code build order is time-consuming resulting in participants making shorter easier presentations and in some cases participants mentioned making fewer presentations due to the amount of work it takes to prepare their code.

  • Code in VSC annotated with notes.

    Annotations

    1.

    The reference code is annotated using code comments making the code hard to read when presenting the code.

    Presentation Notes And Code Readability Issues

    The lack of a dedicated presenter note tool leads developers to write comments directly into the code, making it more challenging to read and navigate the material when presenting their code. Other participants mentioned using external note tools for documenting their code.

  • VSC showing a compile-time error underlined in red. Compile-time errors are normally caused by syntax errors or semantic errors in the programming language's grammar.

    Annotations

    1.

    1. A code error is underlined in red for missing a colon in front of the “id” parameter.

    2.

    On the bottom is the console showing the problems preventing the code from building and running.

    Typing Code Leads To Errors and Bugs

    Participants make a lot of mistakes while typing and presenting code, disrupting the flow of their presentation and requiring time-consuming corrections during the presentation and in post-production. They struggle with cognitively demanding tasks like typing and explaining code during presentations, often misspeaking or mistyping resulting in errors, bugs, and warnings in their code impeding them from building and running their project ruining the flow of their presentation.

  • A multi-layout setup of source materials and tools for code presentations is often scattered on multiple monitors.

    Annotations

    1.

    The finished code project is often used as a reference when presenting code

    2.

    OBS software for recording the presentation

    3.

    The main code project that is being presented, often this is the main screen

    4.

    A script that is used as guidance when making a coding presentation

    Lack of Presentation Tools Leads to a Fragmented Setup

    The lack of proper presentation tools forces developers to split their setup and source material across multiple screens. This results in constant navigating between their notes, tools, and reference code increasing the potential for errors when presenting their code.

  • VSC editor.

    Annotations

    1.

    VSC file pane (left), console (bottom), and top search bar can be distracting when presenting code

    Presentation Accessibility Settings and UI Layout

    Some development tools lack accessibility features essential to presenting code, affecting the quality of the presentation. Some developers expressed a need for code presentation features and settings to improve code legibility and content clarity on different devices, for example, highlighting/emphasizing code, changing text size and fonts, and removing windows, media, and content for a clean layout. Participants expressed that a clean UI layout and easy-to-read code are essential to prevent distractions during code presentations.

Read More - Problem Statement Document

Read More - Problem Statement Document


Targeted Demographic


Facilitating code presentation preparation and presentation for software developers


The targeted demographic for the case study is software developers who showcase and prepare programming projects with the purpose of:

  • Creating educational and informative programming tutorials


  • Showcasing informational slide show presentation


  • Conduct informative live

    programming demos



Market Opportunities

With the evolution of the digital landscape and various platforms, more opportunities and methods have emerged for learning and teaching software development. For example:


Targeted Demographic


Facilitating code presentation preparation and presentation for software developers


The targeted demographic for the case study is software developers who showcase and prepare programming projects with the purpose of:

  • Creating educational and informative programming tutorials


  • Showcasing informational slide show presentation


  • Conduct informative live

    programming demos



Market Opportunities

With the evolution of the digital landscape and various platforms, more opportunities and methods have emerged for learning and teaching software development. For example:

  • CS50x 2024 - Lecture 1 - C

    University professors conducting a live coding lecture

    Professor David Jay Malan's step-by-step in-depth lecture on teaching students about the C programming language.

  • SwiftUI Firebase Chat 06: Fetch Current User Firestore

    Content creators producing educational programming tutorials

    Brian Voong’s programming tutorial where he systematically writes, shows, and explains code to his audience for educational purposes.

  • Developer Keynote (Google I/O '23)

    Developers showcasing a tech demo at a software development conference

    Google's software developer showcasing code demonstrations and features during the Developer Keynote at Google I/O. These presentations often highlight the latest innovations and technologies, providing valuable insights for developers and enthusiasts alike.

  • CS50x 2024 - Lecture 1 - C

    University professors conducting a live coding lecture

    Professor David Jay Malan's step-by-step in-depth lecture on teaching students about the C programming language.

  • SwiftUI Firebase Chat 06: Fetch Current User Firestore

    Content creators producing educational programming tutorials

    Brian Voong’s programming tutorial where he systematically writes, shows, and explains code to his audience for educational purposes.

  • Developer Keynote (Google I/O '23)

    Developers showcasing a tech demo at a software development conference

    Google's software developer showcasing code demonstrations and features during the Developer Keynote at Google I/O. These presentations often highlight the latest innovations and technologies, providing valuable insights for developers and enthusiasts alike.

  • CS50x 2024 - Lecture 1 - C

    University professors conducting a live coding lecture

    Professor David Jay Malan's step-by-step in-depth lecture on teaching students about the C programming language.

  • SwiftUI Firebase Chat 06: Fetch Current User Firestore

    Content creators producing educational programming tutorials

    Brian Voong’s programming tutorial where he systematically writes, shows, and explains code to his audience for educational purposes.

  • Developer Keynote (Google I/O '23)

    Developers showcasing a tech demo at a software development conference

    Google's software developer showcasing code demonstrations and features during the Developer Keynote at Google I/O. These presentations often highlight the latest innovations and technologies, providing valuable insights for developers and enthusiasts alike.


My Roles and User-Centered Design Process

The case study was a solo project that led me to take on multiple roles from user experience research to UX interaction, and UI design.


My Roles and User-Centered Design Process

The case study was a solo project that led me to take on multiple roles from user experience research to UX interaction, and UI design.

Debbie Levitt’s Delta CX user-centered design process.

Debbie Levitt’s Delta CX user-centered design process.


User Experience Research (UXR)

  • Problem Discovery: Secondary observational online research leads to discovering code presentation pain points, questions, and assumptions.


  • Knowledge Quadrant: Gathered 29 assumptions and questions for the research plan.


  • Research Plan: Devised a research plan outlining objectives, questions, scope, methodology, timeline, resource allocation, risk assessment, data analysis plan, and findings.


  • User Interview Plan: Defined the methodology, questions, and general structure for the user interview.


  • Screener Survey: Developed a 10-question screener survey for filtering targeted candidates according to the user interview plan.


  • User Interview: Conducted an open-ended generative interview, answering questions from the research plan and gathering findings and insights from 8 participants.


  • Competitive Analysis: Analyzed 3 products to evaluate strengths and weaknesses and areas of discontent in the code presentation market.


  • Affinity Diagram: Synthesized the user interview resulting in 14 clusters of data reflecting patterns in error-prone tasks, code setup, note documentation, and many more.


  • Task Analysis & Optimized Task Analysis: Analyzed the user research, competitive analysis, and affinity diagram to generate findings, insights, and systems.


  • Problem Statement: Documented the main challenges and pain points in the study according to the user research findings.


  • Research Report: Documented insights and findings gained from the user interview, affinity diagram, and task analysis, providing actionable recommendations to improve key issues.


Interaction Design (UX)

  • Sketches: Used the research insights and artifacts to brainstorm and sketch systems that target the common pain points of participants.


  • Wireframing: Converted the sketches into medium-fidelity designs, outlining the product's structure, layout, and functionality.


  • Conceptual Prototype: Due to the complexity of prototyping software development features, I crafted a simplified, conceptual representation of Prescode showcasing its four major systems: snippet, note, action, and presentation tool.


User Interface Design (UI)

  • High-Fidelity Design: Refined the wireframes, creating a polished high-fidelity user interface design in preparation for the conceptual prototype.


  • Design System: Created the design system to define rules, guidelines, and branding, ensuring consistency and efficiency in developing user interfaces.



Scope and Constraints


No budget and Research Difficulties

As a solo project, most of the roles and responsibilities relied on my ability to perform user research, UX, and UI. The absence of stakeholder collaboration hindered the opportunity to seek feedback and improvements on processes and artifact details that I may have overlooked. I had no budget for this project, therefore I made a great effort to use multiple mediums to reach out to my targeted demographic for participation in the user research which proved to be extremely challenging due to the lack of volunteers forcing me to spend a lot more time on recruiting than expected and forcing me to settle with 8 participants instead of the targeted 24.


User Experience Research (UXR)

  • Problem Discovery: Secondary observational online research leads to discovering code presentation pain points, questions, and assumptions.


  • Knowledge Quadrant: Gathered 29 assumptions and questions for the research plan.


  • Research Plan: Devised a research plan outlining objectives, questions, scope, methodology, timeline, resource allocation, risk assessment, data analysis plan, and findings.


  • User Interview Plan: Defined the methodology, questions, and general structure for the user interview.


  • Screener Survey: Developed a 10-question screener survey for filtering targeted candidates according to the user interview plan.


  • User Interview: Conducted an open-ended generative interview, answering questions from the research plan and gathering findings and insights from 8 participants.


  • Competitive Analysis: Analyzed 3 products to evaluate strengths and weaknesses and areas of discontent in the code presentation market.


  • Affinity Diagram: Synthesized the user interview resulting in 14 clusters of data reflecting patterns in error-prone tasks, code setup, note documentation, and many more.


  • Task Analysis & Optimized Task Analysis: Analyzed the user research, competitive analysis, and affinity diagram to generate findings, insights, and systems.


  • Problem Statement: Documented the main challenges and pain points in the study according to the user research findings.


  • Research Report: Documented insights and findings gained from the user interview, affinity diagram, and task analysis, providing actionable recommendations to improve key issues.


Interaction Design (UX)

  • Sketches: Used the research insights and artifacts to brainstorm and sketch systems that target the common pain points of participants.


  • Wireframing: Converted the sketches into medium-fidelity designs, outlining the product's structure, layout, and functionality.


  • Conceptual Prototype: Due to the complexity of prototyping software development features, I crafted a simplified, conceptual representation of Prescode showcasing its four major systems: snippet, note, action, and presentation tool.


User Interface Design (UI)

  • High-Fidelity Design: Refined the wireframes, creating a polished high-fidelity user interface design in preparation for the conceptual prototype.


  • Design System: Created the design system to define rules, guidelines, and branding, ensuring consistency and efficiency in developing user interfaces.



Scope and Constraints


No budget and Research Difficulties

As a solo project, most of the roles and responsibilities relied on my ability to perform user research, UX, and UI. The absence of stakeholder collaboration hindered the opportunity to seek feedback and improvements on processes and artifact details that I may have overlooked. I had no budget for this project, therefore I made a great effort to use multiple mediums to reach out to my targeted demographic for participation in the user research which proved to be extremely challenging due to the lack of volunteers forcing me to spend a lot more time on recruiting than expected and forcing me to settle with 8 participants instead of the targeted 24.

User Experience Research (UXR)

User Experience Research (UXR)

Problem Discovery


Secondary research leads to assumptions and questions and eventually inspires generative research exploring developers’ needs for a SaaS solution identifying and addressing code presentation challenges.


As an active programmer, I consume a lot of programming-related content. The outcome of my anecdotal non-scientific experiences of watching code presentations, and tutorials resulted in me discovering problems regarding the tasks, tools, and processes encountered by developers when presenting their programming projects. From my observations, I noticed that developers encounter the following challenges:

Problem Discovery


Secondary research leads to assumptions and questions and eventually inspires generative research exploring developers’ needs for a SaaS solution identifying and addressing code presentation challenges.


As an active programmer, I consume a lot of programming-related content. The outcome of my anecdotal non-scientific experiences of watching code presentations, and tutorials resulted in me discovering problems regarding the tasks, tools, and processes encountered by developers when presenting their programming projects. From my observations, I noticed that developers encounter the following challenges:

  • Single Codebase, Two Apps with Flutter and Firebase (Google I/O '17)

    Typing code generates typos leading to bugs and errors disrupting the flow of the presentation to fix their mistakes

    During a tech demo, the Google developer made a typo mistake on line 187 at minute 17:36, resulting in an error at minute 18:01 that prevented the code from running, thus disrupting her presentation.

  • Subscribing to Observables Part 1 - Beginning RxSwift with iOS 11, Swift 4, and Xcode 9

    Typing code is time-consuming, resulting in longer videos and diverting attention from the source material

    In the video, the instructor encounters challenges while typing blocks of code, with occasional pauses during typing (time 0:40), which contributes to longer video durations.

  • Composition Over Inheritance - Beginning iOS Design Patterns - raywenderlich.com

    Developers resort to coping and pasting chunks of code to avoid typing code and save time

    The instructor copies and pastes the code from another file to his working file to save time and avoid typing the code (minute 9:54). Coping and pasting blocks of code may lead to confusing and overwhelming the audience with the new code introduced.

  • Single Codebase, Two Apps with Flutter and Firebase (Google I/O '17)

    Typing code generates typos leading to bugs and errors disrupting the flow of the presentation to fix their mistakes

    During a tech demo, the Google developer made a typo mistake on line 187 at minute 17:36, resulting in an error at minute 18:01 that prevented the code from running, thus disrupting her presentation.

  • Subscribing to Observables Part 1 - Beginning RxSwift with iOS 11, Swift 4, and Xcode 9

    Typing code is time-consuming, resulting in longer videos and diverting attention from the source material

    In the video, the instructor encounters challenges while typing blocks of code, with occasional pauses during typing (time 0:40), which contributes to longer video durations.

  • Composition Over Inheritance - Beginning iOS Design Patterns - raywenderlich.com

    Developers resort to coping and pasting chunks of code to avoid typing code and save time

    The instructor copies and pastes the code from another file to his working file to save time and avoid typing the code (minute 9:54). Coping and pasting blocks of code may lead to confusing and overwhelming the audience with the new code introduced.

  • Single Codebase, Two Apps with Flutter and Firebase (Google I/O '17)

    Typing code generates typos leading to bugs and errors disrupting the flow of the presentation to fix their mistakes

    During a tech demo, the Google developer made a typo mistake on line 187 at minute 17:36, resulting in an error at minute 18:01 that prevented the code from running, thus disrupting her presentation.

  • Subscribing to Observables Part 1 - Beginning RxSwift with iOS 11, Swift 4, and Xcode 9

    Typing code is time-consuming, resulting in longer videos and diverting attention from the source material

    In the video, the instructor encounters challenges while typing blocks of code, with occasional pauses during typing (time 0:40), which contributes to longer video durations.

  • Composition Over Inheritance - Beginning iOS Design Patterns - raywenderlich.com

    Developers resort to coping and pasting chunks of code to avoid typing code and save time

    The instructor copies and pastes the code from another file to his working file to save time and avoid typing the code (minute 9:54). Coping and pasting blocks of code may lead to confusing and overwhelming the audience with the new code introduced.

Quotes

I've always really wanted to be like one of the people who can do live coding. But I just can't I'm like a really really slow typer and I make such typing mistakes and I get very very nervous… sometimes the best way to communicate about code is to show the code

A headshot picture of Jani Eväkallio

Jani Eväkallio. (2018). Writing Code like a Real Hacker (VS Code Macro Extension) Retrieved from https://www.youtube.com/watch?v=rO8-cgtkZSw

I've always really wanted to be like one of the people who can do live coding. But I just can't I'm like a really really slow typer and I make such typing mistakes and I get very very nervous… sometimes the best way to communicate about code is to show the code

A headshot picture of Jani Eväkallio

Jani Eväkallio. (2018). Writing Code like a Real Hacker (VS Code Macro Extension) Retrieved from https://www.youtube.com/watch?v=rO8-cgtkZSw

I used to take screenshots of code snippets to include them in my presentations. That was very impractical. If I wanted to make changes to the code, I’d have to rewrite it, take a screenshot again, and copy-paste it into Keynote once again. That soon became tiring and highly ineffective

A headshot picture of Sara Soueidan

Sara Soueidan. (2021). A couple of ways to highlight code syntax in Apple Keynote slides. Retrieved from https://www.sarasoueidan.com/blog/copy-paste-from-vscode-to-keynote/

I used to take screenshots of code snippets to include them in my presentations. That was very impractical. If I wanted to make changes to the code, I’d have to rewrite it, take a screenshot again, and copy-paste it into Keynote once again. That soon became tiring and highly ineffective

A headshot picture of Sara Soueidan

Sara Soueidan. (2021). A couple of ways to highlight code syntax in Apple Keynote slides. Retrieved from https://www.sarasoueidan.com/blog/copy-paste-from-vscode-to-keynote/

Sharing good quality code that is visual that is clear that people can see is super super super super important and sometimes when we are watching a presentation and we don't get to see the code we just close it and move on so all the work you put in your presentation just goes to the drain when the audience cannot see what you're presenting

A headshot picture of Marcia Villalba

Marcia Villalba (2021). How to present code. Retrieved from https://www.youtube.com/watch?v=8B6p2_QCzTU&t=212s

Sharing good quality code that is visual that is clear that people can see is super super super super important and sometimes when we are watching a presentation and we don't get to see the code we just close it and move on so all the work you put in your presentation just goes to the drain when the audience cannot see what you're presenting

A headshot picture of Marcia Villalba

Marcia Villalba (2021). How to present code. Retrieved from https://www.youtube.com/watch?v=8B6p2_QCzTU&t=212s

These insights sparked my curiosity, prompting me to explore more questions and assumptions through the knowledge quadrant exercise.

These insights sparked my curiosity, prompting me to explore more questions and assumptions through the knowledge quadrant exercise.

Sources

Sources

Knowledge Quadrant


Identifying 29 risky assumptions, guesses, unknowns, and questions regarding code presentations from the secondary research to pursue answers in the research plan.

Knowledge Quadrant


Identifying 29 risky assumptions, guesses, unknowns, and questions regarding code presentations from the secondary research to pursue answers in the research plan.

The knowledge quadrant exercise shows 4 groups of guesses, assumptions, and questions in preparation for the research plan. Each card is tagged with its corresponding research method. The tag “User-Centered Design” (UCD) is a general term I use to describe a user-centered research method.

The knowledge quadrant exercise shows 4 groups of guesses, assumptions, and questions in preparation for the research plan. Each card is tagged with its corresponding research method. The tag “User-Centered Design” (UCD) is a general term I use to describe a user-centered research method.

My secondary research left me with many unanswered questions, and assumptions about the behaviors and challenges developers encounter when making presentation tutorials. I used the knowledge quadrant framework to list all concerns and assumptions early on, which helped in generating questions for the research plan.

My secondary research left me with many unanswered questions, and assumptions about the behaviors and challenges developers encounter when making presentation tutorials. I used the knowledge quadrant framework to list all concerns and assumptions early on, which helped in generating questions for the research plan.

A list of important questions from the knowledge quadrant that I want to validate/invalidate in the research study.

A list of important questions from the knowledge quadrant that I want to validate/invalidate in the research study.

The result of creating the knowledge quadrant was Identifying 29 risky assumptions, guesses, unknowns, and questions regarding code presentations that needed to be addressed in the research study. Here are some of the main questions and assumptions I would like to answer in this study:


  • How do typing errors and bugs impact the overall quality of code presentations?


  • How do developers currently handle presentation notes, and what improvements are desired in this aspect?


  • What specific challenges do software developers face in preparing and presenting their code?


  • What tools do developers use to help them prepare and present their code?


After defining the knowledge quadrant and getting a general idea of what I wanted to research, I started to work on the research plan.

The result of creating the knowledge quadrant was Identifying 29 risky assumptions, guesses, unknowns, and questions regarding code presentations that needed to be addressed in the research study. Here are some of the main questions and assumptions I would like to answer in this study:


  • How do typing errors and bugs impact the overall quality of code presentations?


  • How do developers currently handle presentation notes, and what improvements are desired in this aspect?


  • What specific challenges do software developers face in preparing and presenting their code?


  • What tools do developers use to help them prepare and present their code?


After defining the knowledge quadrant and getting a general idea of what I wanted to research, I started to work on the research plan.

Research Plan


Devised a research plan outlining objectives, scope, methodology, timeline, resource allocation, data analysis plan, and findings, providing a structured framework to keep me organized and focused throughout the research process.

Research Plan


Devised a research plan outlining objectives, scope, methodology, timeline, resource allocation, data analysis plan, and findings, providing a structured framework to keep me organized and focused throughout the research process.

Illustration of a User Experience Research (UXR) plan outlining some of the methods included in the plan.

Illustration of a User Experience Research (UXR) plan outlining some of the methods included in the plan.

Before conducting the research, I needed to create a research plan to define a roadmap for the research project. The research plan is important because it outlines the goals, questions assumptions, project overview, scope, methodologies, and essential components of a research study. It provides a structured framework to keep my research organized and focused. The result was a structured document used for guidance when working on my research methods. Throughout the research, the document was constantly updated to reflect the most recent findings. Based on my goals, time limitations, and recruitment challenges, I decided to use competitive analysis and user interviews as my main research methods. I initially wanted to conduct remote contextual inquiries as I thought it was a more appropriate method to observe users’ tasks, behaviors and understand how they interact with products or systems, and capture detailed workflow information of their process of preparing and presenting programming presentations however, I found it a massive ask considering the work and time investment participant would have to commit for an uncompensated research study. After finishing the research plan, I started working on the interview plan in preparation for the user interview.

Before conducting the research, I needed to create a research plan to define a roadmap for the research project. The research plan is important because it outlines the goals, questions assumptions, project overview, scope, methodologies, and essential components of a research study. It provides a structured framework to keep my research organized and focused. The result was a structured document used for guidance when working on my research methods. Throughout the research, the document was constantly updated to reflect the most recent findings. Based on my goals, time limitations, and recruitment challenges, I decided to use competitive analysis and user interviews as my main research methods. I initially wanted to conduct remote contextual inquiries as I thought it was a more appropriate method to observe users’ tasks, behaviors and understand how they interact with products or systems, and capture detailed workflow information of their process of preparing and presenting programming presentations however, I found it a massive ask considering the work and time investment participant would have to commit for an uncompensated research study. After finishing the research plan, I started working on the interview plan in preparation for the user interview.

Read More - Research Plan Document

Read More - Research Plan Document

User Interview


Created a user interview plan and screener survey to conduct a semi-structured open-ended user interview collecting qualitative data from 8 participants, to understand user experiences, needs, preferences, and behaviors, yielding insights on code setup, note-taking, and planning.

User Interview


Created a user interview plan and screener survey to conduct a semi-structured open-ended user interview collecting qualitative data from 8 participants, to understand user experiences, needs, preferences, and behaviors, yielding insights on code setup, note-taking, and planning.

User interview database showing 5 of 24 questions for Participant 1, themed and tagged accordingly.

User interview database showing 5 of 24 questions for Participant 1, themed and tagged accordingly.

After defining the user interview plan and screener survey, I conducted a semi-structured open-ended remote user interview to understand user needs, gain insights, validate/invalidate assumptions, inform design decisions, and answer research questions. To prepare, I first worked on a user interview plan to help me outline the methodology for conducting user interviews. Then I worked on the research screener survey to identify and select individuals who meet specific standards.

After defining the user interview plan and screener survey, I conducted a semi-structured open-ended remote user interview to understand user needs, gain insights, validate/invalidate assumptions, inform design decisions, and answer research questions. To prepare, I first worked on a user interview plan to help me outline the methodology for conducting user interviews. Then I worked on the research screener survey to identify and select individuals who meet specific standards.

User Interview Process Overview.

User Interview Process Overview.

User interview Process

User interview Process

  1. Read More - User Interview Plan

  1. Read More - User Interview Plan

  1. Read More - Screener Survey

  1. Read More - Screener Survey

From the interviews, I collected over 256 responses from 8 participants, gathering insights and findings on various aspects including:

  • Information about how developers prepare their code for a presentation

  • Code presentation tasks, processes, and tools

  • Tools and tasks regarding note-taking and code documentation

  • Source code size and complexity impacting project preparation

  • Error-prone tasks and bugs when presenting code

  • Cognitively demanding tasks like typing and explaining code at the same time

  • Testing, building, and running code projects

  • Tools and desired features for presenting and preparing code

From the interviews, I collected over 256 responses from 8 participants, gathering insights and findings on various aspects including:

  • Information about how developers prepare their code for a presentation

  • Code presentation tasks, processes, and tools

  • Tools and tasks regarding note-taking and code documentation

  • Source code size and complexity impacting project preparation

  • Error-prone tasks and bugs when presenting code

  • Cognitively demanding tasks like typing and explaining code at the same time

  • Testing, building, and running code projects

  • Tools and desired features for presenting and preparing code

Pie charts illustrating three key insights from the user interviews.

Pie charts illustrating three key insights from the user interviews.

Here is a list of some key insights from the interview:

  • Code Build Order and Setup: 7 of 8 participants organize/document their code to prepare for a presentation. However, many of them complain that this manual process is time-intensive, leading to making fewer presentation projects as desired or preferring to make smaller presentation projects with less code.


  • Typing Code: 8 of 8 participants experienced frustration while typing code, leading to errors and typos during project presentations. To avoid typing code, participants resorted to alternative methods such as copying and pasting pre-written code and using After Effects or Keynote to manage the code presentation typing process.


  • Notes and Documentation: 6 of 8 participants take notes to help them present their code presentation projects. Some write scripts, and documentation on their preferred note software while others write notes on their code making the code hard to read when presenting.


Another interesting insight was that participants used multiple tools for accomplishing different code-related tasks mainly because the current tools in the market weren’t suitable for their code-specific use cases for example, not being able to build and run their code in real-time to demonstrate a working demo during a presentation. Most participants were unaware of code-specific presentation tools and relied on tools they were already familiar with.

Here is a list of some key insights from the interview:

  • Code Build Order and Setup: 7 of 8 participants organize/document their code to prepare for a presentation. However, many of them complain that this manual process is time-intensive, leading to making fewer presentation projects as desired or preferring to make smaller presentation projects with less code.


  • Typing Code: 8 of 8 participants experienced frustration while typing code, leading to errors and typos during project presentations. To avoid typing code, participants resorted to alternative methods such as copying and pasting pre-written code and using After Effects or Keynote to manage the code presentation typing process.


  • Notes and Documentation: 6 of 8 participants take notes to help them present their code presentation projects. Some write scripts, and documentation on their preferred note software while others write notes on their code making the code hard to read when presenting.


Another interesting insight was that participants used multiple tools for accomplishing different code-related tasks mainly because the current tools in the market weren’t suitable for their code-specific use cases for example, not being able to build and run their code in real-time to demonstrate a working demo during a presentation. Most participants were unaware of code-specific presentation tools and relied on tools they were already familiar with.

Competitive Analysis


Conducted hands-on testing and feature comparison on 3 competitor products within the presentation market, evaluating their strengths and weaknesses, generating artifacts and insights informing and influencing UI features, sketches, and wireframes.

Competitive Analysis


Conducted hands-on testing and feature comparison on 3 competitor products within the presentation market, evaluating their strengths and weaknesses, generating artifacts and insights informing and influencing UI features, sketches, and wireframes.

Keynote, Animotion, and HackerTyper are 3 competing products within the presentation market.

Keynote, Animotion, and HackerTyper are 3 competing products within the presentation market.

After conducting user interviews and gaining an understanding of user needs and preferences, I moved to the competitive analysis. The Insights from the user interviews provided valuable context for conducting a meaningful competitive analysis. Understanding user perspectives, pain points, and expectations helped in evaluating competitors' features from a user-centric perspective rather than just a feature comparison. I used insights from the interviews to create tasks for evaluating three competing products: Keynote, Animotion, and HackerTyper. The goal is to answer some of the questions and assumptions related to presentation tools listed in the knowledge quadrant exercises and research plan; gain a deep understanding of the code presentation market landscape and identify potential gaps or areas for improvement. This involved hands-on testing and feature comparison to evaluate the strengths and weaknesses of competitor products. I also delved into user feedback to extract valuable insights into user expectations and areas of discontent informing strategic decision-making by identifying improvements, and opportunities within the code presentation tool market.


One major hurdle was mastering code-oriented knowledge-dependent tools such as Animotion and HackerTyper, both of which presented a steep learning curve. Fortunately, my programming experience helped me use these tools effectively.


The biggest takeaways were the following:

After conducting user interviews and gaining an understanding of user needs and preferences, I moved to the competitive analysis. The Insights from the user interviews provided valuable context for conducting a meaningful competitive analysis. Understanding user perspectives, pain points, and expectations helped in evaluating competitors' features from a user-centric perspective rather than just a feature comparison. I used insights from the interviews to create tasks for evaluating three competing products: Keynote, Animotion, and HackerTyper. The goal is to answer some of the questions and assumptions related to presentation tools listed in the knowledge quadrant exercises and research plan; gain a deep understanding of the code presentation market landscape and identify potential gaps or areas for improvement. This involved hands-on testing and feature comparison to evaluate the strengths and weaknesses of competitor products. I also delved into user feedback to extract valuable insights into user expectations and areas of discontent informing strategic decision-making by identifying improvements, and opportunities within the code presentation tool market.


One major hurdle was mastering code-oriented knowledge-dependent tools such as Animotion and HackerTyper, both of which presented a steep learning curve. Fortunately, my programming experience helped me use these tools effectively.


The biggest takeaways were the following:

Competitive analysis database of Keynote, Animotion, and HackerTyper.

Competitive analysis database of Keynote, Animotion, and HackerTyper.

Competitive Analysis Chart

I gathered information from Keynote, Animotion, and HackerTyper about the market, download metrics, and revenue streams to inform product features and UX considerations. I noticed that the tools have varied features catering to their targeted demographics. For example, Keynote has many great features for presenting slide decks but lacks code features like syntax highlighting, formatting, and other advanced systems. Animotion offers numerous programming abilities for presentations; however, you cannot build and run your project, making it less ideal for live programming. Lastly, HackerTyper allows you to run and test your code but lacks major presentation features and is not user-friendly.

Competitive Analysis Chart

I gathered information from Keynote, Animotion, and HackerTyper about the market, download metrics, and revenue streams to inform product features and UX considerations. I noticed that the tools have varied features catering to their targeted demographics. For example, Keynote has many great features for presenting slide decks but lacks code features like syntax highlighting, formatting, and other advanced systems. Animotion offers numerous programming abilities for presentations; however, you cannot build and run your project, making it less ideal for live programming. Lastly, HackerTyper allows you to run and test your code but lacks major presentation features and is not user-friendly.

Hands-on research task analysis of Keynote(top left), HackerTyper(top right), Animotion(bottom left), Keynote presentation(bottom right) marked and annotated in the visual research report.

Hands-on research task analysis of Keynote(top left), HackerTyper(top right), Animotion(bottom left), Keynote presentation(bottom right) marked and annotated in the visual research report.

Hands-on Research And Collected artifacts and insights

For each product, I used my technical programming background to do hands-on research where I rated each product's (0-5 lowest to highest) ability to perform code presentation-related tasks. According to my score system, Animotion scored the highest(15 of 20), Keynote came second (9 of 20) and HackerTyper came last (7 of 20). Despite Animotion scoring the highest, it had two major flaws, you can't build and run your code to demo a feature and it has a steep learning curve. For the analysis, I gathered artifacts like pictures and insights about the strengths and weaknesses of each tool informing and influencing design decisions later in my study. The artifacts I gathered helped with brainstorming features for the sketches and wireframes. Many of the UI layouts and some features that were sketched and wireframes were inspired by the visual analysis report of the 3 products I analyzed.

One major hurdle was mastering code-oriented knowledge-dependent tools such as Animotion and HackerTyper, both of which presented a steep learning curve. Fortunately, my programming experience helped me use these tools effectively.

Hands-on Research And Collected artifacts and insights

For each product, I used my technical programming background to do hands-on research where I rated each product's (0-5 lowest to highest) ability to perform code presentation-related tasks. According to my score system, Animotion scored the highest(15 of 20), Keynote came second (9 of 20) and HackerTyper came last (7 of 20). Despite Animotion scoring the highest, it had two major flaws, you can't build and run your code to demo a feature and it has a steep learning curve. For the analysis, I gathered artifacts like pictures and insights about the strengths and weaknesses of each tool informing and influencing design decisions later in my study. The artifacts I gathered helped with brainstorming features for the sketches and wireframes. Many of the UI layouts and some features that were sketched and wireframes were inspired by the visual analysis report of the 3 products I analyzed.

One major hurdle was mastering code-oriented knowledge-dependent tools such as Animotion and HackerTyper, both of which presented a steep learning curve. Fortunately, my programming experience helped me use these tools effectively.

Voice of the Customer (VOC)

I found some user reviews and feedback regarding their concerns about presenting code.

Voice of the Customer (VOC)

I found some user reviews and feedback regarding their concerns about presenting code.

Crashes all the time and doesn't replay macros properly.

Visual Studio Marketplace. (2018). VSCode Hacker Typer. Retrieved from https://marketplace.visualstudio.com/items?itemName=jevakallio.vscode-hacker-typer

Crashes all the time and doesn't replay macros properly.

Visual Studio Marketplace. (2018). VSCode Hacker Typer. Retrieved from https://marketplace.visualstudio.com/items?itemName=jevakallio.vscode-hacker-typer

Apparently it's just junk. It doesn't play back macros correctly! You can't cancel a "Save", and it doesn't save macros If it were possible, I'd award it 0 stars. Macro recording and management should be a part of VS Code, shouldn't be delegating such a fundamental feature to the aftermarket.

Visual Studio Marketplace. (2018). VSCode Hacker Typer. Retrieved from https://marketplace.visualstudio.com/items?itemName=jevakallio.vscode-hacker-typer

Apparently it's just junk. It doesn't play back macros correctly! You can't cancel a "Save", and it doesn't save macros If it were possible, I'd award it 0 stars. Macro recording and management should be a part of VS Code, shouldn't be delegating such a fundamental feature to the aftermarket.

Visual Studio Marketplace. (2018). VSCode Hacker Typer. Retrieved from https://marketplace.visualstudio.com/items?itemName=jevakallio.vscode-hacker-typer

This could have been a great extension for my coding videos but it doesn't understand that I am calling snippets. It also does not understand Visual Studio Intellisense, it just records the text, not what the text which came after calling the snippet

Visual Studio Marketplace. (2018). VSCode Hacker Typer. Retrieved from https://marketplace.visualstudio.com/items?itemName=jevakallio.vscode-hacker-typer

This could have been a great extension for my coding videos but it doesn't understand that I am calling snippets. It also does not understand Visual Studio Intellisense, it just records the text, not what the text which came after calling the snippet

Visual Studio Marketplace. (2018). VSCode Hacker Typer. Retrieved from https://marketplace.visualstudio.com/items?itemName=jevakallio.vscode-hacker-typer

Apple Keynote doesn’t come with code syntax highlighting built in. I really wish it did, and hope that Apple would at some point add this feature, especially considering how many developers and engineers use Keynote to create talk slides.

A headshot picture of Sara Soueidan

Sara Soueidan. (2021). A couple of ways to highlight code syntax in Apple Keynote slides. Retrieved from https://www.sarasoueidan.com/blog/copy-paste-from-vscode-to-keynote/

Apple Keynote doesn’t come with code syntax highlighting built in. I really wish it did, and hope that Apple would at some point add this feature, especially considering how many developers and engineers use Keynote to create talk slides.

A headshot picture of Sara Soueidan

Sara Soueidan. (2021). A couple of ways to highlight code syntax in Apple Keynote slides. Retrieved from https://www.sarasoueidan.com/blog/copy-paste-from-vscode-to-keynote/

Read More - Competitive Analysis

Read More - Competitive Analysis

Affinity Diagram


Defined the affinity diagram to identify patterns, themes, and insights from the interviews resulting in 14 clusters of data reflecting patterns in error-prone tasks, code setup, note documentation, and many more.

Affinity Diagram


Defined the affinity diagram to identify patterns, themes, and insights from the interviews resulting in 14 clusters of data reflecting patterns in error-prone tasks, code setup, note documentation, and many more.

The 14 groups of data from the affinity diagram

The 14 groups of data from the affinity diagram

After conducting the interviews and competitive analysis, I used the affinity diagram to organize and analyze the qualitative data. The goal is to identify patterns, themes, and insights from the research findings. It involves grouping related data points into clusters, assigning labels to represent themes, and extracting insights.

After conducting the interviews and competitive analysis, I used the affinity diagram to organize and analyze the qualitative data. The goal is to identify patterns, themes, and insights from the research findings. It involves grouping related data points into clusters, assigning labels to represent themes, and extracting insights.

The affinity diagram database showcases the information grouped and tagged.

The affinity diagram database showcases the information grouped and tagged.

The outcome was the creation of 14 clusters of data organized based on themes, aiming to identify the common issues participants face.

  • Typing Code: Discovered 31 data points on challenges in typing code. Quote: “The biggest frustration I have with presenting code is the fact that I have to retype the source material that I prepared leading to typos errors and occasional bugs which take time to find and fix”.


  • Code Creation: Data aggregation of 36 diverse methods of how participants create code for their presentations.


  • Automation: Analyzed 13 clusters of Information regarding tools and features for helping automate manual, error-prone tasks.


  • Code Build Order & Setup: Accumulated 41 data points regarding the participant's process of setting the code build order of their projects.


  • Tools & Features: Assessed 71 data points regarding the participant’s preferred tools and features for preparing and presenting code.


  • Error Prone Tasks & Bugs/Errors: Identified 34 diverse data points about tasks that are error-prone which may lead to bugs and errors in the code.


  • Notes and Documentation: Discovered 43 data points regarding the process of participants writing and documenting notes for their code presentation projects.


  • Time-Intensive Tasks: Identified an aggregate of 61 data points participants find time-intensive sometimes leading to making fewer presentation projects.


  • Source Code Size & Complexity: Accumulated 25 sources of information regarding source code size and complexity influencing presentation output and complications organizing code.


  • Cognitively Demanding: Analyzed 19 clusters of data regarding tasks that the participants find cognitively demanding affecting their presentations and productivity.


  • Educational Informative Content Creation: Found 8 data points concerning participants’ desire and motivations for creating content and programming presentations.


  • Project Creation Frequency: Identified 9 participant insights regarding information about their content creation output and how it impacts their projects.


  • Testing Code, Building, and Running: Discovered 10 data points regarding participant's need to build and run their project for testing purposes and to show the project outcome.


  • Tools Setup & Settings: An aggregate of 16 sources of information demonstrating the diverse set of tools, hardware, and software settings participants prepare when presenting code.

The outcome was the creation of 14 clusters of data organized based on themes, aiming to identify the common issues participants face.

  • Typing Code: Discovered 31 data points on challenges in typing code. Quote: “The biggest frustration I have with presenting code is the fact that I have to retype the source material that I prepared leading to typos errors and occasional bugs which take time to find and fix”.


  • Code Creation: Data aggregation of 36 diverse methods of how participants create code for their presentations.


  • Automation: Analyzed 13 clusters of Information regarding tools and features for helping automate manual, error-prone tasks.


  • Code Build Order & Setup: Accumulated 41 data points regarding the participant's process of setting the code build order of their projects.


  • Tools & Features: Assessed 71 data points regarding the participant’s preferred tools and features for preparing and presenting code.


  • Error Prone Tasks & Bugs/Errors: Identified 34 diverse data points about tasks that are error-prone which may lead to bugs and errors in the code.


  • Notes and Documentation: Discovered 43 data points regarding the process of participants writing and documenting notes for their code presentation projects.


  • Time-Intensive Tasks: Identified an aggregate of 61 data points participants find time-intensive sometimes leading to making fewer presentation projects.


  • Source Code Size & Complexity: Accumulated 25 sources of information regarding source code size and complexity influencing presentation output and complications organizing code.


  • Cognitively Demanding: Analyzed 19 clusters of data regarding tasks that the participants find cognitively demanding affecting their presentations and productivity.


  • Educational Informative Content Creation: Found 8 data points concerning participants’ desire and motivations for creating content and programming presentations.


  • Project Creation Frequency: Identified 9 participant insights regarding information about their content creation output and how it impacts their projects.


  • Testing Code, Building, and Running: Discovered 10 data points regarding participant's need to build and run their project for testing purposes and to show the project outcome.


  • Tools Setup & Settings: An aggregate of 16 sources of information demonstrating the diverse set of tools, hardware, and software settings participants prepare when presenting code.

Task Analysis & Optimized Task Analysis


Developed the task analysis to identify the steps and actions users take to complete tasks that are manually intensive, cognitively demanding, error-prone, and knowledge-dependent, resulting in the development of systems improving code build order setup, writing notes, automating tasks, and making code presentations.

Task Analysis & Optimized Task Analysis


Developed the task analysis to identify the steps and actions users take to complete tasks that are manually intensive, cognitively demanding, error-prone, and knowledge-dependent, resulting in the development of systems improving code build order setup, writing notes, automating tasks, and making code presentations.

Research findings and insights are organized according to the five categories of Larry Marine’s task analysis framework.

Research findings and insights are organized according to the five categories of Larry Marine’s task analysis framework.

After synthesizing the data in the affinity diagram, I created the task analysis to document and analyze how users interact with a product or system to accomplish specific tasks related to organizing, presenting, and documenting code.


Task Analysis Process:

  • Big picture: Defined the participant's steps, systems, tools knowledge, workaround, questions, and issues based on the affinity diagram and user interview research data.

  • Details: Added intricate details to each category i.e. what type of tools participants use, their planning process, how they organize code, their problems, etc.


  • Optimize: Created an optimized task analysis turning manually intensive, error-prone, cognitively demanding tasks and processes into systems to improve the UX of making and presenting programming projects.


The goal is to identify the steps and actions users take to complete tasks that are manually intensive, cognitively demanding, error-prone, and knowledge-dependent, as well as any potential challenges or pain points, and replace them with systems. This analysis helps me gain insights into user behavior, preferences, and needs, ultimately informing the design and improvement of systems to improve the user's experience. The result of creating the task analysis was a detailed overview of the improvements within the code documentation, organization, and code presentation domain. The following list some problems and system improvements discovered in the optimized task analysis.

After synthesizing the data in the affinity diagram, I created the task analysis to document and analyze how users interact with a product or system to accomplish specific tasks related to organizing, presenting, and documenting code.


Task Analysis Process:

  • Big picture: Defined the participant's steps, systems, tools knowledge, workaround, questions, and issues based on the affinity diagram and user interview research data.

  • Details: Added intricate details to each category i.e. what type of tools participants use, their planning process, how they organize code, their problems, etc.


  • Optimize: Created an optimized task analysis turning manually intensive, error-prone, cognitively demanding tasks and processes into systems to improve the UX of making and presenting programming projects.


The goal is to identify the steps and actions users take to complete tasks that are manually intensive, cognitively demanding, error-prone, and knowledge-dependent, as well as any potential challenges or pain points, and replace them with systems. This analysis helps me gain insights into user behavior, preferences, and needs, ultimately informing the design and improvement of systems to improve the user's experience. The result of creating the task analysis was a detailed overview of the improvements within the code documentation, organization, and code presentation domain. The following list some problems and system improvements discovered in the optimized task analysis.

Task analysis(Left) & optimized task analysis(Right) of the research data, Green notes are user steps, yellow are systems, purple are tools, knowledge, and workarounds, orange are questions and issues, and red are miscellaneous.

Task analysis(Left) & optimized task analysis(Right) of the research data, Green notes are user steps, yellow are systems, purple are tools, knowledge, and workarounds, orange are questions and issues, and red are miscellaneous.

System Improvements

Code Build Order & Setup

  • Problem: Many participants experienced issues and frustrations with organizing the code build order in complex projects leading to massive time investment and resorting to using other tools and methods to facilitate the process.


  • System: The proposed system streamlines code preparation for developers, enabling dynamic code sequential grouping, and customization to enhance presentation efficiency, minimizing manual effort, reducing errors, and boosting productivity.


Notes And Documentation

  • Problem: Participants argued that writing notes and documenting their code is time-consuming, with many claiming that adding notes directly to their code makes the reference material hard to read and navigate. Others prefer using alternative note-taking tools for script writing and code documentation to avoid cluttering their code projects.


  • System: A notes system can be built specifically for adding notes to code. Similar to Keynote's ability to add presenter notes on slides, the system would allow the participant to add notes to any character, word, or block of code to their project. Notes can be modified to their liking and will co-exist with their code only being shown when necessary to avoid distracting the developer.


Code Automation

  • Problem: The majority of participants expressed their desire for automation tools to help them automate typing code and other code presentation tasks, aiming to enhance their productivity. Many stated that typing code is time-consuming and error-prone, leading to typos that cause bugs and errors in their source code. These bugs often result in disruptions during their presentations, forcing them to fix the code before continuing with the presentation.


  • System: The system can simulate the typing of code leaving the developers to focus on presenting their projects. The automation system can allow the participant to record mouse or keyboard actions that they can play when presenting code. These actions include navigating to a new source code file, deleting/creating files, source code editor UI navigation, and interaction among other things.


Code Presentation

  • Problem: Code editors and IDEs lack code presentation features leading participants to use tools like Keynote, PowerPoint, and After Effects to help them present their code. When presenting code, the majority of participants split their setup into multiple monitors causing them to multitask which can be cognitively demanding.


  • System: A great amount of inspiration will be taken from presentation software like Keynote and PowerPoint for developing creative systems that will help address the common code presentation pain points. Some of these features include a dedicated presentation screen, presenter notes, animation transitions, animation build order, object highlighting, and content navigation.


Syntax Highlighting and Formatting

  • Problem: Participants want tools and features that reflect their development environment, including syntax highlighting, formatting and auto-completion, and other code editor-specific features and accessibility settings.


  • System: Build a code editor that supports syntax highlighting and formatting for the majority of programming languages. Add support for accessibility settings like making the font size bigger and improving color contrast in code.

System Improvements

Code Build Order & Setup

  • Problem: Many participants experienced issues and frustrations with organizing the code build order in complex projects leading to massive time investment and resorting to using other tools and methods to facilitate the process.


  • System: The proposed system streamlines code preparation for developers, enabling dynamic code sequential grouping, and customization to enhance presentation efficiency, minimizing manual effort, reducing errors, and boosting productivity.


Notes And Documentation

  • Problem: Participants argued that writing notes and documenting their code is time-consuming, with many claiming that adding notes directly to their code makes the reference material hard to read and navigate. Others prefer using alternative note-taking tools for script writing and code documentation to avoid cluttering their code projects.


  • System: A notes system can be built specifically for adding notes to code. Similar to Keynote's ability to add presenter notes on slides, the system would allow the participant to add notes to any character, word, or block of code to their project. Notes can be modified to their liking and will co-exist with their code only being shown when necessary to avoid distracting the developer.


Code Automation

  • Problem: The majority of participants expressed their desire for automation tools to help them automate typing code and other code presentation tasks, aiming to enhance their productivity. Many stated that typing code is time-consuming and error-prone, leading to typos that cause bugs and errors in their source code. These bugs often result in disruptions during their presentations, forcing them to fix the code before continuing with the presentation.


  • System: The system can simulate the typing of code leaving the developers to focus on presenting their projects. The automation system can allow the participant to record mouse or keyboard actions that they can play when presenting code. These actions include navigating to a new source code file, deleting/creating files, source code editor UI navigation, and interaction among other things.


Code Presentation

  • Problem: Code editors and IDEs lack code presentation features leading participants to use tools like Keynote, PowerPoint, and After Effects to help them present their code. When presenting code, the majority of participants split their setup into multiple monitors causing them to multitask which can be cognitively demanding.


  • System: A great amount of inspiration will be taken from presentation software like Keynote and PowerPoint for developing creative systems that will help address the common code presentation pain points. Some of these features include a dedicated presentation screen, presenter notes, animation transitions, animation build order, object highlighting, and content navigation.


Syntax Highlighting and Formatting

  • Problem: Participants want tools and features that reflect their development environment, including syntax highlighting, formatting and auto-completion, and other code editor-specific features and accessibility settings.


  • System: Build a code editor that supports syntax highlighting and formatting for the majority of programming languages. Add support for accessibility settings like making the font size bigger and improving color contrast in code.

Research Report


Created the research report to document insights and findings gained from the user interview, affinity diagram, and task analysis, providing actionable recommendations to improve key issues.


I made a research report to document and summarize the findings from the user research study. The research report includes the project overview, objectives, research study flaws, participant demographics, findings, insights, and suggestions and opportunities. The report aims to communicate insights and findings gained from the user interview, affinity diagram, and task analysis, providing actionable recommendations to improve the user experience. If I were working in a team, this document would be essential for informing stakeholders about key discoveries and guiding decision-making processes to improve the UX of code presentations. The result was an in-depth analysis of findings, insights suggestions, and opportunities for the following:


  • Code Build Order & Setup

  • Typing Code

  • Notes and Documentation

  • Source Code Size & Complexity

  • Error Prone Task & Bugs/Errors

  • Cognitively Demanding, Multitasking

  • Testing Building, And Running Code

  • Tools, Features, and Software Layout


The systems generated from the insights served as a foundation for sketching and wireframing the four main features of Prescode.

Research Report


Created the research report to document insights and findings gained from the user interview, affinity diagram, and task analysis, providing actionable recommendations to improve key issues.


I made a research report to document and summarize the findings from the user research study. The research report includes the project overview, objectives, research study flaws, participant demographics, findings, insights, and suggestions and opportunities. The report aims to communicate insights and findings gained from the user interview, affinity diagram, and task analysis, providing actionable recommendations to improve the user experience. If I were working in a team, this document would be essential for informing stakeholders about key discoveries and guiding decision-making processes to improve the UX of code presentations. The result was an in-depth analysis of findings, insights suggestions, and opportunities for the following:


  • Code Build Order & Setup

  • Typing Code

  • Notes and Documentation

  • Source Code Size & Complexity

  • Error Prone Task & Bugs/Errors

  • Cognitively Demanding, Multitasking

  • Testing Building, And Running Code

  • Tools, Features, and Software Layout


The systems generated from the insights served as a foundation for sketching and wireframing the four main features of Prescode.

Read More - Research Report Document

Read More - Research Report Document

UX - Interaction Architecture

UX - Interaction Architecture

Sketches


Used insights and findings from the research report to create sketches for exploration, ideation, and iteration aiming to define sketches for the following systems: code build order & setup, notes and documentation, tasks automation, code presentation, UI layout, and other systems outlined in the suggestions and opportunities report.

Sketches


Used insights and findings from the research report to create sketches for exploration, ideation, and iteration aiming to define sketches for the following systems: code build order & setup, notes and documentation, tasks automation, code presentation, UI layout, and other systems outlined in the suggestions and opportunities report.

Sketches brainstorming systems and the UI Layout.

Sketches brainstorming systems and the UI Layout.

Using the suggestions and opportunities from the research report and the insights and findings from the competitive analysis, I began ideating and sketching, hand-drawn visual representations of design ideas to explore concepts. The main purposes of creating UX sketches include feature exploration, ideation, and iteration. A lot of the findings in the competitor analysis inspired some features for the sketches including, the UI layout reflecting VSC UI layout, Keynote’s presentation screen features, and Animotions code build layout.


The sketches resulted in brainstorming the following key systems:

Using the suggestions and opportunities from the research report and the insights and findings from the competitive analysis, I began ideating and sketching, hand-drawn visual representations of design ideas to explore concepts. The main purposes of creating UX sketches include feature exploration, ideation, and iteration. A lot of the findings in the competitor analysis inspired some features for the sketches including, the UI layout reflecting VSC UI layout, Keynote’s presentation screen features, and Animotions code build layout.


The sketches resulted in brainstorming the following key systems:

  • Sketch showing the snippet system used for grouping and organizing the code's build order.

    Annotations

    1.

    The snippet system helps group and order code, avoiding the need to organize code manually.

    2.

    The 2 lines of code highlighted in yellow are grouped to form a snippet.

    3.

    Snippets are added to the composition window, which can be re-organized

    Code Build Order & Setup

    Sketched a system for developers to organize code effortlessly in their preferred order, eliminating manual sorting. This system allows dynamic grouping by character, line, or blocks, streamlining code organization and presentation.

  • Sketch showing the notes systems used for adding presentation notes to code.

    Annotations

    1.

    The notes system enables users to add presentation notes on code which helps developers avoid writing comments directly on code and helps them make scripted presentations.

    2.

    The yellow underline indicates code containing notes. Notes can be applied to any piece of code.

    3.

    The notes editor is where the user writes and edits their notes.

    Notes and Code Documentation

    Sketched a system for adding notes to code. Similar to Keynote's ability to add presenter notes on slides, the system would allow the participant to add notes to any character, word, or block of code to their project. Notes can be modified to their liking and will co-exist with their code only being shown when necessary to avoid distracting the developer.

  • Sketch showing the action system used for automating code-related tasks.

    Annotations

    1.

    The action tool system helps automate tedious tasks like deleting code, switching files, recording mouse and keyboard actions, and adding macros.

    2.

    The Action window contains useful information and features for automating tasks.

    Tasks Automation

    The main purpose of the system is to automate as many mundane manually intensive error-prone task’s. The system allows the participant to record mouse or keyboard actions that they can play when presenting code. These actions include navigating to a new source code file, deleting/creating files, source code editor navigation, and more.

  • Sketch showing the presentation screen used for guiding the presenter in their presentation progress.

    Annotations

    1.

    The presentation screen in Prescode includes features inspired by Keynote, such as a timer that helps presenters track time and their progress.

    2.

    The composition window has all the files and code that are going to be presented and allows the developer to easily reference the code.

    3.

    The editor window shows the user the code presentation order.

    4.

    The notes pane shows the presenter their presentation notes.

    Code Presentation

    I gathered inspiration from presentation software like Keynote and PowerPoint to develop creative systems that address common pain points in code presentation. These features include a dedicated presentation screen, presenter notes, animation transitions, animation build order setup, object highlighting, content navigation, and media playback.

  • Sketch showing the snippet system used for grouping and organizing the code's build order.

    Annotations

    1.

    The snippet system helps group and order code, avoiding the need to organize code manually.

    2.

    The 2 lines of code highlighted in yellow are grouped to form a snippet.

    3.

    Snippets are added to the composition window, which can be re-organized

    Code Build Order & Setup

    Sketched a system for developers to organize code effortlessly in their preferred order, eliminating manual sorting. This system allows dynamic grouping by character, line, or blocks, streamlining code organization and presentation.

  • Sketch showing the notes systems used for adding presentation notes to code.

    Annotations

    1.

    The notes system enables users to add presentation notes on code which helps developers avoid writing comments directly on code and helps them make scripted presentations.

    2.

    The yellow underline indicates code containing notes. Notes can be applied to any piece of code.

    3.

    The notes editor is where the user writes and edits their notes.

    Notes and Code Documentation

    Sketched a system for adding notes to code. Similar to Keynote's ability to add presenter notes on slides, the system would allow the participant to add notes to any character, word, or block of code to their project. Notes can be modified to their liking and will co-exist with their code only being shown when necessary to avoid distracting the developer.

  • Sketch showing the action system used for automating code-related tasks.

    Annotations

    1.

    The action tool system helps automate tedious tasks like deleting code, switching files, recording mouse and keyboard actions, and adding macros.

    2.

    The Action window contains useful information and features for automating tasks.

    Tasks Automation

    The main purpose of the system is to automate as many mundane manually intensive error-prone task’s. The system allows the participant to record mouse or keyboard actions that they can play when presenting code. These actions include navigating to a new source code file, deleting/creating files, source code editor navigation, and more.

  • Sketch showing the presentation screen used for guiding the presenter in their presentation progress.

    Annotations

    1.

    The presentation screen in Prescode includes features inspired by Keynote, such as a timer that helps presenters track time and their progress.

    2.

    The composition window has all the files and code that are going to be presented and allows the developer to easily reference the code.

    3.

    The editor window shows the user the code presentation order.

    4.

    The notes pane shows the presenter their presentation notes.

    Code Presentation

    I gathered inspiration from presentation software like Keynote and PowerPoint to develop creative systems that address common pain points in code presentation. These features include a dedicated presentation screen, presenter notes, animation transitions, animation build order setup, object highlighting, content navigation, and media playback.

  • Sketch showing the snippet system used for grouping and organizing the code's build order.

    Annotations

    1.

    The snippet system helps group and order code, avoiding the need to organize code manually.

    2.

    The 2 lines of code highlighted in yellow are grouped to form a snippet.

    3.

    Snippets are added to the composition window, which can be re-organized

    Code Build Order & Setup

    Sketched a system for developers to organize code effortlessly in their preferred order, eliminating manual sorting. This system allows dynamic grouping by character, line, or blocks, streamlining code organization and presentation.

  • Sketch showing the notes systems used for adding presentation notes to code.

    Annotations

    1.

    The notes system enables users to add presentation notes on code which helps developers avoid writing comments directly on code and helps them make scripted presentations.

    2.

    The yellow underline indicates code containing notes. Notes can be applied to any piece of code.

    3.

    The notes editor is where the user writes and edits their notes.

    Notes and Code Documentation

    Sketched a system for adding notes to code. Similar to Keynote's ability to add presenter notes on slides, the system would allow the participant to add notes to any character, word, or block of code to their project. Notes can be modified to their liking and will co-exist with their code only being shown when necessary to avoid distracting the developer.

  • Sketch showing the action system used for automating code-related tasks.

    Annotations

    1.

    The action tool system helps automate tedious tasks like deleting code, switching files, recording mouse and keyboard actions, and adding macros.

    2.

    The Action window contains useful information and features for automating tasks.

    Tasks Automation

    The main purpose of the system is to automate as many mundane manually intensive error-prone task’s. The system allows the participant to record mouse or keyboard actions that they can play when presenting code. These actions include navigating to a new source code file, deleting/creating files, source code editor navigation, and more.

  • Sketch showing the presentation screen used for guiding the presenter in their presentation progress.

    Annotations

    1.

    The presentation screen in Prescode includes features inspired by Keynote, such as a timer that helps presenters track time and their progress.

    2.

    The composition window has all the files and code that are going to be presented and allows the developer to easily reference the code.

    3.

    The editor window shows the user the code presentation order.

    4.

    The notes pane shows the presenter their presentation notes.

    Code Presentation

    I gathered inspiration from presentation software like Keynote and PowerPoint to develop creative systems that address common pain points in code presentation. These features include a dedicated presentation screen, presenter notes, animation transitions, animation build order setup, object highlighting, content navigation, and media playback.

Wireframes


Turned the sketches into medium-fidelity wireframes outlining the product's structure, layout, and functionality clarifying and optimizing the overall design, user flow, and UI layout of my sketches.

Wireframes


Turned the sketches into medium-fidelity wireframes outlining the product's structure, layout, and functionality clarifying and optimizing the overall design, user flow, and UI layout of my sketches.

Collage of the wireframes covering the main systems of Prescode.

Collage of the wireframes covering the main systems of Prescode.

After brainstorming and sketching solutions, I took the best sketches and turned them into wireframes which involved creating medium-fidelity visual representations of the product's structure, layout, and functionality. The purpose is to clarify and optimize my sketches' overall design, user flow, layout, and content placement. I treat wireframing as my playground where I iterate and improve design architecture adding key features derived from the sketches and systems defined in the affinity diagram and research report.


The following main wireframes were created for the following 4 systems:

After brainstorming and sketching solutions, I took the best sketches and turned them into wireframes which involved creating medium-fidelity visual representations of the product's structure, layout, and functionality. The purpose is to clarify and optimize my sketches' overall design, user flow, layout, and content placement. I treat wireframing as my playground where I iterate and improve design architecture adding key features derived from the sketches and systems defined in the affinity diagram and research report.


The following main wireframes were created for the following 4 systems:

  • Snippet System

    Snippet system wireframing showing how code is grouped and organized in the composition window.

    Annotations

    1.

    The wireframe shows code snippets grouped by color. This feature demonstrates how users can utilize the snippet system to address issues related to grouping, organizing, and automating code typing.

    2.

    Inspired by the VSC editor and Keynote's animation order function, the composition window in the wireframe organizes and groups code snippets. It provides users with a convenient way to access and adjust the codes build order.

  • Notes System

    The notes system wireframe demonstrating how code is documented.

    Annotations

    1.

    1. The wireframe for the notes system shows how users can add notes to code, designed to prevent developers from writing comments directly in their code, which can affect readability. In the example, a note was added to the code highlighted in green, and users can modify all notes in the composition window.

    2.

    1. 2. The notes window allows users to add and edit their notes, drawing inspiration from Keynote's presentation notes feature.

  • Action System

    The action wireframe shows how users can add actions to automate code related tasks.

    Annotations

    1.

    The action window offers vital information and tools to aid developers in accomplishing and automating tasks. Saved actions are conveniently displayed in the composition window for quick access.

    2.

    Inspired by the VSC editor and Keynote's animation order function, the composition window in the wireframe organizes and groups code snippets. It provides users with a convenient way to access and adjust the codes build order.

    3.

    Code containing actions is highlighted with a yellow underline, making it easier for developers to differentiate actions from snippets and notes.

  • Code Presentation

    The code presentation system provides a convenient way of informing the presenter of their current and future presentation progress.

    Annotations

    1.

    Many developers have voiced the need for presentation tools that help them track their progress. To address this, I've designed and wireframed a presenter screen, drawing inspiration from Keynote. This screen displays the current code being presented in turquoise and highlights the next code in grey, providing users with a clear view of their presentation flow.

    2.

    The composition window is valuable for informing the presenter about the project's file hierarchy and providing context regarding which file and code are being displayed.

    3.

    If the code being presented has notes, the notes window will show the projects presenter notes.

  • Snippet System

    Snippet system wireframing showing how code is grouped and organized in the composition window.

    Annotations

    1.

    The wireframe shows code snippets grouped by color. This feature demonstrates how users can utilize the snippet system to address issues related to grouping, organizing, and automating code typing.

    2.

    Inspired by the VSC editor and Keynote's animation order function, the composition window in the wireframe organizes and groups code snippets. It provides users with a convenient way to access and adjust the codes build order.

  • Notes System

    The notes system wireframe demonstrating how code is documented.

    Annotations

    1.

    1. The wireframe for the notes system shows how users can add notes to code, designed to prevent developers from writing comments directly in their code, which can affect readability. In the example, a note was added to the code highlighted in green, and users can modify all notes in the composition window.

    2.

    1. 2. The notes window allows users to add and edit their notes, drawing inspiration from Keynote's presentation notes feature.

  • Action System

    The action wireframe shows how users can add actions to automate code related tasks.

    Annotations

    1.

    The action window offers vital information and tools to aid developers in accomplishing and automating tasks. Saved actions are conveniently displayed in the composition window for quick access.

    2.

    Inspired by the VSC editor and Keynote's animation order function, the composition window in the wireframe organizes and groups code snippets. It provides users with a convenient way to access and adjust the codes build order.

    3.

    Code containing actions is highlighted with a yellow underline, making it easier for developers to differentiate actions from snippets and notes.

  • Code Presentation

    The code presentation system provides a convenient way of informing the presenter of their current and future presentation progress.

    Annotations

    1.

    Many developers have voiced the need for presentation tools that help them track their progress. To address this, I've designed and wireframed a presenter screen, drawing inspiration from Keynote. This screen displays the current code being presented in turquoise and highlights the next code in grey, providing users with a clear view of their presentation flow.

    2.

    The composition window is valuable for informing the presenter about the project's file hierarchy and providing context regarding which file and code are being displayed.

    3.

    If the code being presented has notes, the notes window will show the projects presenter notes.

  • Snippet System

    Snippet system wireframing showing how code is grouped and organized in the composition window.

    Annotations

    1.

    The wireframe shows code snippets grouped by color. This feature demonstrates how users can utilize the snippet system to address issues related to grouping, organizing, and automating code typing.

    2.

    Inspired by the VSC editor and Keynote's animation order function, the composition window in the wireframe organizes and groups code snippets. It provides users with a convenient way to access and adjust the codes build order.

  • Notes System

    The notes system wireframe demonstrating how code is documented.

    Annotations

    1.

    1. The wireframe for the notes system shows how users can add notes to code, designed to prevent developers from writing comments directly in their code, which can affect readability. In the example, a note was added to the code highlighted in green, and users can modify all notes in the composition window.

    2.

    1. 2. The notes window allows users to add and edit their notes, drawing inspiration from Keynote's presentation notes feature.

  • Action System

    The action wireframe shows how users can add actions to automate code related tasks.

    Annotations

    1.

    The action window offers vital information and tools to aid developers in accomplishing and automating tasks. Saved actions are conveniently displayed in the composition window for quick access.

    2.

    Inspired by the VSC editor and Keynote's animation order function, the composition window in the wireframe organizes and groups code snippets. It provides users with a convenient way to access and adjust the codes build order.

    3.

    Code containing actions is highlighted with a yellow underline, making it easier for developers to differentiate actions from snippets and notes.

  • Code Presentation

    The code presentation system provides a convenient way of informing the presenter of their current and future presentation progress.

    Annotations

    1.

    Many developers have voiced the need for presentation tools that help them track their progress. To address this, I've designed and wireframed a presenter screen, drawing inspiration from Keynote. This screen displays the current code being presented in turquoise and highlights the next code in grey, providing users with a clear view of their presentation flow.

    2.

    The composition window is valuable for informing the presenter about the project's file hierarchy and providing context regarding which file and code are being displayed.

    3.

    If the code being presented has notes, the notes window will show the projects presenter notes.

UI - User Interface Design

UI - User Interface Design

High Fidelity Design


Refined the wireframes creating a polished high-fidelity design of the user interface, defined color branding, typography, and interactive components for providing a realistic preview of how the final product will look and feel and for creating the conceptual prototype.

High Fidelity Design


Refined the wireframes creating a polished high-fidelity design of the user interface, defined color branding, typography, and interactive components for providing a realistic preview of how the final product will look and feel and for creating the conceptual prototype.

High fidelity collage of the main systems of Prescode.

High fidelity collage of the main systems of Prescode.

I refined and polished the wireframes into a high-fidelity visual representation of the product. Drawing inspiration from Xcode, VSC, and Keynote, I focused on defining the colors and UI aesthetics in Prescode to resemble tools commonly used by developers. Additionally, I adhered to common design practices and guidelines for web applications to ensure a user-friendly and visually appealing design. Creating a polished version of the user interface, that incorporates the final visual elements, colors, typography, and interactive components is important for providing a realistic preview of how the final product will look and feel and for creating the conceptual prototype.

I refined and polished the wireframes into a high-fidelity visual representation of the product. Drawing inspiration from Xcode, VSC, and Keynote, I focused on defining the colors and UI aesthetics in Prescode to resemble tools commonly used by developers. Additionally, I adhered to common design practices and guidelines for web applications to ensure a user-friendly and visually appealing design. Creating a polished version of the user interface, that incorporates the final visual elements, colors, typography, and interactive components is important for providing a realistic preview of how the final product will look and feel and for creating the conceptual prototype.

High-fidelity design of Prescodes snippet system and UI.

Annotations

1.

Maintained a cohesive visual style throughout the interface adding syntax color to code for better readability and reinforced the brand and design language assuring proper accessibility within color, and typography.

2.

Converted every wireframe into a high fidelity design ensuring UX consistency in the design of common UI elements like buttons, text fields and other interactive components.

3.

Xcode and VSC inspired the composition of the window's color, file hierarchy, and iconography. Using a dark surface color for the UI in Prescode was a strategic choice to create a sense of familiarity for developers accustomed to using IDEs and code editors.

High-fidelity design of Prescodes snippet system and UI.

Annotations

1.

Maintained a cohesive visual style throughout the interface adding syntax color to code for better readability and reinforced the brand and design language assuring proper accessibility within color, and typography.

2.

Converted every wireframe into a high fidelity design ensuring UX consistency in the design of common UI elements like buttons, text fields and other interactive components.

3.

Xcode and VSC inspired the composition of the window's color, file hierarchy, and iconography. Using a dark surface color for the UI in Prescode was a strategic choice to create a sense of familiarity for developers accustomed to using IDEs and code editors.

Along with redesigning and polishing the wireframes, I created a design system to maintain consistency in my design.

Along with redesigning and polishing the wireframes, I created a design system to maintain consistency in my design.

Design System


Created the design system to define rules and guidelines, ensuring consistency and efficiency in developing user interfaces and systems for typography, color branding, icons, imagery, layout grids, and interactive components, facilitating the creation of high-fidelity design.

Design System


Created the design system to define rules and guidelines, ensuring consistency and efficiency in developing user interfaces and systems for typography, color branding, icons, imagery, layout grids, and interactive components, facilitating the creation of high-fidelity design.

I created a design system for Prescode defining UI components and guidelines for the high-fidelity designs and branding. In the design system, I defined the rules, guidelines, and UI components to ensure consistency and efficiency in designing and developing user interfaces serving as a centralized resource for providing a common design language and framework for creating cohesive and visually appealing user interfaces. As a result, I created the following components for the design system:

I created a design system for Prescode defining UI components and guidelines for the high-fidelity designs and branding. In the design system, I defined the rules, guidelines, and UI components to ensure consistency and efficiency in designing and developing user interfaces serving as a centralized resource for providing a common design language and framework for creating cohesive and visually appealing user interfaces. As a result, I created the following components for the design system:

  • High fidelity collage of the main systems of Prescode.

    Form Elements & General UI Components

    Created visually appealing and user-friendly input fields, cards, and other commonly used components for composing UI windows.

  • High fidelity collage of the main systems of Prescode.

    Buttons

    Designed checkboxes, radio buttons, and clickable elements with appropriate visual feedback and interactive states for visually guiding users.

  • Prescodes type scale system.

    Typography

    Specified font choices, sizes, and styles to maintain consistency in text across the application ensuring readability and visual harmony.

  • Prescodes color palette system.

    Colors

    Defined a color scheme for the UI helping maintain brand consistency and contributing to a visually pleasing and accessible design.

  • Prescodes icons.

    Icons and Imagery

    Provided icons and other imagery.

  • Prescodes 8-point layout spacing system.

    Spacing and Layout Grid

    Specified a spacing and 8-point grid system ensuring consistent margins, and padding between elements maintaining balanced proportions for a visually harmonious layout.

  • High fidelity collage of the main systems of Prescode.

    Form Elements & General UI Components

    Created visually appealing and user-friendly input fields, cards, and other commonly used components for composing UI windows.

  • High fidelity collage of the main systems of Prescode.

    Buttons

    Designed checkboxes, radio buttons, and clickable elements with appropriate visual feedback and interactive states for visually guiding users.

  • Prescodes type scale system.

    Typography

    Specified font choices, sizes, and styles to maintain consistency in text across the application ensuring readability and visual harmony.

  • Prescodes color palette system.

    Colors

    Defined a color scheme for the UI helping maintain brand consistency and contributing to a visually pleasing and accessible design.

  • Prescodes icons.

    Icons and Imagery

    Provided icons and other imagery.

  • Prescodes 8-point layout spacing system.

    Spacing and Layout Grid

    Specified a spacing and 8-point grid system ensuring consistent margins, and padding between elements maintaining balanced proportions for a visually harmonious layout.

  • High fidelity collage of the main systems of Prescode.

    Form Elements & General UI Components

    Created visually appealing and user-friendly input fields, cards, and other commonly used components for composing UI windows.

  • High fidelity collage of the main systems of Prescode.

    Buttons

    Designed checkboxes, radio buttons, and clickable elements with appropriate visual feedback and interactive states for visually guiding users.

  • Prescodes type scale system.

    Typography

    Specified font choices, sizes, and styles to maintain consistency in text across the application ensuring readability and visual harmony.

  • Prescodes color palette system.

    Colors

    Defined a color scheme for the UI helping maintain brand consistency and contributing to a visually pleasing and accessible design.

  • Prescodes icons.

    Icons and Imagery

    Provided icons and other imagery.

  • Prescodes 8-point layout spacing system.

    Spacing and Layout Grid

    Specified a spacing and 8-point grid system ensuring consistent margins, and padding between elements maintaining balanced proportions for a visually harmonious layout.

Prototype Concept


Due to the complex nature of software development features, I failed to create a working prototype for user testing leading to crafting a simplified, conceptual representation of Prescode showcasing its four major systems: Snippet Tool, Note Tool, Action Tool and Presentation feature.



Prototyping is a crucial aspect of UX and user testing, after defining the wireframes and high-fidelity designs, I started to create a conceptual prototype of Prescode. I created a simplified, tangible conceptual representation of Prescode showcasing its four major systems: snippet tool, note tool, action tool, and presentation tool. The goal was to create a high-fidelity working prototype to test, validate, invalidate, identify potential issues, and gather user feedback on the design architecture before investing time and resources in full development, however, I encountered a massive issue.



Failed to create a working prototype for user testing

Due to the complex nature of software development, I was unable to conduct user testing as the existing prototyping tools in the market did not allow me to create a realistic prototype that met my standards for prototyping my systems for code presentations. Many prototyping tools are basic and lack the necessary functionality for creating more technical features. Consequently, I couldn't validate or invalidate my solutions with users and had to settle for making a conceptual prototype of Prescode.


The prototyping tools lacked the following:

  • No support for code syntax highlighting and formatting


  • No support for advanced text editing features like text cursor recognition, grouping, and highlighting words and characters


  • No support for custom keyboard actions, and macros


  • No support for typing automation


  • No support for adding nuanced programming features that require asynchronous state variables


Even though I couldn’t use the prototype for testing, a conceptual prototype still has its uses. It's a valuable method for showcasing the main systems to stakeholders, gathering feedback, and also for technical evaluation from a developer's perspective. This way, stakeholders can visualize the functionality and flow of the product, while developers can assess the feasibility and implementation aspects of the features. Unfortunately for Prescode, a highly advanced technical prototype needs to be created in code to accommodate its advanced features to properly conduct a user test.



Solution & Considerations

To conduct a thorough user test for Prescode, it is essential to consider the development of a technical prototype using a software development framework such as Flutter. This approach ensures the incorporation of all necessary functionalities and consideration of edge cases within Prescode.

Prototype Concept


Due to the complex nature of software development features, I failed to create a working prototype for user testing leading to crafting a simplified, conceptual representation of Prescode showcasing its four major systems: Snippet Tool, Note Tool, Action Tool and Presentation feature.



Prototyping is a crucial aspect of UX and user testing, after defining the wireframes and high-fidelity designs, I started to create a conceptual prototype of Prescode. I created a simplified, tangible conceptual representation of Prescode showcasing its four major systems: snippet tool, note tool, action tool, and presentation tool. The goal was to create a high-fidelity working prototype to test, validate, invalidate, identify potential issues, and gather user feedback on the design architecture before investing time and resources in full development, however, I encountered a massive issue.



Failed to create a working prototype for user testing

Due to the complex nature of software development, I was unable to conduct user testing as the existing prototyping tools in the market did not allow me to create a realistic prototype that met my standards for prototyping my systems for code presentations. Many prototyping tools are basic and lack the necessary functionality for creating more technical features. Consequently, I couldn't validate or invalidate my solutions with users and had to settle for making a conceptual prototype of Prescode.


The prototyping tools lacked the following:

  • No support for code syntax highlighting and formatting


  • No support for advanced text editing features like text cursor recognition, grouping, and highlighting words and characters


  • No support for custom keyboard actions, and macros


  • No support for typing automation


  • No support for adding nuanced programming features that require asynchronous state variables


Even though I couldn’t use the prototype for testing, a conceptual prototype still has its uses. It's a valuable method for showcasing the main systems to stakeholders, gathering feedback, and also for technical evaluation from a developer's perspective. This way, stakeholders can visualize the functionality and flow of the product, while developers can assess the feasibility and implementation aspects of the features. Unfortunately for Prescode, a highly advanced technical prototype needs to be created in code to accommodate its advanced features to properly conduct a user test.



Solution & Considerations

To conduct a thorough user test for Prescode, it is essential to consider the development of a technical prototype using a software development framework such as Flutter. This approach ensures the incorporation of all necessary functionalities and consideration of edge cases within Prescode.

  • Prototype concept video showcasing the snippet system.

    Snippet System

    Participants were looking for a less time-consuming method to organize code efficiently. The timestamped segment (0:11 - 0:14) demonstrates how the snippet system in Prescode enables users to highlight, select, and group code to create snippets. These snippets are then added to the composition window, where users can track the composition and build order of each code snippet.

  • Prototype concept video showcasing the notes system.

    Notes System

    Participants were using external note-taking tools or adding notes directly to their code, which affected code readability. The timestamped segment (0:03 - 0:16) demonstrates how the notes system in Prescode helps participants add presenter notes to their code presentations without cluttering the code. These notes are displayed on a dedicated presentation screen during code presentations.

  • Prototype concept video showcasing the action system.

    Action System

    The concept of using the action tool in Prescode aligns with participants' needs to automate tasks like deleting, replacing, and updating code during presentations. By automating these tasks, developers can reduce errors and ensure a smoother presentation of their code projects.

  • Prototype concept video showcasing the presentation system.

    Presenting System

    The concept of Prescode addresses the challenges participants faced when presenting code using code editors and IDEs. By automating presentation tasks, such as typing code and managing errors, Prescode enables developers to focus on delivering a smooth and effective presentation without the frustrations and distractions previously experienced.

  • Prototype concept video showcasing the snippet system.

    Snippet System

    Participants were looking for a less time-consuming method to organize code efficiently. The timestamped segment (0:11 - 0:14) demonstrates how the snippet system in Prescode enables users to highlight, select, and group code to create snippets. These snippets are then added to the composition window, where users can track the composition and build order of each code snippet.

  • Prototype concept video showcasing the notes system.

    Notes System

    Participants were using external note-taking tools or adding notes directly to their code, which affected code readability. The timestamped segment (0:03 - 0:16) demonstrates how the notes system in Prescode helps participants add presenter notes to their code presentations without cluttering the code. These notes are displayed on a dedicated presentation screen during code presentations.

  • Prototype concept video showcasing the action system.

    Action System

    The concept of using the action tool in Prescode aligns with participants' needs to automate tasks like deleting, replacing, and updating code during presentations. By automating these tasks, developers can reduce errors and ensure a smoother presentation of their code projects.

  • Prototype concept video showcasing the presentation system.

    Presenting System

    The concept of Prescode addresses the challenges participants faced when presenting code using code editors and IDEs. By automating presentation tasks, such as typing code and managing errors, Prescode enables developers to focus on delivering a smooth and effective presentation without the frustrations and distractions previously experienced.

  • Prototype concept video showcasing the snippet system.

    Snippet System

    Participants were looking for a less time-consuming method to organize code efficiently. The timestamped segment (0:11 - 0:14) demonstrates how the snippet system in Prescode enables users to highlight, select, and group code to create snippets. These snippets are then added to the composition window, where users can track the composition and build order of each code snippet.

  • Prototype concept video showcasing the notes system.

    Notes System

    Participants were using external note-taking tools or adding notes directly to their code, which affected code readability. The timestamped segment (0:03 - 0:16) demonstrates how the notes system in Prescode helps participants add presenter notes to their code presentations without cluttering the code. These notes are displayed on a dedicated presentation screen during code presentations.

  • Prototype concept video showcasing the action system.

    Action System

    The concept of using the action tool in Prescode aligns with participants' needs to automate tasks like deleting, replacing, and updating code during presentations. By automating these tasks, developers can reduce errors and ensure a smoother presentation of their code projects.

  • Prototype concept video showcasing the presentation system.

    Presenting System

    The concept of Prescode addresses the challenges participants faced when presenting code using code editors and IDEs. By automating presentation tasks, such as typing code and managing errors, Prescode enables developers to focus on delivering a smooth and effective presentation without the frustrations and distractions previously experienced.

Conclusion

I managed to accomplish my main tasks and goals of identifying and understanding the pain points of software developers who present programming presentations via user-centered research. However, the case study remains inconclusive. I failed to conduct a user test because I could not get a working high-functioning prototype worthy of producing quality user feedback. Even though user problems and opportunities were identified in the generative study, I could not validate/invalidate my 4 systems created to solve the user's problems, thus I wasn’t able to create measurable metrics. As of yet, the case study remains open and active awaiting an opportunity to get a technical working prototype of Prescode for user testing.

Conclusion

I managed to accomplish my main tasks and goals of identifying and understanding the pain points of software developers who present programming presentations via user-centered research. However, the case study remains inconclusive. I failed to conduct a user test because I could not get a working high-functioning prototype worthy of producing quality user feedback. Even though user problems and opportunities were identified in the generative study, I could not validate/invalidate my 4 systems created to solve the user's problems, thus I wasn’t able to create measurable metrics. As of yet, the case study remains open and active awaiting an opportunity to get a technical working prototype of Prescode for user testing.