trendscenter / coinstac

Collaborative Informatics and Neuroimaging Suite Toolkit for Anonymous Computation
MIT License
45 stars 19 forks source link

Build out a plan to address important user experience improvements #1427

Open praeducer opened 2 years ago

praeducer commented 2 years ago

After the mid-May progress report, we can kick-off a UX Milestone. The business goal here is to get this app ready for wider adoption. This task ties into our future business development initiatives.

Besides the main goal of improving our user experience, this Milestone can be a way to test out our latest approaches to product planning and project management. As in, pursuing this Milestone will test the latest iteration of our application development lifecycle and how we implement it here in Github.

Any new processes that we standardize could be documented in wikis such as the Planning and Architecture Wiki.

praeducer commented 2 years ago

I can meet with Javier, Ross, and Sandeep before mid-May to make some high-level decisions.

Consider including documentation tasks (even things like tutorials) in this plan too.

praeducer commented 2 years ago

We’ll experiment with this as a new implementation of an agile lifecycle after the progress report is done, after Vault’s are released and adopted, and after the latest release is stable.

praeducer commented 2 years ago

For my working session with Sandeep today, I focused on gathering requirements such as:

  1. What meetings do we want to plan for? eg retrospective on what we've accomplished so far this year and how we can improve, user requirements gathering, technical architecture, visual UX design, sprint kick off, weekly dev only meetings, new version deployment, and user acceptance testing.
  2. When should we meet with tech leads for our design and architecture session? Who all should be included?
  3. What dev tasks do we want to prioritize and how long will they take?
  4. Can we interview users before this starts? Who can test our new experience when it is done?
  5. How should we handle bug fixes that come out of user acceptance testing?
  6. What agile techniques do we want to adopt for this UX milestone versus future milestones?
  7. What does our ideal product / application development life cycle look like? What steps can we experiment with during this UX milestone?

An outcome of this session will be a set of activities we commit to as a team, when they will occur overtime, and who will be involved.

praeducer commented 2 years ago

User Experience Current Phase Project Plan

Week 1

Agile Activities

Application Development Lifecycle Stage

These meetings may each take 1-2 hours a piece, plus asynchronous edits to the plans throughout the week

  1. Requirements analysis: Gather UI/UX issues for the team to commit to. The outcome is all known issues are entered into the Application Development Project Board and User Experience Milestone. - Sandeep and Vince
  2. Feasibility study: Perform issue estimations and issue prioritization to decide what should be accomplished during this milestone. This should build off of the requirements gathering and analysis stage. Make sure to handle large pivots to the plan, design, or architecture. Make sure to identify the bigger issues and blockers related to each task. Think long-term of how all of the changes interact. - Sandeep, Javier, Ross, and Paul.
  3. UI/UX design: Rough visual designs for key features. Make an update to the design of the full user experience journey. - Javier and Sandeep
  4. Technical architecture: Current and future phase architectures relevant to these UX features. - Paul, Ross, and Dylan on LucidChart

Week 2-4

Agile Activities

Application Development Lifecycle Stage

  1. Build: Close out issues. It's ok to iterate on things like requirements, design, and architecture. Just make sure to update the project timeline and stakeholders.

Week 5

Agile Activities

Application Development Lifecycle Stage

Thursday or Friday

  1. Code freeze! Stop doing new stuff. Focus on deployment and bug fixes.
  2. Staging Deployment: Deploy a new release of the product to a staging environment.

Week 6

Agile Activities

Application Development Lifecycle Stage

  1. User acceptance testing: Have subject matter experts test all new features and related improvements. - Vince, Sandeep, Kelly, and computation authors.
  2. Integration testing and QA automation: Establish ways to perform end-to-end testing for the full stack application making sure to include any distributed components such as web services in the cloud. Make automated testing more robust. Run automated tests. For this phase, make new tests relevant to the theme of the milestone: UX.
  3. Maintenance: Bug fixing! Listen to users and turn the results of QA tests into development tasks to do.
  4. Production Deployment: Deploy the final product.
praeducer commented 2 years ago

Let's iterate on this plan for the next week, start soft pitching it to people, then present the plan more formally with at least Ross and Javier mid-next week.

praeducer commented 2 years ago

@pixelsaurus and @rssk Over the next week or so, would love your feedback on the above first draft to the UX project plan. Maybe mid-to-late next week, we can jump on a call to finalize things before presenting to the broader team.

praeducer commented 2 years ago

I hope to standardize and create a multi-stage deployment environment before build begins. Please share any other related tasks here.

rssk commented 2 years ago

I think right now what is really standing in the way of getting a CD system in place is how to manage the docker usage of the remote pipeline side. The pipeline server need to share filesystem mounts and be able to programmatically launch containers, I'm unsure of how to do this outside of just installing docker in an ec2 instance

praeducer commented 2 years ago

In the design session, let's make sure we discuss the future of @pixelsaurus' compsec/input spec helper tool:

Screen Shot 2022-05-05 at 4 25 40 PM
praeducer commented 2 years ago

Another topic is integrating the COINSTAC and BrainForge experience.

praeducer commented 2 years ago

For my heads down work, it would be best for me to focus on DevOps things like multi-stage deployment.

praeducer commented 2 years ago

Per @spanta28, let's commit to starting a DevOps and clean-up sprint first for a couple of weeks, then we can make sure our operations are solid before starting the UX work.

I'll work on this devops plan this week then. This would total 8-weeks of effort (with devops + UX).

praeducer commented 2 years ago

Before the user experience improvements start, we want a dev and staging env ready to go. This way we can deploy and test along our application development lifecycle more easily.

For the two-week DevOps sprint, let's move the retrospection and clean-up activities to the first week of the DevOps sprint and then the requirements analysis for the UX work to the second week of the DevOps sprint. This would position us really well for the rest of the activities listed above for the six-week user experience milestone that would follow this DevOps effort.

This will make sure our ops infrastructure is tight and that the team gets some rest before we go hard again.

praeducer commented 2 years ago

Javier would like a QA, user interview type session.

praeducer commented 2 years ago

Javier will be out June 3rd through June 30th.

Paul is out last week of May, this month.

praeducer commented 2 years ago

After this milestone, we need to focus on re-architecture, decoupling, and reducing technical debt.

praeducer commented 2 years ago

The biggest obstacle for success right now is that we need to develop COINSTAC to run on clustered environments. Also, how do we handle cloud-native serverless integrations?

praeducer commented 2 years ago

Ross will be out likely first week of June.

praeducer commented 2 years ago

I will schedule, create an agenda for, and run three sessions next week:

praeducer commented 2 years ago

This plan is essentially the current iteration of our goal to standardize our software development and data science lifecycles.