Jeff Terrell: Okay, go ahead and get started here i'm going to skip the MIC this time prosper problems, it was worth everybody's attention, please.
Jeff Terrell: Thank you we're going to get started now.
Jeff Terrell: Ross is actually going to start us off he has another class to get to so i'm gonna let him introduce himself, he is our ta and rush take it away.
Jeff Terrell: Who are ya.
Jeff Terrell: Good afternoon, everyone i'm barrage them recently matriculated in the SMS program here.
Jeff Terrell: So I got a nice amount of experience with soccer hearing work with Amazon this past summer and summer before that it's a small tech company or.
Jeff Terrell: Also do that or project management so hopefully i'll be able to bring those skills with you guys over the Semester and try to my goals my goals with you guys in this pastor.
Jeff Terrell: Encourage you guys to take ownership of like whatever project you're doing and like understand the full complexities of it, as well as as well as out to travel piece of it.
Jeff Terrell: All right, and Raj will be potentially meeting with a handful of you project teams, depending on how many mentors we can line up between now and the time we need mentors and and maybe some other things as well, but so anyway alright so let's let me.
Jeff Terrell: figure out I need to rearrange the screens a little theater so that everybody can see you.
Jeff Terrell: Okay.
Jeff Terrell: um yeah so Peter is here to talk to us, you all, will have a decision to make in terms of your clients that you pick the projects that you're interested in some clients are going to need you to sign.
Jeff Terrell: An IP agreement, intellectual property and non disclosure as well well confidentiality I think i'd be part of it anyway.
Jeff Terrell: here to talk about those issues you do not have to sign those forms, if you do not want to if you're willing to that will open you up to more options.
Jeff Terrell: But if you're not that is totally fine, I think, right now, the number is seven out of 30 clients are are wanting to use those forms using use those agreements.
Jeff Terrell: And so Peters here to help inform you about the choice that you have to make about whether to engage into that agreement or not so Peter go ahead.
Peter Liao: it's nice to join you got started last.
Peter Liao: little bit about about that.
Peter Liao: I work with technology.
Peter Liao: And we made.
Sure church and find the.
Jeff Terrell: Company, so we.
Jeff Terrell: use all the time and worked with the office of university Council the attorneys for the university to draft the agreements that you'll get For those of you that elect to join teams or consider joining teens and clients.
Peter Liao: That have asked for this and the purpose behind this the reason that clients asked for this is that.
Peter Liao: They you know, are working to build value in their effort their team their company and want to have access and the ability to commercialize the work that they have and oftentimes that involves.
Peter Liao: Retaining or obtaining some control over that intellectual property, so you know I think this is another reflection of kind of the real world situation that you may know, get into.
Peter Liao: working as a consultant or working as a developer right or if you go to work for Amazon right there are some client or your employer who will own the output of your work so it's not.
Peter Liao: You know, an exceptional circumstance in the real world, I think kind of others kind of having own ownership and access for the work product that you do is pretty commonplace, so there are.
Peter Liao: two documents that you will receive if you're on one of these teams, one is an overview of kind of the scenario and the situation explains kind of the general rules and.
Peter Liao: The special circumstances of these this particular case where the client is seeking.
Peter Liao: To have that assignment of ownership and then the second form will be the actual agreement that you fill out and sign.
Peter Liao: It will be specific to you and the client that you're working with and will have two parts one is an assignment of your ownership rights and just that particular project.
Peter Liao: We all signed with unc and then unc has the ability, then to carry forward and assignments rights to the client and then the second half as Jeff alluded to is the confidentiality.
Peter Liao: of each piece right this non disclosure in that you know if a third parties, some of whom, maybe unc faculty maybe external companies, but they have some interest in that intellectual property.
Peter Liao: And may share things that are have not been published right that are not publicly known and they're seeking to keep those.
Peter Liao: potential and.
Peter Liao: you're making a commitment to not sharing that information or other than yourself, or what is needed for the project.
Peter Liao: So those are the two commitments i'm glad to kind of get a chance to review on these if you have questions you know i'll be in touch by email, and certainly welcome to reach out to me that way.
Peter Liao: Hopefully, next week, starting next week I should be spending time in citizen, I actually have an office on the second floor there.
Peter Liao: So maybe it would have you know some some questions that way as well and i'm happy to talk with you about specific questions specific to you know these particular forms this particular class or.
Peter Liao: If you have other questions about you know the commercialization patents copyrights Those are all things that fall into her house happy to discuss those at any time as well.
Jeff Terrell: Great Thank you Peter.
Jeff Terrell: Okay now to rearrange the screens again.
Jeff Terrell: Any questions for Peter before we transition to something else.
Jeff Terrell: Okay, great and as Peter said he is available over email he'll even consider some as well, so definitely.
Jeff Terrell: ask him if anything comes up later.
Jeff Terrell: Okay.
Jeff Terrell: Alright, so lecture notes are online today we're going to be talking about the me make this bigger project narrative Arc Just to give you an overview of what to expect with your project kind of what the different phases of work are.
Jeff Terrell: And will also be giving you some tips about working with clients and setting expectations are kind of how that can work out and work well, what are some dysfunctions and maybe some things to look out for as you're trying to decide.
Jeff Terrell: Who you're going to work with and what projects are interested in.
Jeff Terrell: Okay.
Jeff Terrell: Alright, so we just heard from Peter.
Jeff Terrell: Some announcements before we dive into the electric content.
Jeff Terrell: The lecture recording is posted to the website if anybody needs to go back and looked at that I will warn you, the quality was really kind of is kind of crappy.
Jeff Terrell: And so right now and trying to different approach, I think it's going to work better i'm actually just bypassing the in Room system and not using the lav MIC or anything so.
Jeff Terrell: I hope that's going to work out better for the recording everything.
Jeff Terrell: Generally speaking, I I try my best to get a recording posted then night after I lecture or at least you know the afternoon after I lecture or maybe the morning after so um so you can expect that to show up on the website pretty early.
Jeff Terrell: And i'm not going to be announcing this every time I post the recording is just going to be standard so.
Jeff Terrell: The project and client applications, there are posted on the website so if you go to the projects tab of the website I should pull that up now, so you all can see it here as well.
Jeff Terrell: We have there's some information about intellectual property kind of similar stuff that what Peter was just not talking about there's a list of clients here.
Jeff Terrell: And we have a ton of clients who are interested in working with you this is actually I think the largest offering a COMP 523 ever and if it isn't then it's at least the largest.
Jeff Terrell: set of clients coming to pitch i'm pretty sure that at least.
Jeff Terrell: So i'm a little bit ambitious here, trying to try to allow more people to take on 523 You might remember from last time that most students strongly agreed with the idea that warm CS students should take tough engineering take this class so try to open that up for more people.
Jeff Terrell: I ran out of.
Jeff Terrell: letters I just moved to Greek letters for these clients, but this is going to be unless something changes the pitch order so we'll have 15 clients coming to pitch on Monday.
Jeff Terrell: 15 more coming on Wednesday of next week and you will submit your project preferences by Friday 8am so that I can try to do matchmaking Friday morning before class next week.
Jeff Terrell: But this is all the details so feel free to look that over this can be a reminder, after the pitches or even before if you want to do some work before to to look into things.
Jeff Terrell: But they have the clients have supplied a project title and description and I haven't heard from all of them quite yet, but we're getting there.
Jeff Terrell: Is a lot of details to wrangle here but we're almost there.
Jeff Terrell: And the pitch if they make it available will be here as well, but sometimes there are some additional materials that they've uploaded and you can also see the full application that they submitted to become a client.
Jeff Terrell: So there's a lot of information here, probably more than you'll actually want to read, but it's there in case you need it.
Jeff Terrell: And i'll keep posting stuff there as it comes in.
Jeff Terrell: So the PDF version that you know what I didn't actually do a PDF version, because it was weird nevermind.
Jeff Terrell: i'm Daniel with students in this class mentioned that there is that the textbook that I required for the course is available online through library at unc EDU.
Jeff Terrell: You all can check that out there's a link in the slides as well, but be aware, a couple things one is that there might be a limit as to how many people can access that simultaneously.
Jeff Terrell: And two is that Daniel reported their kind of bottom of each page is cut off so not the best digital version of the book, perhaps, but some so you might be better off still just buying the book, but that is an option potentially if you can't do that or have difficulty with that.
Jeff Terrell: um any questions before we dive into the.
Jeff Terrell: Agenda for today.
Jeff Terrell: Okay alright, so now we're going to talk about the narrative arc of a project.
Jeff Terrell: we're also going to talk about how to work with clients what to expect.
Jeff Terrell: i'm going to give you some ideas and tips on how to pick a project, because that will be your task next week, as you look at all the pitches and then i'll talk about assignment zero the pitch preferences, which is going to be to next Friday at 8am.
Jeff Terrell: So start with the narrative arc of a project.
Jeff Terrell: The idea of the narrative Arc or project, by the way, this is, this is the overview we're going to dive into more details on all of these topics later in the Semester my goal for today is to give you just a sense of all of these different steps of a project.
Jeff Terrell: But i'm going to be skipping and leaving out a lot of details that i'll cover later on.
Jeff Terrell: But just wanted to give you a sense yeah so first step is, you have to understand from your client what's needed they're, the ones who know what's needed.
Jeff Terrell: And they're going to have to transfer that information into your head transfer that vision into your head and that's your job to learn.
Jeff Terrell: Ryan and reports that if you download the PDF the pages are not cut off so that's really good information in the textbook.
Jeff Terrell: No polls, yet right Linda asks okay.
Jeff Terrell: second step for a project is to do design for what the project is going to be i'm going to talk about each of these and more detail third step prototype.
Jeff Terrell: prototype and then iterate on that prototype to implement various features that are included launch that that might be optional, you might put it in APP store or release it to the public.
Jeff Terrell: that's optional for this course we'll talk about that and hand it off to the client, because you all, presumably are going to walk away from this project at the end of the Semester.
Jeff Terrell: And so you need to make sure that your client is in a good position to be able to help other people pick that work up when where you left off and continue that work as needed.
Jeff Terrell: And yeah we will dive into all this later in the Semester, as well as starting right now we'll get one layer deeper now and then we'll get another layer deeper later on.
Jeff Terrell: To understand what's needed, so the $5 word of the day desert radha all right, if you haven't heard that word before I hadn't I didn't learn that word until I was.
Jeff Terrell: Asked college that's for sure, but it's a fancy kind of Latin word that means what's desired that which is desired.
Jeff Terrell: Alright, and that's what you're trying to understand your client has desire, the client has a vision and your job is to understand what they are desiring so you're trying to learn that does it the Rada of your project.
Jeff Terrell: You will need to talk to your client to this they're, the ones who understand it and.
Jeff Terrell: Understanding, this is a progressive thing you're going to start much like we're doing with this these topics here you're going to start with a high level understanding about what they want, maybe it's something as simple as just the project title might be the very first.
Jeff Terrell: stroke of understanding of what you're going to be building, but then you're going to be.
Jeff Terrell: diving in deeper to various aspects of what your client wants and needs and this understanding is a progressive thing that you'll understand more and more deeply, as you go what's going to kind of unfold, as you dig in.
Jeff Terrell: Successful products need ongoing communication between Dev and client to deepen understanding as things unfold, so you need to maintain that line of communication, keep it open.
Jeff Terrell: keep getting feedback to communicating and this is why I generally recommend bi weekly to weekly meetings with a client, so that you can continue to have those conversations and ask questions and understand the desperado more deeply.
Jeff Terrell: So I wanted to show you I just love this oh I forgot to show the book in the library catalog so that's there.
Jeff Terrell: I just love this illustration koalas to the Max calm right so i'm trying to illustrate here, what is your understanding of desert radha look like is this semester progressive anybody seen this, by the way, quality to the Max calm no okay right check this out.
Jeff Terrell: As you hover over circles.
Jeff Terrell: The circles break up into smaller circles.
Jeff Terrell: And there's actually a picture that you're revealing.
Jeff Terrell: Of a Koala.
Jeff Terrell: All right kind of silly.
Jeff Terrell: silly this is this is you understanding what does it all right, you did it.
Jeff Terrell: This is going to be the process all semester long as you talk to your clients understanding more about what they want, like you're going to ask.
Jeff Terrell: hey What about this feature and then tell me more about this Okay, what about this feature over here.
Jeff Terrell: Tell me more about this because it's about time for me to start implementing it for us to implement it hey What about this one over here all right let's talk about it let's figure it out, you get the idea.
Jeff Terrell: OK.
Jeff Terrell: So the critical element here is feedback loops to reflect your understanding back to the client and they can understand how will you understand and then reflect back you're getting a feedback loop about.
Jeff Terrell: Am I understanding this correctly and, if not let's correct and figure out what where Am I.
Jeff Terrell: Okay, so the output of Stage one of the project is user stories, this is a way to capture your understanding and to reflect your understanding back to the client to refine as needed.
Jeff Terrell: So what is it user story.
Jeff Terrell: All right, one of the challenges is one of the pitfalls that you might have as a developer, presumably.
Jeff Terrell: You maybe enjoy programming or enjoy some aspects of APP building and it's easy to get sucked into technical questions and technical concerns who What about this new language, what about this new.
Jeff Terrell: This new thing that I could use and so to avoid kind of getting sucked into that and lose sight of what you're trying to deliver to the client.
Jeff Terrell: User stories can can help with that, so the template here is as a role and certain role here in order to insert goal here, I can, and then describe feature so, for example, as an authenticated user.
Jeff Terrell: In order to keep up with my friends.
Jeff Terrell: I can see a list of recent posts from my friends most recent first.
Jeff Terrell: We can read that and understand what's needed at a high level we haven't talked about exactly what it needs to look like or who your friends are or whatever, but this is capturing something very real about what the client wants from the APP it's a really concise capturing of.
Jeff Terrell: The first person perspective is actually kind of useful and important to say, I can see a list of recent posts from my friends, one of the things that that accomplishes is to help you stay focused on delivering value to the client rather than getting sucked into the implementation details.
Jeff Terrell: And then feedback loops show your user stories to your client invite them to comment on it say you know, is this right is this not right, what would you change what have I missed.
Jeff Terrell: The idea here at every step of the way, is that if you get feedback from your client at that stage it's a lot easier to course correct then than it is to course correct later.
Jeff Terrell: Alright it's super easy to change your user story it's a lot harder to change a feature that you've already implemented into.
Jeff Terrell: This is assignment three, by the way, we'll see that later in the Semester.
Jeff Terrell: Questions about user stories or understanding what's needed as at the raw.
Jeff Terrell: Okay justin shared a link to.
Jeff Terrell: The book online okay y'all were online i'm sorry i'm failing to keep an eye on the chat i'm going to try to do that, but.
yeah we'll see.
Jeff Terrell: Okay.
Jeff Terrell: second step of a project is to design it.
Jeff Terrell: This is a creative act and anytime you're talking about creating something that substantial.
Jeff Terrell: you're probably going to have some sort of a design face, and we see this for any kind of creative act if you're interested in design in general.
Jeff Terrell: Our own department founder Dr Fred brooks has a book called the design of design and he looks at design issues across different fields architecture and.
Jeff Terrell: Software maybe, maybe even things like art i'm not sure.
Jeff Terrell: But this is a creative act and so having a design phases helpful and producing an artifact of the design that you came up with is a an important part of what's going to help you guide your implementation as you're working on things so being able to refer back to.
Jeff Terrell: The design artifact so an example of a design artifact would be blueprints.
Jeff Terrell: Right, so we we have blueprints for houses that we built.
Jeff Terrell: This is the design artifact there's a there's a design phase right for designing a House you sit down and you work with the blueprint you figure out what is this floor plan going to look like.
Jeff Terrell: And you can iterate on this during the design phase right you say well you know, as I imagine this House.
Jeff Terrell: This part of the House would be kind of awkward let me, let me rethink that and you come up with a new design you iterate on it right it's just the design phase for a house.
Jeff Terrell: Or if you're wanting to produce some sort of a video maybe a short film or a movie or something like that the typical design artifact for a movie is going to be storyboards.
Jeff Terrell: here's an example of a storyboard from Mars, and if you look at this carefully you'll actually see some errors in this like I was just noticing today.
Jeff Terrell: Towards a this theme, or I think probably the supposed to be distant or.
Jeff Terrell: But you know, the point is it doesn't have to be perfect, this is just a way to get things out get out of your head and where they can be shared.
Jeff Terrell: notice also the six seconds is in the box up here but it's the low the box down here the point isn't that it's perfect the point is that it.
Jeff Terrell: captures the intent of what you're going to create, and this is going to guide the implementation, in this case of a movie or short film and, in our case of software APP.
Jeff Terrell: So our goal here for the design phase is going to be to create a design artifact the APP that will guide your implementation for the rest of the Semester.
Jeff Terrell: Now there's a few challenges here software is different than a house software is different than a short movie or film.
Jeff Terrell: Compared to a house software screen a software APP is going to have a lot more different views than you know, a House would be in terms of a blue a blue prefer house.
Jeff Terrell: If you think about all the different screens that your APP is going to have there's a lot, generally speaking, a single blueprint per floor of a house or building of some sort is sufficient.
Jeff Terrell: There are some details, if you really need to get into it, of like having different layers of electrical or water plumbing kind of stuff but, generally speaking, you know one one single design artifact for houses is pretty good and it's probably good enough to get the house built.
Jeff Terrell: it's not quite true, but maybe more true of a house and it is a software with software you've got like a ton of different screens, if you think about it.
Jeff Terrell: Any APP have any reasonable complexity is going to have a ton of different using it so that's a challenge and, unlike a video an APP is not a linear thing.
Jeff Terrell: Right so storyboard makes a lot of sense for a linear kind of thing, but it does not make sense for a software APP because users can go here, they can go there there's not just a single linear processor.
Jeff Terrell: So the solution here is some of you may have seen this kind of stuff before in previous projects, I was interested to see in your responses to the poll last time that so you have some significant project experience, which is cool.
Jeff Terrell: You may have seen this before, this is a clickable prototype.
Jeff Terrell: Alright, so the example I already have open here, this is one that I actually was involved in a couple summers ago.
Jeff Terrell: and actually did some work on a clickable prototype myself that helped me get a little bit more savvy on the design side of things.
Jeff Terrell: But this is a clickable prototype created by adobe xd we'll talk about tools and things later on, but if I look at this, this is not an APP.
Jeff Terrell: This is actually just a screen and if I just click somewhere it's going to show me that that blue part is the thing that I can click on to go somewhere else.
Jeff Terrell: So I click there, and this is the screen that I would see in that case, and I can click somewhere, and I can see the different things that I could click on.
Jeff Terrell: I can click on this and there's a different screen right, I can click on that different screen so um.
Jeff Terrell: So that's the idea of a clickable prototype and you can see that the idea of like a picture is worth 1000 words right, you could have very good sense of what we're trying to build by looking at this clickable prototype.
Jeff Terrell: And maybe you can't see all the details is pretty small but.
Jeff Terrell: But that's a very useful design artifact to have for software projects at least ones that involve a screen based July.
Jeff Terrell: So it's not a live APP but it actually kind of looks and feels like one it's a prescriptive can't experience.
Jeff Terrell: Not alive APP, but it is that looks and feels like the real thing, and so you can imagine how useful that would be as you're implementing something to have that in your back pocket to refer to you and say what does this look like again.
Jeff Terrell: kind of a spectrum of how much detail to including this, you can have pretty low five designs that are people have called them wire frames before anymore wireframe can mean high five but, but they can be pretty low Phi sketches or they can be what's called like a pixel perfect.
Jeff Terrell: prototype for screen.
Jeff Terrell: You have every pixel in the right place to pick exactly what fonts you want to use and so on.
Jeff Terrell: So this helps, this is a really great way to reflect your understanding back to the client, this is one of the huge wins for.
Jeff Terrell: Using a design clickable prototype prototype in particular is because you can send that off to the client.
Jeff Terrell: client doesn't need to know anything about software, but they can tell you they can start clicking through and saying this is awesome this is really what I wanted to have I maybe would change this piece over here that's not quite what I meant when I said this.
Jeff Terrell: But this parts great you know this gets a very, this is a very good way to check to see how much did I really understand from the client before you actually start committing to coach our.
Jeff Terrell: REPS are getting that feedback can help you discover any misconceptions or misunderstandings about what you're trying to build and having that early.
Jeff Terrell: is very nice right you haven't even started implementing it, yet, but you're already picking up on things that.
Jeff Terrell: you're not wasting time building because they're not what the client wanted you just know right off the BAT, this is not quite right so we're going to change it during the design phase iterate and easier to change at that point.
Jeff Terrell: it's also valuable to synchronize the Dev team about what to build right so everybody can get on the same page about this is the vision.
Jeff Terrell: And this is a sign a form factor user stories we will all be doing a clickable prototype.
Jeff Terrell: There are also other design artifacts these are more focused on the implementation it's probably less.
Jeff Terrell: of interest to your client so probably less important to get feedback on those things from the client, although getting feedback from maybe your mentor will be important.
Jeff Terrell: somebody who is maybe more savvy with implementation concerns those design artifacts would include your application architecture, so you have some decisions to make about how to.
Jeff Terrell: What architecture to use some of you, depending on your project will have more decisions to make than others if you're going to build an ios APP, for example, then you might have a pretty good sense of what the application architecture is going to be already.
Jeff Terrell: Another design artifact is the architecture diagram showing how the different major pieces of your application relate to each other.
Jeff Terrell: User other designer.
Jeff Terrell: Questions about design clickable prototypes anything that we just covered.
Jeff Terrell: Okay.
Jeff Terrell: How many of you would think and you don't have to raise your hands but think about like would you have thought to do a clickable prototype as one of the first steps of your project.
Jeff Terrell: You know, like if you just were talking with your clients.
Jeff Terrell: I don't know like I wouldn't have thought to do that i've had to learn that over the years, but this is actually really helpful to do.
Jeff Terrell: And it's a bit for me at least, it was counterintuitive I didn't really want to stop and design things and learn like design principles and how to use this other tool that are not familiar with.
Jeff Terrell: But it's it's actually been a huge help the more i've practiced doing that, the more successful projects that I work on have become.
Jeff Terrell: Okay.
Jeff Terrell: Step three is prototyping.
Jeff Terrell: Alright, so I want to tell you a little story about high school me.
Jeff Terrell: I was.
Jeff Terrell: let's see how can I say this, I was i'd love to program from a fairly early age, I discovered a lot for computers and learn a little bit about programming and kind of got hooked.
Jeff Terrell: And, at one point i'm sticking a programming class in high school and the final project, I think it was the final project.
Jeff Terrell: It was a team based project, and I don't even remember what we had to create, but I I sold my team on this vision of like you know we could create this like.
Jeff Terrell: It was all going to be in a in a terminal window, but we could create this this system of like windows that like opened up, and it would be.
Jeff Terrell: more like a graphical user interface, to do what we're trying to do, and everybody was on board with that we're all really excited about it, and so we set off to do it and.
Jeff Terrell: Just completely and utterly failed, it was a disaster got nothing working done in time had to kind of go to the professor and be like look we've worked so hard on this we stayed up all night last night we tried and it just isn't coming together, and it was a real lesson for me of.
Jeff Terrell: We hadn't Well, first of all, we bit off more than we could chew we tried to get fancy right and we should have just focused on getting it done first and then maybe making a fancy afterwards, if we had time i'd be a big lesson to learn.
Jeff Terrell: But the other thing that I learned was that we have kind of divided up the tasks of you work on this i'll work on that you work on this whatever.
Jeff Terrell: And we tried our things and we were going to just kind of put it all together, as the last step.
Jeff Terrell: But sure enough at least one of us, maybe several of us were running behind schedule on when we were going to get our pieces done, I know I was.
Jeff Terrell: And so we didn't really have time to get it all working together and we ran out of time, in the end, and then nothing worked, and so the idea of prototyping the The thing that I would like to emphasize, and this is not.
Jeff Terrell: I would say, this is not yet common practice and industry, so this is something that you're getting that it's it's not unique to me, I actually learned it from other people that I was hanging out with and learning from but.
Jeff Terrell: I would say that it's not yet common practice, maybe it will be, maybe it won't be.
Jeff Terrell: is to let's see yeah i'm kind of skipping over this, so my my approaches to integrate first to create what's called a walking skeleton and integrate meaning, you have your different pieces.
Jeff Terrell: start out by connecting those pieces together and making sure that they can talk to each other in a way that actually works don't implement all the features first.
Jeff Terrell: integrate all the different major pieces first and then you can start building your your application from there, adding your features as needed.
Jeff Terrell: So that's what you might call a walking skeleton, this is one of the assignments that you'll do later on, this is a major assignment, this is usually one that.
Jeff Terrell: is challenging it takes some time, it can be stressful but it's stress that you have earlier in the Semester, rather than at the very end of the Semester and I think it tends to make things work out a lot better.
Jeff Terrell: So if you integrate first and create a walking skeleton I guess i'll do this kind of in reverse order.
Jeff Terrell: Then the client can see the APP in progress as you're building it right you're working on some feature, and they can actually experience the the APP even though it's pretty bare bones and doesn't do everything, maybe you short circuited some things just to make it working.
Jeff Terrell: But they can actually see that future that you've been working on and see it takes shape and and you have it deployed, you have it accessible by them, so you have a good feedback loop there.
Jeff Terrell: and, hopefully, if you if you can do this well, then you will save yourself a lot of stress at the end of the Semester.
Jeff Terrell: Because you'll actually have something that's already integrated and working and all you're doing at the at the end of the Semester is just adding features.
Jeff Terrell: Alright, so so more specifically, you might have a front end of the code that runs on a user device, you might have a back end of code that runs on some server somewhere.
Jeff Terrell: You might have a database layer there might be some infrastructure stuff that you need to figure out to deploy and host and I would say, get that stuff figured out and working before you start working on features all right you're not going to want to.
Jeff Terrell: you're going to want to start writing code, but I think this is going to work out much better.
Jeff Terrell: And then you're developing with confidence right, you have you have a system that actually works, all together, and that's what you're iterating on that's what you're working with even in your development, environment, you get feedback at every step of the way.
Jeff Terrell: And that's assignment eight.
Jeff Terrell: Now I will say with authentication I kind of make it a little bit easier, I will say you can avoid integrating that for the walking skeleton assignment and work on that later, but that's The one thing that some that you can leave out.
Jeff Terrell: Questions about walking skeleton or prototype.
Jeff Terrell: Well we'll talk about it more when the time comes, but just give you a sense of what to expect for the Semester.
Jeff Terrell: Okay.
Jeff Terrell: At that point so imagine that you've finished all this you've collected your user stories, so you understand the desert burrata.
Jeff Terrell: You have a design, so you can refer to that and say this is what the future should look like when it's done.
Jeff Terrell: You have a walking skeleton and so you know that the entire system is connected and working together at that point you work on features and this part is actually I think kind of kind of fun kind of cool.
Jeff Terrell: You know where you're going, you know the vision, you know the details of what it looks like you don't have to mess with system issues, because you already got all that working.
Jeff Terrell: And so you're just working on features you're implementing stuff and hopefully that work is pretty parallelizable you've got three Members on your team and each each one can be working on something.
Jeff Terrell: In parallel.
Jeff Terrell: I will say when you're iterating on these features there's a couple things like when when are you done with the feature I know it's not when you have something just working on your local machine.
Jeff Terrell: In your own development, environment.
Jeff Terrell: Instead, you need to have it deployed, which probably is going to mean you need to have committed in version control.
Jeff Terrell: So you commit you push you deploy it somehow we'll talk about these things, and when the client can see it that's an important step for it it's closer than then, but even then it's not quite done.
Jeff Terrell: After that you invite feedback from your client right see this recurring theme of feedback getting feedback from your client and I doing this progressive understanding of understanding what your client wants.
Jeff Terrell: So you saying hey client I finished this thing, or at least I think it's finished tell me what you think you go and access to deployed APP and tell me if this is kind of what you had in mind.
Jeff Terrell: And maybe they give it a thumbs up and you're done it's done or maybe they say, well, I want to change this now that I see it, I think that's not quite what I want, and so, then you maybe bring it back and work on that instead.
Jeff Terrell: And tests are also important part of this will talk a fair bit about testing and the importance of automated software tests and different strategies for doing that, but I would say.
Jeff Terrell: i'm reluctant to consider something done if there isn't some amount of test coverage for that feature so we'll talk more about that later, but that'd be another thing to maybe add to your checklist before you consider something done.
Jeff Terrell: right questions about the iteration phase of the project.
yeah.
Jeff Terrell: How to test, like the ui i've never considered before yeah testing on.
coding.
Jeff Terrell: yeah testing like the backend stuff tends to be easier, there are ways to touch the ui and the front end and we'll talk more about that, but the short answer is.
Jeff Terrell: That you can do like an end to end test and if you're doing like a web APP there are ways of remote control sort of driving a browser through your APP.
Jeff Terrell: This would be what's called a browser test and a good tool for that would be Cyprus or selenium perhaps, but there are ways that you can actually tell your browser go to this page find this button click on this, you should see that and that'd be a way to test that from the users perspective.
Jeff Terrell: Other questions.
Jeff Terrell: Okay.
Jeff Terrell: Alright, so phase five lunch.
Jeff Terrell: So if you've already followed steps, three and four according to how i've specified it then you figured out during step three.
Jeff Terrell: And you're walking skeleton how to integrate everything together and how to get that that includes the infrastructure, like where I hosted how to deploy it and all that kind of stuff.
Jeff Terrell: And then step four is your iterated you continuously deploy everything that you finished up to the running system, and so in a certainly you've already launched a code.
Jeff Terrell: there's not a lot of difficulty to figure that out, if you actually get the walking skeleton and and and did your project that way.
Jeff Terrell: But this step five is really about Okay, now that the client, you know you've gotten maybe to the end of your work in the Semester.
Jeff Terrell: And the client is happy with it wants to release it to a wider audience that's what this is talking about so at some point when a project is done enough.
Jeff Terrell: Then it's time to actually get it out there, maybe on an APP store or out there on a website where just general public can access it.
Jeff Terrell: So that's what this is talking about.
Jeff Terrell: You might maybe not jump straight to general public, you might have some alpha testers and people that you know who are testing this out for you, you might have some beta testers that.
Jeff Terrell: opt in to be guinea pigs on your APP but you again are getting feedback, maybe not from our client, this time, but from these Alpha and beta testers.
Jeff Terrell: And this can help uncover bugs and issues in your APP.
Jeff Terrell: just getting that diverse set of perspectives, you know you somebody else say something you'd be like wow I never thought about that.
Jeff Terrell: And i'll say this step is the only optional step in complex 23 not every project is going to get to a launch phase and that's okay that's expected some of you might and that'd be great but.
Jeff Terrell: it's not an expectation, but it would be nice for the client if you can get that far.
Jeff Terrell: And a lot of times it's actually involves more work on the clients side than it does on your side, the client I would not expect any of you.
Jeff Terrell: to release something on an APP store the client would need to say Okay, this is what this APP is and give it a title to write a description do screenshots if needed, all that kind of stuff they would a content rating all that all that.
Jeff Terrell: kind of stuff is not thing it's not stuff that you need to do that stuff with the client review so.
Jeff Terrell: What there might be some support that you need to have so questions about the launch phase.
Jeff Terrell: And then finally handing off the project.
Jeff Terrell: So Simon is going to be to write a readme file, with everything that a computer science friend of yours would need to know to start working on the project, so the target audience, for that would definitely be one of your peers.
Jeff Terrell: And many times when a few projects actually go on to have a second iteration of third iteration in 523 so it's it's actually entirely possible that some of your peers may see your code and make sure your project in the future as they take Type two and three.
Jeff Terrell: So be aware of that and you'll need to write a readme file for that kind of an audience for somebody who's more or less you know at your skill level.
Jeff Terrell: To understand what needs to happen to work on this after the boy this APP what you know what kinds of things to make no have you run tests.
Jeff Terrell: And then you'll have another document with a different target audiences target audience would be your clients so having an some sort of the document written to your client describing where all the various resources live, and if you have an account on some sort of.
Jeff Terrell: cloud computing provider, you know, are you are you running a fire based project, you know what is the client need to know about managing that project so, for example, imagine later client.
Jeff Terrell: applies to come 523 again and gets another team, what are they going to need to know to do in order to transfer that project out of your hands and into the new developers hands.
Jeff Terrell: These are things that you need to document for your clients, so that you're actually able to use and improve on the code that you gave them.
Jeff Terrell: Not to sign with 13.
Jeff Terrell: Okay, of course, your client will need access to your code.
Jeff Terrell: So that's important and you don't want to write all the code and and fail to share it with with your client at the end.
Jeff Terrell: I recommend that your client pay for infrastructure and the infrastructure that you need.
Jeff Terrell: From the beginning, so if there is something that you're going to need as you're working on your walking skeleton and you're realizing i'm going to close the Amazon web services or something like that.
Jeff Terrell: i'd recommend getting your client create that account for you, and then you just use the account that they created, I mentioned that last time so.
Jeff Terrell: But if you fail to do that or for some reason you can't do that then make sure, by the end of the project that you have transitioned the live deployed act to be owned by a client.
Jeff Terrell: Okay question about the handoff phase.
Jeff Terrell: Okay, so to summarize the project narrative Arc first phase understand what's needed and, like the.
Jeff Terrell: second phase, create a clickable prototype invite feedback.
Jeff Terrell: third phase, create a walking skeleton to enable feedback.
Jeff Terrell: All right, integrated deploy the front end and back end database first that's the idea of the walking skeleton and then the client should actually be able to see this that.
Jeff Terrell: Many just iterate on features, this is Phase four and invite feedback on each feature.
Jeff Terrell: And you might launch this is an optional phase 523.
Jeff Terrell: And by feedback and then you hand off the project and you invite feedback on your client overview and your week me.
Jeff Terrell: And so I hope you're getting the idea that feedback is a really important piece of the complex 23 experience or it's an important part of any sort of software project, because you have to understand what to do.
Jeff Terrell: And that's the koalas to the Max idea you're you're getting more and more resolution about what your client needs as time goes on.
Jeff Terrell: So keep those lines of communication open.
Jeff Terrell: All right, let's transition to working with clients second agenda item for today.
Jeff Terrell: Okay.
Jeff Terrell: Alright, so the idea I wanted to give y'all a little bit of information about.
Jeff Terrell: Things.
Jeff Terrell: ways that you'll you're going to need to be working with your client ways to successfully work with your client.
Jeff Terrell: And this is also going to help you inform which clients, you might want to work with alright so you're going to be seeing 30 people come and pitch their ideas to you and you'll get a feel for.
Jeff Terrell: What kind of person is this client sometimes it's more than one client on a project as well, and you might get a feel for who these people are.
Jeff Terrell: And so you might ask yourself, especially based on some of the things that i'm going to say.
Jeff Terrell: Could this be a fruitful and productive relationship where do I see some significant challenges to overcome with this kind of person, so you know use your people sense, as you are looking at these pitches don't just evaluate them on on technical interest but.
Jeff Terrell: Think about the people as well.
Jeff Terrell: Okay, so second kind of a way of thinking about this, the clients of course are connected with some need that the software.
Jeff Terrell: But you're the one with the software development skills all right you're the one that, of course, can actually implement these things and.
Jeff Terrell: Create.
Jeff Terrell: So the whole idea of doing this kind of software engineering for a client, is that you need to build a bridge between these two worlds this world of implementation and creation in this world of vision and desire and preference all right.
Jeff Terrell: So your responsibility is to understand the need the client brings we've talked about this with face to face this one.
Jeff Terrell: What is the need, why is it important, who would actually benefit from the software.
Jeff Terrell: What range of things would meet the need there might be multiple different ways to meet some underlying me the client has maybe a spreadsheet with you just fine for them.
Jeff Terrell: Now i've already done some of this work already in advance for you also any projects that you see pitched probably a spreadsheet is not going to have it for them sorry.
Jeff Terrell: But it is important to be able to separate like you have particulars about your vision, but maybe there are other things that could meet that same need.
Jeff Terrell: So here's an example of that I was doing some freelance work a couple summers ago.
Jeff Terrell: And one of the things my client wanted, we had a page had a bunch of information on it and then at the bottom of the page they wanted this other little widget to be inserted into the page.
Jeff Terrell: That provided another view of some other system right and they're the users we're going to have an account on that system, and so this was a useful thing to have on this page.
Jeff Terrell: And so I put the iframe in the web page and it all work, the problem was that that that frame that I put in there.
Jeff Terrell: had some coding that in there that focused, one of the input fields, and so I happened is we load this page up and then the user gets to jerks down to the very bottom of the page, because that field is focused.
Jeff Terrell: And this code is out of my hands I don't have any ability to control what that code is doing, I can't disable the auto focusing what's happening and so i'm going I don't know what to do here and.
Jeff Terrell: I made various mistakes about how I handled that that you know you live and learn but.
Jeff Terrell: The solution to this was to put that on a different page right seems really obvious I had to kind of step away from the problem, and it was actually some other somebody else came up with this idea, but why not just put that on a different page yeah that works fine okay great.
Jeff Terrell: The point is, you know they asked for me to put that widget at the bottom of the page and that was what they said they wanted.
Jeff Terrell: But the question is, is there a need under the neat.
Jeff Terrell: Right so being able to not just understand the words that your client is saying, but actually like start to get into their frame of thinking get into their way of thinking in their perspective it's kind of a deeper level of understanding.
Jeff Terrell: is something that you can strive for that can really help your project succeed because at that point, you understand it's not really about.
Jeff Terrell: That it's on that page it's really about is it accessible to the users, so you can take a step back from the.
Jeff Terrell: This sort of letter of the law, about what the client had said they wanted and realize that there's a deeper thing that they they're wanting that you can be creative about how you meet that need.
Jeff Terrell: Another example, for this would be okay let's who you have a web APP out there, and you need to manage.
Jeff Terrell: who's going to be able to access this web APP so you have your signup form and users can go in and then.
Jeff Terrell: you realize, you need to sort of control, who actually has full access to this APP that you're creating so you're thinking okay they're just admin interface need to see a list of users.
Jeff Terrell: Only admins can see that list of users, so there's some authorization component and you start going down that trail.
Jeff Terrell: But what if you just don't allow anybody to sign up what if, instead, you have an email link you just generate a link to say here's your invite code Now you can sign up and you have control over who you share those things.
Jeff Terrell: Right so it'd be another case of Okay, if I need to control access to this APP maybe there are different ways of meeting that need maybe we get.
Jeff Terrell: going down a certain track and thinking of all this complexity, about one way to handle it, but if we take a step back and sort of think outside the box we realized that there's multiple ways to do that and there might actually be a really simple way to do it.
Jeff Terrell: So, again understanding the needs of the client is bringing you're building a bridge to a client.
Jeff Terrell: You also need to educate the client about software now you're going to be seeing some clients pitching.
Jeff Terrell: One of the things that you might want to think about is do these people sound like they would listen to me by tell them that this isn't possible or if I if I tell them something about software that maybe they don't know.
Jeff Terrell: That will be one of your jobs.
Jeff Terrell: So what can software do in general.
Jeff Terrell: There, there are limits to the state of the art and what software can do what kinds of things are within the reach of your skills that's another question.
Jeff Terrell: What kinds of things are possible, but would take a while and you just don't have that kind of time.
Jeff Terrell: Some clients already understand software, you know if I were a client I would understand software pretty well.
Jeff Terrell: But even I wouldn't be able to tell you how easy or hard, something is for you, because I don't know your skills, I don't know what kind of time you've sunk into learning this or that or whatever so you're the expert on that.
Jeff Terrell: And so you it's kind of your job to communicate such things to the client So if you have a healthy relationship with your client.
Jeff Terrell: Then you will understand what they want again ideally at a kind of a deeper level.
Jeff Terrell: And the client will listen to you when you talk about costs and constraints and trade offs.
Jeff Terrell: You will trust your client to temper their expectations in light of some of the constraints that you might bring up.
Jeff Terrell: And the client will trust you to be diligent about the work that you're doing to stay on track to to get your work done and put the time in and, to be honest about what the constraints really are.
Jeff Terrell: Ideally, the ideal working relationship here is that the client can make choices about priorities.
Jeff Terrell: Among features that's informed by developers indicating approximate effort.
Jeff Terrell: And so there's there's a component of this that comes from the client and a component that comes from the developer so as an example.
Jeff Terrell: The developer, or the client really wants this one thing done but then, when they learn that they can have that or these 10 other less important features, because this one is really going to be hard and take a long time.
Jeff Terrell: They might change their mind say well Okay, I really do, that is my highest priority but.
Jeff Terrell: If I really understand the costs of this which telling me is that i'm going to have to give up a lot of these other things, to get that so maybe that's not worth it now that I know what the costs are right.
Jeff Terrell: So if you can inform the client about how much time is each thing going to take to implement.
Jeff Terrell: You won't be perfect at predicting the future, of course, but just giving them some sense of that can inform what the priorities actually are, and that is a healthy working relationship right there.
Jeff Terrell: does require trust.
Jeff Terrell: Now there are some ways that this relationship and break down So these are things that.
Jeff Terrell: You might be aware of as you're thinking about clients to pick but also ongoing this would be if you experienced anything like this your mentor you're really good resource to talk to you about them.
Jeff Terrell: So if you're a mentor or you is not responsive when a question is asked.
Jeff Terrell: That starts to break down, you need to be able to get answers to your questions, even if the answer is, I don't know, let me think about it.
Jeff Terrell: just getting some sort of a response back is important.
Jeff Terrell: If you're dishonest.
Jeff Terrell: What you can do is use a technical smokescreen to hide a lack of skill, or lack of interest or.
Jeff Terrell: laziness or whatever you can you can come up with all kinds of technical sounding reasons that sounds plausible and especially if your client doesn't understand technology and the way the software is built.
Jeff Terrell: they'll be like oh Okay, I guess we'll have to do something else right, and so this would be that would be on you, I mean.
Jeff Terrell: I don't know what to say about that other than just be honest and if you if you don't know say I don't know and if you don't want to do something, then I mean you can say that, too, but.
Jeff Terrell: But don't it's it's close to lie right if you're just like using the smokescreen to say something that sounds plausible in order to get out of something.
Jeff Terrell: Another dysfunction will be if the client doesn't really know what they want all right, and this is something that you might be able to pick up on in the pictures pretty well.
Jeff Terrell: clients some some clients have this grandiose vision of the way a world should be, and they want to improve the world this way through the software, but they don't understand.
Jeff Terrell: Okay, getting down, you know feet on the ground, what does it actually going to look like.
Jeff Terrell: And so, when you start to get into that kind of question they'll say I don't know, I was hoping, you could figure that out, for me, all right, and maybe you can Maybe you can help with that, but that is more work for you to do to try to help them define what their vision actually looks like.
Jeff Terrell: A big dysfunction would be if the client doesn't listen when you talk about trade offs and technical constraints.
Jeff Terrell: So there will be times when you say well you know you'll maybe do some research and you'll figure out that this way of going about things it's going to be hard and it's going to take some time and it's it's going to cost money, or whatever.
Jeff Terrell: we'll talk about what some of those trade offs will be in just a second.
Jeff Terrell: And if your client doesn't listen to you and says well it's your job to figure it out we'll figure it out.
Jeff Terrell: or don't bother with me with these implementation details, this is not my job you figure it out, these are that's that's a dysfunction that's not a good thing.
Jeff Terrell: Now this is kind of the other side of the coin, so the technical smokescreen this function right if your if your client.
Jeff Terrell: doesn't have a lot of trust for you, they will behave that way, if you don't have a lot of trust for them, you might want to be more technical and maybe you aren't even dishonest, but maybe you'll find ways to help the project be successful working around their dysfunction so.
Jeff Terrell: I don't know it can be tricky but the key resource here is trust, and if you can have trust for your client and generate trust for them to have for you, then, that can help avoid a lot of this dysfunctions.
Jeff Terrell: Right so sometimes clients will think that's constraints that you come up with a really constraints about you and your skill level.
Jeff Terrell: And sometimes they are sometimes that's legitimate, but other times, these are fundamental constraints that the client thinks well if you're good enough engineer, you can get around this constraints and that's just not the case.
Jeff Terrell: That requires a little bit of understanding, to be able to identify which kind of constraint you're dealing with but, hopefully, you will have your client will have not trust for you that if you say, this is a fundamental extreme that they will be able to hear you.
Jeff Terrell: This one is kind of related to not really knowing what they want, but if the client can't be bothered to make decisions about things and says, well, I just pick something.
Jeff Terrell: Now, in some cases it really doesn't matter to the client and that's okay like if you say, well, you want to read me and markdown format or text porn I don't care.
Jeff Terrell: But other things like you're saying well how should user see this screen What should this look like and they say I don't I don't really care.
Jeff Terrell: I should take a step back even that is OK, for the problem really the dysfunction here is if it's just a perpetual pattern of like the client never wants to decide anything that's where it's a problem.
Jeff Terrell: Question so far healthy relationships dysfunctions trusts building a bridge to the client.
Jeff Terrell: And tracking so far.
Okay.
Jeff Terrell: Okay, so a few different flavors of constraints and trade offs for all the just having the back of your head as you're thinking about projects.
Jeff Terrell: And i've say trade offs are everywhere and creative projects to book the design of design I haven't finished yet, but.
Jeff Terrell: One of the things that just the repeated things that keeps coming up time and time again in all kinds of different creative projects is that.
Jeff Terrell: You have trade offs everywhere, you have constraints and you're trying to find some solution under some set of constraints and optimize for some set of priorities.
Jeff Terrell: And it's hard and it takes somebody skilled in the creation process we able to navigate all those different constraints and find a way to satisfy the the client, in the end at the end of the day.
Jeff Terrell: But the trade offs are everywhere so here are a few in software projects.
Jeff Terrell: So if you push one interface elements of the screen you got to push other ones down.
Jeff Terrell: And that seems obvious when you say it, but sometimes you just want to you want everything to be at the top, you want everything to be above the fold and you can't do that there's only so much real estate on the screen.
Jeff Terrell: And if you make everything highly noticeable is everything's important then you're going to dream users attention and then at that point, nothing is important there's only so much user attention to go around so as you're designing your screens.
Jeff Terrell: You got to think about which things actually really are more important than others.
Jeff Terrell: If you want faster servers you got to pay money.
Jeff Terrell: If you spend more developer time working on feature a you're gonna have less developer time working on features be through Z developer to developer, time is a constraint.
Jeff Terrell: So there's lots of these kinds of trade offs that stem from these fundamental resource constraints constraints on screen space constraints on user attention constraints on money constraints on developer time.
Jeff Terrell: Also constraints on quiet time I actually have so much time to dedicate to this project.
Jeff Terrell: Probably there are more that you could discover.
Jeff Terrell: So the important thing again is that both you and your client understand that these trade offs are there everywhere in a separate project, and they are fundamental they're not a function of developer skill, they are a function of fundamental limitations of resources.
Jeff Terrell: Right, these are finite resources that can be exhausted.
Jeff Terrell: So a good working relationship with your client, you will be able to tell them.
Jeff Terrell: These are the resources that we're dealing with, and these are the constraints we're going to spend this resource up and we're not gonna have any more.
Jeff Terrell: And you'll be able to help them make informed decisions about how do we, you know what do we prioritize and they'll be able to listen to what you say and respect the fact that those are real constraints.
Jeff Terrell: i'm going to skip technical debt I think we'll come back to that later in the Semester.
Jeff Terrell: yeah I want to be sure we have time for these other things well yeah 15 minutes we'll go through this briefly, I think I think everything okay technical debt, how it just quick show of hands who's heard the term technical debt.
Jeff Terrell: Okay, a few hands, maybe a quarter view.
Jeff Terrell: This is a useful concept to be aware of in software projects, this kind of goes back to the idea, I mentioned that.
Jeff Terrell: dissertations and software projects are never completed they rarely abandoned.
Jeff Terrell: And so, sometimes it's useful to maybe incur a little bit of debt to get something done when we talk about what that is some ideas, but that.
Jeff Terrell: The idea of technical debt is that you're taking shortcuts to get a feature done with short term benefit, but long term cost.
Jeff Terrell: exactly like that.
Jeff Terrell: You take out some sort of that maybe you swipe the credit card or maybe you take out a loan of some sort you get short term benefit for that, but there's a long term costume you gotta pay that debt back at some point.
Jeff Terrell: So an example in software would be if you skip writing tests for a feature, you can get it done sooner, but it's more likely to break later right.
Jeff Terrell: Right and so, if you if you're talking about credit cards, you also have this interest component like it actually costs more money.
Jeff Terrell: pay it back later than it would to just not take enough swipe the card in the first place, I took out that debt and the same idea actually happens in software as well, the more he sort of swipe the credit card, so to speak, and occur technical debt he.
Jeff Terrell: The more drag you have on your project as time goes on.
Jeff Terrell: So, for example, maybe you wrote, something that got the job done and some module of your code base but you really didn't take the time to organize it very well it's pretty sloppy.
Jeff Terrell: And that, over time, you know, maybe you need to extend that later or some other teammate comes in and needs to add some feature to that module that you created.
Jeff Terrell: it's already disorganized and sloppy it's almost certainly going to be more disorganized and sloppy after you add even more to it, and so that becomes more and more of a drain on your time and your resources or time if you don't start to pay off that debt and deal with that that disorganization.
Jeff Terrell: Or, if you have a function that you know, has this corner case it doesn't work well, instead of fixing the function you actually just work around it and make sure that you never call it with those arguments or whatever.
Jeff Terrell: And you're adding complexity that sort of multiplies and time flies over time.
Jeff Terrell: And it starts to be more and more of a drain on your on your time.
Jeff Terrell: Or if your database schema was it had a few kind of weird wrinkles in it that weren't very optimal maybe you.
Jeff Terrell: You have this full name field, and you have to deal with first name and last name separately, but in the database so always just one string.
Jeff Terrell: And everywhere you're dealing with the name, you have to do kind of the same set of operations on it to split the first name out first and last name out.
Jeff Terrell: Then, that would be another case where, if you could just fix the problem at its roots that would be paying off the debt, but if you don't pay off that debt, then you have this problem that kind of continues to add complexity to your project and slows things down.
Jeff Terrell: Sometimes, again, it makes sense to incur technical debt sometimes you got a deadline you got some pressure you really want to get that feature out.
Jeff Terrell: But just be aware of the long term costs.
Jeff Terrell: So if you have a healthy collaboration with your clients you'll be able to have conversations about technical debt you'll be able to eliminate some of these trade offs again and say look.
Jeff Terrell: I can probably get this done this week, but if I get it done this week and I don't really have time to do it right we're going to be incurring technical debt we're going to have a debt that we need to pay off later.
Jeff Terrell: you're probably not going to feel it or notice it it's very hard to quantify and say for 10% slower now because we didn't do it right, the first time.
Jeff Terrell: But it is a thing that happens so be aware of that so being able to have a conversation with your client about that and let them even make a choice about Do we really need to incur that debt, so that we can get things out the door sooner.
Jeff Terrell: That can be a good conversation to have, if you have a healthy collaboration with some trust and.
Jeff Terrell: Other times, it might be better not to expose clients to the concept of technical debt.
Jeff Terrell: If they've demonstrated a lack of interest in processes and trade offs, then it might not be fruitful conversation to have.
Jeff Terrell: If they're already struggling to understand those trade offs.
Jeff Terrell: Then yeah maybe you wouldn't be helping them by adding more complexity to their understanding.
Jeff Terrell: Or if you're just careful never to accrue technical debt, this is actually completely valid way to go.
Jeff Terrell: Just always do it right, the first time as best you can now some things will have to change and that's okay that's expected, but if you if you know something isn't.
Jeff Terrell: Organized well or isn't optimal or doesn't have tests or whatever if you're disciplined about saying it's not done yet.
Jeff Terrell: Then you aren't ever going to be incurring technical debt and then you never have to have that conversation with your client.
Jeff Terrell: does require some discipline.
Jeff Terrell: Right, this is useful when a deadline looms.
Jeff Terrell: There is another like an opposite problem technical that if you are over engineering, a solution or if you're pursuing like absolute elegance and Christmas of your code.
Jeff Terrell: To the point of starting work on actual features that users are going to see see and appreciate that would be kind of the opposite problem.
Jeff Terrell: Right and remember this acronym you ain't gonna need it gagne sometimes you're tempted to over engineer and add things that will never be needed so just focus on what you need to do.
Jeff Terrell: Okay sorry any.
Jeff Terrell: Any questions about technical debt.
Jeff Terrell: i'm thinking we're going to cover that later in the Semester I can't quite remember when but.
Jeff Terrell: Alright, so let's.
Jeff Terrell: Go to the third agenda item for the day picking a project, this will be directly relevant and helpful for you, on Monday and Wednesday of next week.
Jeff Terrell: All right, there are a lot of different ways to rank projects.
Jeff Terrell: You might want to rank the project on the clarity of the proposal.
Jeff Terrell: And that would indicate that the client, has done some thinking about what do I really need and that they are able to communicate their needs, in a way that you can understand easily that's valuable.
Jeff Terrell: You might want to rank projects based on the maturity of the idea.
Jeff Terrell: I often tell clients who are interested, that if they really want to attract a team that they should spend some time working on the clickable prototype themselves.
Jeff Terrell: and work on their own expression of their vision and and they can do that without knowing code.
Jeff Terrell: And so, the more they can do that and show you that they've thought through this to the point of view and having a prototype.
Jeff Terrell: that's a fairly well thought out idea they've already wrestled a lot of the difficulties of like there is only so much screen real estate there's only so much user attention so.
Jeff Terrell: You get a leg up on your project if you started out with one that already had a prototype.
Jeff Terrell: You might want to think about and rick projects based on your impression of how flexible and understanding your client might be.
Jeff Terrell: Are they reasonable, are they friendly they seem easy to work with.
Jeff Terrell: You might want to rent projects based on social impact, maybe there's something that really would have a significant social impact, or could have a significant social impact on the world or this local area, and those are ones that you want to work on.
Jeff Terrell: Maybe you want to think about which clients actually have some connections, or some influence, not to be too crass here but.
Jeff Terrell: You know, can acquire hire you after graduation if they liked your work.
Jeff Terrell: Maybe that's important to you you're here to get a job I don't think there's anything wrong with that.
Jeff Terrell: um similar sort of idea, maybe you want to rate projects based on how aggressive, they would look on your portfolio, so that you can get that job you want after graduation.
Jeff Terrell: Or maybe you're really all about the languages and the tools that you've used in the technology.
Jeff Terrell: Maybe some projects would be really interesting from a language or technology standpoint, so you say, well, I really want to work on that because I I know this technology or while learn this technology or I want this technology on my resume.
Jeff Terrell: How available does the client seem to be.
Jeff Terrell: If you have a busy team that might be especially important.
Jeff Terrell: So so yeah that's slides wrong should be Monday and Wednesday our next class periods or client pitch days.
Jeff Terrell: And that bullet is wrong as well that they will have five minutes each, and that includes transition times and we right we've got 15 clients for 75 minute class session five minutes per client, with no transition time.
Jeff Terrell: it's kind of be I mean buckle up this is going to be a busy day and every single client is going to they're going to be pitching their idea they're gonna like this is, this is why this is important this is such an important project i'm so excited about it and.
Jeff Terrell: it's it's a lot it's a lot.
Jeff Terrell: Of these pitches will be a blur, especially by the end of day to when you've seen 30 of them.
Jeff Terrell: So I recommend thinking.
Jeff Terrell: That bullet is wrong as well before class on Monday about what's important to you right we talked about these different things that you might want to prioritize think about what's important to you.
Jeff Terrell: And I would recommend actually writing up a rating sheet to have with you during your pitch during the pitch days on Monday and Wednesday.
Jeff Terrell: what's important to you scale of one to five, how much did this pitch, where do I think it falls on these things that are important.
Jeff Terrell: Because if you don't do that, while it's fresh you're going to forget.
Jeff Terrell: you're totally going to forget what the pitches about.
Jeff Terrell: there's a natural bias to prefer you to the first pitches when you refresh or the last pitches which are most recent in your mind and middle pictures are probably gonna be gone.
Jeff Terrell: Okay, so at least assignment zero.
Jeff Terrell: This is your pitch preferences, this is due next Friday at 8am I believe this is the only thing that's actually do at a time like that particular time of the day.
Jeff Terrell: And this is what you're going to be emailing me all right email me an email that looks like this, or you substitute in the stuff that you want to write inside the brackets.
Jeff Terrell: You can prioritize either the team preference that you want to work with these people, or you can prioritize the project preferences.
Jeff Terrell: Okay, and then in either case you're going to list out what project preferences are, if you are submitting as a team, then you want to there's more details on the website so you don't have to remember all this, but i'm just giving you a sense of what you're going to need to do.
Jeff Terrell: If you're submitting as a team than just one of you will email me and copy your teammates so I just have one email per team.
Jeff Terrell: will indicate whether you're comfortable with an IP assignment and confidentiality agreement, this is what Peter was talking about, that is a choice that you need to make before Friday.
Jeff Terrell: And then, if you have any teammates that you prefer then list those out and copy them, on the one email that you sent 14.
Jeff Terrell: Questions about this.
Jeff Terrell: yeah.
Jeff Terrell: Good question um it depends a bit on how things shake out if we have 80 students in this class that would mean two teams of four.
Jeff Terrell: And if if there's exactly two teams that are already or four then that'll work out great if five people is by different teams, one of the teams of four then split you up so it's a gamble.
Jeff Terrell: up to you to help.
Okay.
Jeff Terrell: i'll do it, if I can but there's only so many teams before that we're going to be able to have.
Jeff Terrell: Okay, oh yeah one of their notes.
Jeff Terrell: Some of these projects are flagged as being ios projects right, so I go here.
Jeff Terrell: Low on time just note that some of these are ios only other ones are ios as in somebody on the team needs to have a ability to develop an ios, and that is actually.
Jeff Terrell: You have to have MAC os do that so just be aware of that, as you're submitting your preferences.
Jeff Terrell: Again, please don't drop we're not done yet please don't drop the class after submitting preferences.
Jeff Terrell: That would be a disaster for your team, so please if you're thinking about dropping try to decide for sure whether you're going to drop or not before you submit your preferences.
Jeff Terrell: And lastly, i've got a poll here so polivy.com slash Jeff errol same URL is last time, I believe that should be active yeah I see some of you in that when you are finished feel free to to the.
popular.
Jeff Terrell: that's a good question I can't do that and here's why I need these project preferences in by Friday 8am and I have to turn around black Friday to time classmates and have everybody assigned to teams like.
real time.
Jeff Terrell: So you'd have I guess from the end of class Wednesday until Friday morning to see what the flourishing yeah maybe.
Jeff Terrell: yeah and actually if you want it to be like a share the link.
Jeff Terrell: And you can go whenever you finish this.
Jeff Terrell: A little bit over.
yeah.
myself again, oh no.
Come on.
Jeff Terrell: Really excited.
Jeff Terrell: To see what we get on like they can be excited there anyway i'll let you go.
Thanks.
Jeff Terrell: To team.
Jeff Terrell: Will generally speaking randomly.
Jeff Terrell: very complicated sort of thing that you to.
Jeff Terrell: actually look like a I don't look at me like you're slipping letters.
Jeff Terrell: pick randomly one of the letters.
Jeff Terrell: We have a program that will actually really.
Jeff Terrell: I think we may have multiple facets Level one.
Jeff Terrell: Oh yeah.
Jeff Terrell: yeah.
Jeff Terrell: So the way.
Jeff Terrell: I see.
Things.
Jeff Terrell: Like I checked he.
Jeff Terrell: says.
Jeff Terrell: 30 projects like minute slots, even if it's like pastoral cassie like you have an idea like because, like three three point at least the last one teams.
Jeff Terrell: yeah OK OK, I see.
Jeff Terrell: I was kind of wondering what the odds are that I like getting his boss eventually just to come everything.
Jeff Terrell: You get some people.
Jeff Terrell: So far, people have not really been dropping yeah I mean, I guess, I will see that will try to that's not excited to be a science yeah okay well i'll get a participant everything.
sounds like we should.
have an assignment the IP or the company, maybe.
The project.
Jeff Terrell: i'm probably I think the confidentiality is more about like it's a share, and you can read it it's on the website, but look for it and ask Peter that question but.
Jeff Terrell: That is a conversation I remember having and I think the understanding our clients is.
Jeff Terrell: The fact that you worked on that new title and projects and brief description on Wednesday.
Jeff Terrell: Because you're gonna have to present on that anyway, so that level of detail about a project since you're kind of share, I guess, when you get into like the actual data and people are new technologies towards.
Jeff Terrell: krypton prototype.
Jeff Terrell: testers like a design.
Jeff Terrell: it's not.
Jeff Terrell: doesn't evolve and.
Jeff Terrell: it's.
Jeff Terrell: Not kosher that are connected to other.
Jeff Terrell: mentors on the matrix I actually industry or are you know.
Jeff Terrell: Most of them, none of them are students, I mean I guess mirage is a student so he might he might be a mentor for a few teams, but all the external mentors I have.
Jeff Terrell: pretty sure and.
Jeff Terrell: Not any of them are students and they're all in industry and there's a couple of those who are not currently practicing software development for having the past but, for the most part they're all in practice, except for engineers I would assume that I was looking at Lincoln Center.
Jeff Terrell: and some are able to meet during working hours somewhere not will actually make them into our assignments based purely on availability, so what happened to your team.
Jeff Terrell: to sit down for team, and there will be a form to fill out to say I can make this time slot this time slot this time slot whatever once you can make and then i'll get all those all that information in and assigned mentors based on when you're actually able to meet.
Jeff Terrell: And so we'll make sure that you're able to me and I go to market and I realize some of the project has already being worked on and.
Jeff Terrell: yeah some of them are repeat clients.
Jeff Terrell: yeah it's pretty good reputation yeah yeah it works out Thank you.
Jeff Terrell: For the matching code yeah like home.
Jeff Terrell: I can't remember if the Repo for that is public or not, it probably could be What do you mean the matching mentors of matching products.
Jeff Terrell: um the I just when they're kind of similar because I think you did the what's the code to the CS students like matching thing oh yeah the two before three.
Jeff Terrell: That is on that that's online the assigning teams.
Jeff Terrell: I think not the final line because I I have in the repo comments on assignments, when I make the cast semesters and that's it kind of sensitive but.
Jeff Terrell: But the other than if you're curious I can actually share kind of the functions and ideas I don't even I don't run it through a program and they have this process of like.
Jeff Terrell: iterating in a rebel of like make some actions see some results and I kind of iterate on that so.
Jeff Terrell: it's not at all very obvious about how to use that code and i'd be happy to share with you, if you're curious yeah I think I definitely be interested in closure and I can dive into that, like, I think it was on your github probably get lab and I want to say that.
Jeff Terrell: That project matchmaking one is not a public repo so send me an email, and all that good.
Jeff Terrell: Oh hey.
Jeff Terrell: Who.
Jeff Terrell: just wanted to talk about what.
Jeff Terrell: Whether.
Jeff Terrell: Whether or not there's not that.
Jeff Terrell: Many people in the room, you have control.
Jeff Terrell: um it's the seats in the room is kind of the ultimate limit.
Jeff Terrell: I don't know a lot of the registration stuff is kind of mysterious to me I just kind of asked on jet or kiffin questions but.
Jeff Terrell: ya know in the past i've had people drop after the first in class and.
Jeff Terrell: I don't know I mean maybe in part of that was when I was a newer instructor people were less sure about me or something like that I don't know I expected more people to drop by now.
Jeff Terrell: I don't really know what to expect in terms of people dropping between now and Friday once the last day to ap classes, like, I remember okay that's coming up pretty soon.
Jeff Terrell: yeah I don't know um I just keep an eye on it, I don't know if you're in Corsica or not, but that might be one option yeah.
Jeff Terrell: You are in the first position here.
I think so.
Then.
After class.
and your email calendar okay.
Jeff Terrell: And let me finish Alex Alex.
Jeff Terrell: I don't know I if it was in response to that, but later when I checked in Berlin, it looks like the first person from the waitlist and then moved into the class okay um I went through one.
Jeff Terrell: Though I like the clouds.
Jeff Terrell: Again, like a big storm, so I don't know if she's done in response to that, or if that was yeah I remember, I heard contention that she was going to look into that character, what you got coffee or not, but.
Jeff Terrell: Either sheer Cape and said they started a I mean I inquired at the registrar's Office about what was going on this course, because I think a lot of problems with it.
Jeff Terrell: But the fact that somebody versus the number two before and I remember one yeah gotcha well that's one success figure we'll see fanatical topic, you can add it.
Jeff Terrell: Are they very good.
Jeff Terrell: yeah good luck, I hope it works now.