Project Overview, and Working with Clients UNC COMP 523 Wed Aug 12, 2020 Prof. Jeff Terrell 1 / 40
First, a word from Peter Liao Commercialization Manager UNC Office of Technology Commercialization Email: liaopb@unc.edu 2 / 40
announcements lecture recording posted to web site (as of Mon. evening) will generally have recording posted by evening or next morning won't announce anything about recordings from now on project/client applications are posted on the web site will post more details as they're available e.g. client-provided titles/summaries and slides I noticed the PDF version of slides is a little weird, FYI Project Overview & Working with Clients 3 / 40
agenda 1. narrative arc of a project 2. working with clients 3. picking a project 4. assignment 0: pitch preferences Project Overview & Working with Clients 4 / 40
agenda 1. narrative arc of a project 2. working with clients 3. picking a project 4. assignment 0: pitch preferences Project Overview & Working with Clients 5 / 40
narrative arc of a project . understand what's needed . storyboard . prototype . iterate . launch . hand off Project Overview & Working with Clients 6 / 40
narrative arc of a project 1. understand what's needed 2. storyboard 3. prototype 4. iterate 5. launch 6. hand off Project Overview & Working with Clients 7 / 40
1. understand what's needed $5 word of the day: desiderata , i.e. "what's desired" obviously, you'll need to talk to your client for this understanding is progressive : start with the high-level view successful projects need ongoing communication between devs and client to deepen understanding as things unfold critical element: feedback loops , to reflect and improve your understanding (we'll come back to this) output of this phase: user stories Project Overview & Working with Clients 8 / 40
user stories to avoid getting sucked into fun technical questions, I recommend capturing requirements as user stories template: "As a <role> , in order to <goal> , I can <describe feature> ." example: > "As an authenticated user, in order to keep up with my friends, I can see a note the first-person perspective, which helps you focus on value delivered rather than implementation details after creating user stories, invite feedback from your client (better to discover misunderstandings early!) user stories are Assignment 3 Project Overview & Working with Clients 9 / 40
narrative arc of a project 1. understand what's needed 2. storyboard 3. prototype 4. iterate 5. launch 6. hand off Project Overview & Working with Clients 10 / 40
2. storyboard developing software is a creative act like other substantial creative acts, design is helpful other designed things have a design artifact to guide implementation Project Overview & Working with Clients 11 / 40
(from here) 12 / 40
(from here) 13 / 40
2. storyboard (2) goal: create a design artifact for the app that will guide implementation challenge: more views than a blueprint challenge: not linear like a storyboard for a video solution: a "clickable prototype" Example Project Overview & Working with Clients 14 / 40
2. app storyboards: clickable prototypes not a live app prescripted; a canned experience but it looks and feels like the real thing, including navigation to different screens can do it lo-fi ("wireframe" or sketch-like) or hi-fi ("pixel perfect") this is extremely valuable both: - to reflect a _very concrete_ understanding to the client early - to synchronize the dev team about what to build after creating clickable prototype, invite feedback from your client (better to discover misunderstandings early!) Project Overview & Working with Clients 15 / 40 if there's a misunderstanding far easier to change this than an interface embodied in
narrative arc of a project 1. understand what's needed 2. storyboard (clickable prototype) 3. prototype 4. iterate 5. launch 6. hand off Project Overview & Working with Clients 16 / 40
3. prototype story: my high school team programming project my failure: only connecting everything together at the end one problem: client can't see in-progress app; feedback loop is destroyed another problem: this is stressful! and you might fail to deliver anything useful! my approach: integrate first to create a "walking skeleton" integrate the frontend, backend, database, infrastructure, etc. before adding features then you can develop with confidence and invite feedback at every step of the way this is hard, but worth it; tackle this sooner to avoid your future self cursing you this is Assignment 8 Project Overview & Working with Clients 17 / 40
narrative arc of a project 1. understand what's needed 2. storyboard (clickable prototype) 3. prototype (walking skeleton) 4. iterate 5. launch 6. hand off Project Overview & Working with Clients 18 / 40
4. iterate with a clickable prototype done, you know the target with a walking skeleton done, the foundation is laid and deployment is a known quantity so working on features is relatively straightforward (and hopefully parallelizable) a feature isn't done until it's deployed for the client to see and it's not really done until the client has given feedback on the feature: either a thumbs up or requests for changes don't forget to add tests! (Assignment 11) Project Overview & Working with Clients 19 / 40
narrative arc of a project 1. understand what's needed 2. storyboard (clickable prototype) 3. prototype (walking skeleton) 4. iterate 5. launch 6. hand off Project Overview & Working with Clients 20 / 40
5. launch you've already deployed all your code (see Step 4) this is more about releasing the app to its users maybe start with alpha and beta testers and invite feedback getting a diverse set of perspectives can uncover bugs and issues this is not required for a COMP 523 project, but nice for client often this requires more of the client than the developer, e.g. actually publishing the app in the App Store, marketing, etc. Project Overview & Working with Clients 21 / 40
narrative arc of a project 1. understand what's needed 2. storyboard (clickable prototype) 3. prototype (walking skeleton) 4. iterate 5. launch 6. hand off Project Overview & Working with Clients 22 / 40
6. hand off write a README.md file with everything a CS friend of yours would need to know to start working on this project (Assignment 12) write another document (preferably in-repo) describing the project to your client, paying attention to where code lives and where the various application components and services live (Assignment 13) share the client overview with your client, and ensure they have access to the code if client doesn't own infrastructure, transition it to be owned (and paid for) by client Project Overview & Working with Clients 23 / 40
summary understand what's needed, and invite feedback create a clickable prototype, and invite feedback create a walking skeleton, to enable feedback - integrate and deploy frontend/backend/database first - client should be able to see and use fledgling app iterate on features, and invite feedback (optionally) launch, and invite feedback hand off the project, and invite feedback Project Overview & Working with Clients 24 / 40
agenda 1. narrative arc of a project 2. working with clients 3. picking a project 4. assignment 0: pitch preferences Project Overview & Working with Clients 25 / 40
Working with clients Clients are connected with some need that software might could meet You are connected with software development skills This can be a fruitful collaboration, if a bridge can be built between these two worlds Project Overview & Working with Clients 26 / 40
A bridge from the client Your responsibility is to understand the need the client brings What is the need? Why is it important? Who would actually benefit from software? What range of things would meet the need? (E.g. spreadsheets, a Trello board, etc.?) Story: creative solution to autofocus issue Is there a need under the need? Story: admin panel for managing whitelist of allowed users Project Overview & Working with Clients 27 / 40
A bridge to the client Your responsibility is to educate the client about software What can software do in general? What kinds of things are within the reach of your skills? What kinds of things are possible but would take a while? Note: some clients already understand software. But even they can't tell you what's within your reach. Project Overview & Working with Clients 28 / 40
A healthy collaboration A healthy client/developer relationship is one in which: the developer understands what the client wants the client listens when the developer talks about costs, constraints, and tradeoffs the developer trusts the client to temper their expectations in light of technical constraints the client trusts the developer to work diligently and be honest the client can make choices about priorities among features informed by developers indicating approximate effort e.g. that highly desired feature isn't as interesting if it's either that or 10 other less desired features Project Overview & Working with Clients 29 / 40
Recommend
More recommend