Well,
real well.
Jeff Terrell: All right, here we are.
Jeff Terrell: Another con 523 meeting.
Jeff Terrell: Hopefully this time it'll go a little bit better than last class meeting that we had
Jeff Terrell: I think it will have high hopes to pass that low bar from last time.
Jeff Terrell: Hopefully people aren't having trouble getting in today. I don't know.
Jeff Terrell: I asked everybody to to try it out before class meetings so hopefully everybody had a chance to notice if there were any issues. I didn't hear from anybody that there are any issues joining class but
Jeff Terrell: Hopefully that's all straightened away and nevertheless I only see 50 people joining maybe maybe more will join and and the next minute or two. Okay, today we're going to talk about project management.
Jeff Terrell: Before we do
Jeff Terrell: I guess. Yeah, some announcements.
Jeff Terrell: So first of all, we have a TA. So, welcome everyone or Billy to conflict with three
Jeff Terrell: You want. You want to say a few words here.
Yiyuan Li: Yeah.
Jeff Terrell: Thanks Jeff and
Yiyuan Li: Hi everyone. And you can also go back, Bill.
Yiyuan Li: I'm a first year PhD student in that form in computer science department.
Yiyuan Li: I'm working natural language processing which may not release you this course and previously I finished my
Yiyuan Li: Master in kind of Malin I saw the
Yiyuan Li: Description of editing Piazza
Yiyuan Li: And I did my internship being a startup medical aid sorrow.
Yiyuan Li: in Pittsburgh. So I'm here to help you guys with
Yiyuan Li: I guess it's like open like
Yiyuan Li: Or like open panel for all the questions and all kinds of questions and
Yiyuan Li: Advisor. Guess I'll try my best. I'm not expert in all the Phils I'm trying to go through the lectures. It seems like it covers a lot of areas. I am trying to keep track of all of them, but it may not be possible. So let's see.
Yiyuan Li: I have office hours in I think I have one today.
Yiyuan Li: As well, if someone wants wants to join in and say hi, you're free to do so.
Jeff Terrell: Great, thank you. One
Jeff Terrell: Yes I there's probably are a lot of topics that will cover that you might not be an expert in and that's okay. None of us necessarily are
Jeff Terrell: I kind of, you know, each one has a big job to be holding office hours and be able to field. Any question from any project.
Jeff Terrell: I think even I wouldn't even expect me to answer everything, anybody could throw at me from any of these projects because there's a lot of technologies that that even I don't know. So I just appreciate your willingness to serve in this manner and
Jeff Terrell: You know, do your best and that'll be good enough.
Yiyuan Li: Oh thanks outside
Great.
Jeff Terrell: So, now everybody you know
Jeff Terrell: You, you, you know who you want is a little bit recognize his face, at least, and
Jeff Terrell: Now maybe you will be less intimidated by going to office hours, hopefully.
Jeff Terrell: That is a resource for you to make use of. So please do make use of that. If you have any questions about anything assignment related or project related or
Jeff Terrell: Class related in some way so
Jeff Terrell: Great. Okay. So next thing I added team based groups to piazza. So there's this this thing and pizza that I've never used before called groups.
Jeff Terrell: And
Jeff Terrell: I've added a group for each one of your teams. I don't really know how useful that will be to you, but I added it just in case I guess what that means is that you can have discussions on pizza within your group.
Jeff Terrell: assuming that you already have a way of talking with your group. But if you don't, potentially, that'll be useful.
Jeff Terrell: But I'm not really sure what to expect but it was relatively easy to set up. So I figured I would set that up just in case it was useful to anybody.
Jeff Terrell: Okay.
Jeff Terrell: Right. One announcement kind of not strictly class related but but somewhat related to a lot of the stuff that will get into over the course of the semester.
Jeff Terrell: I got an email from the UNC product management club. They have an interest session tonight at 630
Jeff Terrell: And you can see some info about them on their website.
Jeff Terrell: UNC PM club. COM. Basically what this is is it's a it's about
Jeff Terrell: I don't know. It's got a lot of overlap with the assignments that you're going to do in class. So
Jeff Terrell: Maybe you'll be tired of doing this and won't want to do more of the same. And so one won't want to be involved in this club but
Jeff Terrell: On the other hand, if you find it interesting to actually work with real clients for with a real need that they have and propose different solutions including UI designs and things of that nature. That's exactly what this is all about. So
Jeff Terrell: I think these this club has gone to the trouble of finding clients who have a need of some sort and your job as a member of this club. I guess would be to
Jeff Terrell: Understand what they want and then propose designs to the client to see
Jeff Terrell: What would actually meet that need in an effective way. And that includes iterating so much as we're, we will be doing later in the semester.
Jeff Terrell: As well as a demo day. So I thought that was a have enough kind of related interest to this class that some of you might be interested in that.
Jeff Terrell: So feel free to check that out. Obviously that's completely extracurricular and won't affect your grade at all, but it is irrelevant announcements, I thought I'd mentioned that
Jeff Terrell: I found out recently like an hour or two ago that there's going to be a new pass fail policy, it's going to be similar to the policy that we had at the end of last semester.
Jeff Terrell: But I think a little bit different. I think we can. I think you can do a low pass is one of the outcomes of this new pass fail.
Jeff Terrell: I haven't actually looked into the policy this, you know, this just came out recently. So I'm only going on kind of what I heard in terms of a summary from a colleague, but this honestly this kind of concerns me a little bit.
Jeff Terrell: I tried to advocate a little bit for not allowing this policy. I hope that isn't offensive to any of you, but let me tell you my concern here in a project based course like this one where so much of your project depends on just doing the work in a team environment.
Jeff Terrell: It's kind of hard to fail this course.
Jeff Terrell: And if people have the option of just saying, Well, I'm going to take this course pass fail.
Jeff Terrell: My concern is that that's going to be pretty hard to be motivated. If you're taking a pass fail to sort of put in a fair amount of work for your team on your project.
Jeff Terrell: So my plea for all of you for each of you is I can't stop you from taking pass fail taking this class pass fail, and I won't
Jeff Terrell: I wouldn't try to stop you from exercising the rights that you have a student
Jeff Terrell: But
Jeff Terrell: Please consider your team and please consider your client. And don't just be a slacker. Don't just freeload off of the efforts of your teammates, that's just going to make a really unpleasant situation for everybody involved and
Jeff Terrell: Hopefully that's none of you in this class. None of you will even be tempted
Jeff Terrell: With such a prospect, but I wanted to mention that up front because you know that that's that affects people and it affects more than than just yourself. It actually really affects your teammates in a profound way and makes our lives a lot harder. So
Jeff Terrell: So yeah, just consider that
Jeff Terrell: If I'm thinking about. I haven't, you know, this just just happened to an hour to go. So I'm going to keep thinking about this, but
Jeff Terrell: As a potential sort of safeguard against this kind of freeloading behavior that I think would be kind of destructive for a lot of the team collaboration efforts in class.
Jeff Terrell: I'm considering reducing the minimum individual project grade multiplier down from 0.7 you might recall from the first day of class that
Jeff Terrell: You are judged by your teammates and the truth comes out as to, you know, how, how lazy or productive. You were and how much of a team player, you were
Jeff Terrell: I said on the first day of class that the minimum grade the minimum multiplier for your overall project grade would be 0.7 I'm thinking about making that lower to give a little bit more of a spur to not just be a complete slacker.
Jeff Terrell: Again, I hope none of you would actually fall into that category but it often happens in this class, maybe one or two people a semester struggle with this kind of thing so
Jeff Terrell: And like I said, that really does affect your teammates a lot
Jeff Terrell: So if I do make that change. I will let all of you know as soon as possible.
Jeff Terrell: I hope to have a decision on that by next time we meet on Monday. If you don't hear anything, then it's safe to assume that this is going to stay where it was.
Jeff Terrell: Yeah, it says, Just feel lazy people. Well, yeah, that would be
Jeff Terrell: It would be nice in a certain way, hard to make that judgment, though.
Jeff Terrell: Um,
Jeff Terrell: Okay, so where are we in terms of assignments.
Jeff Terrell: I want to kind of mention this to keep this in front of everybody's attention where we are on
Jeff Terrell: The like when assignments are doing things like that assignment one the project management board is do this week. Whenever you meet with your mentor.
Jeff Terrell: I think some of you have completed that already and shown it to your mentor during your regularly scheduled mentor meeting.
Jeff Terrell: Others of you maybe have completed it. But I haven't had your mentor meeting yet and maybe others of you are still working on this. It was only one coffee cup worth of difficulties so I don't expect that took anybody too long.
Jeff Terrell: But I wanted to pause for a second and ask if there any questions about Assignment one
Jeff Terrell: My original goal was to talk about this assignment last Wednesday, but the mentor matchmaking took longer than expected. We had technical difficulties etc didn't get around to it. And then I thought, well, we talked about it. MONDAY AND THEN, CLASS got canceled on Monday. So here we are.
Jeff Terrell: This is only our I guess third substantial sort of lecture in this class. So far the semester.
Jeff Terrell: Home you asks, Do we need to submit it anywhere.
Jeff Terrell: This. No, no, you don't need to submit it to me, what happens is you will show it to your mentor during your meeting and your mentor every meet every week, your mentor will report to me on how things went
Jeff Terrell: Just any areas of potential concern, as well as just how the assignment went to everything sort of
Jeff Terrell: meet the expectations and the requirements of the assignments were there were all the requirements met but maybe some changes were requested us sort of things. So I actually have visibility on this through your mentor meetings.
Jeff Terrell: And I don't need it submitted to me directly. When you create your assignment to your website, you will post your project management board link there. Even if it's private. You can still go ahead and post the link there.
Jeff Terrell: So that'll be kind of where you submit it both in your mentor meeting as well as on a website when you create that
Jeff Terrell: And actually show you an example trailer board and just a bit to show you kind of what that can look like might give you some inspiration for what sort of ongoing project board might look like. That's, that's somewhat actively used
Jeff Terrell: As well as maybe some ideas on how to organize things in Toronto.
Jeff Terrell: Okay.
Jeff Terrell: Assignment to is due next week when you meet with your mentor soft deadline Sunday night hard deadline when you meet with your mentor next week.
Jeff Terrell: This will serve info to whoever's interested that might be me your client your mentor each other.
Jeff Terrell: It'll just have all the info about your project, including all of the different deliverables, you will post all the deliverables there as long as it is not some sort of a private deliverable such as the end of the semester when you submit your, your personal report on how the team went
Jeff Terrell: Um,
Jeff Terrell: There's a lot of little details here.
Jeff Terrell: And I, I realize it's a lot and it can be kind of tedious to look through exactly what all is required.
Jeff Terrell: But I'm sticking by that because it's actually really helpful to me. And anybody who's interested to be able to see all of these websites shown in a consistent way.
Jeff Terrell: So I do have a lot of
Jeff Terrell: Particular requirements about put this year. Put that there are these pages, you should have, etc.
Jeff Terrell: Yeah, just do your best to kind of pay attention to detail and all of that.
Jeff Terrell: And you'll send me your website link, and I'll post that on the website. The, the course website.
Jeff Terrell: Okay, and then user stories are do week after next both website and user stories I rated as to coffee cups worth of difficulty.
Jeff Terrell: You might recall we talked a little bit about user stories and the project narrative arc lecture. I think that was a second lecture. And there's also examples of user stories in the assignment right up
Jeff Terrell: Any of you following along with the slides, these links are broken. Sorry about that.
Jeff Terrell: I need to
Jeff Terrell: Change the things there anyway.
Jeff Terrell: Right and know that for assignment three to get user stories, you will have to meet with your client. So if you haven't already started scheduling your meeting with your client. Your first meeting to understand what all they want you should start scheduling that as soon as possible.
Jeff Terrell: I might take a while to line up a meeting clients tend to be busy people. So you've been warned.
Jeff Terrell: And then also be where there's a for coffee cup difficulty assignment coming up. The following week. So like I said, the first day of class.
Jeff Terrell: You might not want to wait until that week to start on that assignment. That is the clickable prototype and that could take some time to get everything done on that.
Jeff Terrell: Okay. As always, I'm assuming, you'll stop me with any questions you have.
Jeff Terrell: I don't see any
Jeff Terrell: Smoking moving
Jeff Terrell: Okay.
Jeff Terrell: So plan for today. We already talked about announcements. We already reminded everybody about assignments that are Due Soon I want to show an example cello board related to Simon one to just show kind of what
Jeff Terrell: What a fellow board can be and some of the different options that you might have for organizing things
Jeff Terrell: I'm going to talk about project management concepts. This is kind of the bulk of the class time I expect we'll be talking about concepts related project management.
Jeff Terrell: And then we have Quiz one coming up so
Jeff Terrell: As I said, beginning of the class. This is really intended to just be a little bit of accountability and incentive to attend class meetings and and pay attention to them. That was something that we fell into last time I taught this course, was that a lot of people
Jeff Terrell: Honestly struggled to pay attention in class, and it's not so much a personal offense against me and I'm not, I don't want to be offended or something like that. But it's really a disservice to you when
Jeff Terrell: You know there's potentially some pretty useful stuff to learn and you just don't have a good reason to learn it.
Jeff Terrell: So, so I'm intent. I'm hoping this quiz will be
Jeff Terrell: Just the right level of difficulty, such that if you've been paying attention to class, you should be able to ace it, no sweat.
Jeff Terrell: But if you if you haven't been coming or you've been zoning out or whatever it might be a little bit harder, you might miss a question or two.
Jeff Terrell: The book is included as I said it would be the some of the there are some questions from the reading assignments. So be aware of that.
Jeff Terrell: But that'll come up at the end of class today.
Jeff Terrell: Okay, so I'm going to show an example trailer board before I do, let me go to
Jeff Terrell: Open up. I forgot to actually walk through these assignments.
Jeff Terrell: Right. Let me open up this
Jeff Terrell: Question.
Jeff Terrell: Have you ever used travel before
Jeff Terrell: Go to polivy.com slash Jeff Terrell to participate.
Jeff Terrell: So far, everybody's at least heard of
Jeff Terrell: Up to 48 responses. I'll give it another i don't know maybe 30 seconds and we have 6060 students in the class right now.
Jeff Terrell: We're actually 59 maybe
Jeff Terrell: Okay, we're up to 55 responses 56 okay so
Jeff Terrell: You haven't responded, you can go ahead and do that looks like a few of you have extensive experience with fellow. Most of you have a little bit of experience somewhere between a little and not much
Jeff Terrell: And about half of you don't have any experience with travel at all.
Jeff Terrell: Nathan says it didn't let him respond I see 59 responses, which I think is the number of students that we have in the class are in this in the zoom session.
Jeff Terrell: Nathan. I don't know what might be going on you into polivy.com slash Jeff Terrell
Jeff Terrell: try refreshing. OK.
Jeff Terrell: OK, so maybe 3% of you, which might be a couple of students in the class. Okay. It worked very now anything good.
Jeff Terrell: Maybe, maybe a couple of you in class might be bored by what I'm about to show you. Just an example trailer board.
Jeff Terrell: Others of you might be bored as well. We'll see. We'll see how it goes. But even those of you who have used travel extensively might find some tips in here that might be useful. So
Jeff Terrell: Yeah, we'll see how it goes. All right, I'm gonna turn that off.
Jeff Terrell: Okay.
Jeff Terrell: So this is a trailer board from project that we have going on in the app lab. This is called Clem the closure error mediator.
Jeff Terrell: Some of you know I'm a big fan of closure. But one of the problems of closure is that it does not have great error messages and can be hard to understand for beginners. What's going on with what's broken
Jeff Terrell: In the code that they've written so this project is intended to address that. But it's not really important what the project is what I want to show you is just how we're using trial.
Jeff Terrell: So, first of all I have. I just want to talk about the columns. Probably a lot of you have seen this kind of paradigm before where you have
Jeff Terrell: Columns and within each column. There's a list of cards in some order. And that's exactly what it does. It's not the first to do this kind of paradigm and won't be the last.
Jeff Terrell: But you get to name these these columns, whatever you want.
Jeff Terrell: And this is a set of names that have worked well for me on a lot of different projects. So I'm going to spend a little bit of time talking about what I've done here.
Jeff Terrell: But I have a reference column and this is for stuff that generally doesn't move, but it's just good to kind of keep around and easy to reference things later so
Jeff Terrell: Some information about how to use this board if you haven't used it before and some of the conventions that we're following within this board.
Jeff Terrell: Link to the designs that we came up with early on in the project. This would be like the clickable prototype phase of work for you in your project, potentially, and just some other reference information.
Jeff Terrell: I have manually added card numbers to every single one of these cards. So when you see like number one number 24 etc. That's manual work that we do. We just kind of maintain that discipline to
Jeff Terrell: To travel. The way we do it is we just add that manually to the title of each card and the way you can tell the number of a card is by looking at this very first number in the URL bar.
Jeff Terrell: After the card ID that randomly generated ID. So if I go, for example, to this you can see that's 24. The reason there's 224 years because
Jeff Terrell: It has this 24 from the title here as well, so that the URL gives an indication about what this is linking to. But that first numbers, the one that actually is the the important one. So, for example,
Jeff Terrell: If I reopen this you'll see it's just 24 figure designs and that would be
Jeff Terrell: That would tell me that I need to put number 24 there.
Jeff Terrell: This is just a discipline that we maintain
Jeff Terrell: Um, when it comes to project management meeting to maintain discipline is kind of a code smell.
Jeff Terrell: Any sort of discipline that you need to maintain and even in terms of like code management and things like that. Like, you need to remember to
Jeff Terrell: Deploy every time you push or something like that. These kinds of things are things that people can forget. And because we're fallible, we forget. And so, generally speaking.
Jeff Terrell: Discipline is to be avoided in a certain way. You want to try to automate these things so that it's not not something that a human can forget
Jeff Terrell: But this is this is one of the ways in which trailer was not a perfect tool. There are ways to do this intro involving power ups and whatnot.
Jeff Terrell: Perhaps you can find a way. If you decide this is a good idea that you can automate this if you do, I'd be interested to hear how it works for you, but
Jeff Terrell: Even though Trump isn't a perfect tool, it's, I don't think there is a perfect tool when it comes to project management software. I think it's kind of like editors like
Jeff Terrell: There are some that suit certain tastes and others that suit different tastes and some more features and some have less features and there is no perfection.
Jeff Terrell: Anyway, moving on. So the backlog column is one where we're just holding all the stuff that we know we're going to need to get to at some point, or maybe it was just an idea that we had. And we didn't want to lose that idea.
Jeff Terrell: So it's really nice to be able to write down these ideas and capture them, make sure we all forget them. That's what the backlog column is for sometimes these ideas aren't really fully specified yet and that's reusing this label here called needs spec to indicate which
Jeff Terrell: Which cards haven't really been fully specified
Jeff Terrell: Quick pro tip. There are actually quite a few keyboard shortcuts for cello that can make it pretty quick to use it hitting semi colon will actually expand or collapse the text of these labels.
Jeff Terrell: So you can define these labels are, I guess, clicking on that works too.
Jeff Terrell: You can define these labels and add your own words for them. So that's what we've done here. But if you click on that or if you had semi colon. You'll expand that. That was your question.
Okay.
Jeff Terrell: So that's the backlog.
Jeff Terrell: Ready is stuff that is specified enough to start work on and there aren't any things that are waiting to be done. Like, for example,
Jeff Terrell: This card here is blocked by another card. So this is one way that we use trailer where we
Jeff Terrell: We have a blocked by checklist. If there's a card that needs something else to be finished first before this one is started, so like a prerequisite. We would add the the card link there. And all you do for that, by the way, is you just
Jeff Terrell: Copy that URL.
Jeff Terrell: And then that's what we, that's what you can just paste that there and it becomes, you know, decorate it this way. So that's kind of what's going on there.
Okay.
Jeff Terrell: But these this blocked by checklist is is a nice way to get kind of a heads up view, even when the card is collapsed for. Is there something that says waiting on
Jeff Terrell: So ready stuff for us. It's not waiting on anything. And it's fully specified so it's ready to start work in progress means somebody is actually working on this in general.
Jeff Terrell: You should have a face assigned to any card that's in progress or later meaning. This is kind of the primary person responsible for this card. In some cases, you might put more than one face on that on a single cards to indicate this is a team effort.
Jeff Terrell: One thing we do some times for the app leadership team. We actually use trailer to organize our efforts there and we'll put multiple people on a card to indicate
Jeff Terrell: There's still something you need to do here. And when you're done with your, your work on this card. You can take your face off. That's one way that you might want to use trailer
Jeff Terrell: We have a code review column when when something is finished, like a developer finishes work on some tasks they move the card to code review and somebody code reviews that work.
Jeff Terrell: The merger request. When the code review is finished, then the card has moved to to merge, meaning you can go ahead and merge this now the code looks good, all of the issues have been addressed.
Jeff Terrell: And then once it's merged and deployed. You could even have a separate to deploy staff wants it's merged, but hasn't been deployed.
Jeff Terrell: And then there's a deployed slash done column.
Jeff Terrell: Done would be anything that doesn't actually need a
Jeff Terrell: Deployment like it's not a code change. It's just some other task that needs to happen.
Jeff Terrell: See, there's a there's a card that is missing a number. So this would just be I noticed that happens. The reason I do that by the way, just so I can quickly.
Jeff Terrell: I'm talking with somebody about this project, I can say, okay, look at number 43 in in progress. And it's really easy to just let your eyes jump straight there, even if you're not sharing your screen.
Jeff Terrell: I'm just generally speaking, what happens is cards move from left to right.
Jeff Terrell: And every column is a stage of work and in a general sort of way. This is known as the con bond method for project management. The idea of combine is that you have
Jeff Terrell: Phases of work or workstations and the work has to pass into these different stages of work.
Jeff Terrell: And so you're you're you represent that with cards that are flowing from left to right through these different stages of work.
Jeff Terrell: So that's known as con bond. There's some other aspects to con bond that are not captured here. So, for example, combine actually
Jeff Terrell: One of the interesting ideas about it is that you're supposed to limit your working inventory at any given time limit the amount of work in progress.
Jeff Terrell: And so every one of these workstations. If we were doing a strict combine method would have a limited number of cards.
Jeff Terrell: It would be constrained to say only three cards can be in progress at any given time. Only two cars can be encoder view at any given time. And the idea of that is to increase your time locality to
Jeff Terrell: Avoid having to think, okay, now I have to think about this card that I haven't thought about in three weeks I forgotten all about it. I have to do some work to get all the info back in my head.
Jeff Terrell: So having these limits on this con columns actually helps you increase your time locality and not have to reach so far back into the past to remember what you're working on.
Jeff Terrell: Once it's done, it's done, you can forget about it. Maybe there's a bug fix it needs to happen later, that's fine. But that's a, that's a new work item.
Jeff Terrell: One other aspect of trailer that I want to mention this is just one way that we're using cello.
Jeff Terrell: One of the limitations of fellow that other project management tools have in some cases is this notion of like parent child relationship. And even this idea of having infinite nest ability of tasks.
Jeff Terrell: Trailer doesn't really have that. But you can use some of its features to sort of mimic that and that's what we've done with these container cards.
Jeff Terrell: So we've added a green label here to represent it as a container card and the idea of the container card is that this is, this isn't this card itself does not contain any work. This is just a container card for its child tasks and there might be some common description. That's
Jeff Terrell: That's put here to that, you know, maybe this applies to every each one of these children, and this is
Jeff Terrell: Listed here so we don't have to repeat it in each one of these children, but the there's no actual work that needs to be done with the container car and all of the work is done in the child tasks.
Jeff Terrell: So we have a checklist that we call children, and that's where they can the child tasks go
Jeff Terrell: Notice that their title actually refers back to the parent. So that's what this piece 65 means. It means that this is a child card and its parent is number 65 other words this one that we have open
Jeff Terrell: And then once this once a child is done, then we would check it off.
Jeff Terrell: And that looks like it's 79 so that's this one here.
Jeff Terrell: Where do we actually put container cards. The rule of thumb that we use and this again is the thing we're just relying on discipline to to do to keep up with
Jeff Terrell: We keep the container card with its lagging child. In other words, the child that's the farthest to the left is the one that we keep the container card with. So if we were to move this over to ready, then we would move the container card, along with it.
Jeff Terrell: And I guess I didn't actually mentioned that, but you can move these cards between these these
Jeff Terrell: Columns.
Jeff Terrell: I think that's all I was going to say about cello. Any questions about this while I still have the board up
Jeff Terrell: Okay.
Jeff Terrell: Make sure I didn't forget anything.
Jeff Terrell: I guess the one thing I would mention is this block label can be pretty important. We don't have any examples of that here, but
Jeff Terrell: If a card was blocked or blocking something else. We would add a red label to it. And that would
Jeff Terrell: Be an indication that hey, we need to probably pay attention to this and try to take care of it as soon as possible, and that can be really useful if you're waiting to hear back from a client about something.
Jeff Terrell: You you've asked a question and you haven't heard back and you can't keep working on this until you hear back from your client. So that'd be a good reason to add one of these labels.
Jeff Terrell: And as you're checking the board those read labels might jump out at you and remind, it might remind you to ping your client because it's been a couple of days and you haven't heard back and just ping them and say, Hey, did you have a chance to think about this yet.
Jeff Terrell: Okay. All right. I think that's all for cello.
Jeff Terrell: I want to talk about project management concepts. I want to stop our class ends at 355 I want to stop by 340 to give you all time to take Quiz one, so let's talk about project management.
Jeff Terrell: The big idea of project management is project management exists to keep the project moving
Jeff Terrell: So these times when things get blocked or you're waiting on things or whatever. These would be things that project management is designed to avoid as much as possible. It's not always going to be possible to avoid but
Jeff Terrell: With good project management skills you can avoid a lot of issues that you wouldn't be able to. Otherwise, or that you that you wouldn't if you if you weren't careful about this.
Jeff Terrell: This is why I picked the music float on by Modest Mouse.
Jeff Terrell: As the music before class in project management. Just keep keep things floating on keep it moving. Keep it going. Don't let things get blocked and stuck.
Jeff Terrell: And I mean, What's hard about that. That sounds like that shouldn't be too hard, maybe, maybe you're thinking like that.
Jeff Terrell: I don't see what the difficulty is there.
Jeff Terrell: Well,
Jeff Terrell: If you are your own client and you don't have a team of collaborators and fellow developers and maybe you don't even have a mentor and you're just, you're just working on some hobby of yours. This is easy. Right. The only thing you need to do is to pay attention to.
Jeff Terrell: Where dependencies are. So is there something that needs to happen before something else. Well, then
Jeff Terrell: First thing needs to happen first. And that's not even a huge deal. If you don't do any advanced thinking about it, you can just notice that there's a dependency push the thing you're working on, on the stack and go work on this other thing.
Jeff Terrell: And finish that, and then pop that thing back office doctor resume where you were and you're being efficient right i mean you're you're staying busy you're keeping things moving. And so there's kind of not really any complexity to project management, if you're only a single developer
Jeff Terrell: But when there's multiple people coordinating on a project and that would include not just your teammates, but also your client who is the one who's providing input about what's desired and what's needed and what the priorities are.
Jeff Terrell: There's a need to coordinate, there's a need to nail down details with your client, there's a need to coordinate who works on what with your teammates.
Jeff Terrell: And project management becomes more challenging.
Jeff Terrell: A really good analogy for this is if you've ever done any work with multi threaded programs you know that multi threaded programs are a lot harder to do and to write and to get working correctly than a single threaded program.
Jeff Terrell: Does 530 covered this, or is there some other class that any of you have taken that some
Jeff Terrell: That you've encountered some of these threading issues.
Jeff Terrell: 533. Okay, which one is 533
Jeff Terrell: Distributed okay distributed systems, maybe for one. Oh, you did threading and for one with percent one. Okay. It says, unless you're programming and rust. Yeah, I've heard rust has some really nice features there. I want to look into that one day have done it yet.
Jeff Terrell: Right, so maybe maybe rest is an exception there. I suspect there's still some coordination needs to happen there that just is harder to do.
Jeff Terrell: With a multi threaded program that it would be for a single threaded program. And you also have to pay attention to, like, How efficient is your program.
Jeff Terrell: You're trying to have multiple threads working and maybe technically you solve that problem, you know, multiple threads are working and they're not stepping on each other's toes, but maybe it's really
Jeff Terrell: Low performance low throughput and maybe you'd be no better off having a multi threaded program than a single threaded program. So it's not just can you get a multi threaded program. Correct. It's also
Jeff Terrell: Can you use those script threads as much as as possible and keep everybody busy. So that would be like project management, you're trying to keep the project moving and keep keeping people busy.
Jeff Terrell: So that's I think a pretty profound analogy for project management is just
Jeff Terrell: multi threaded programming. If you haven't encountered multi threaded programming. Trust me, it's a lot harder.
Jeff Terrell: Maybe unless you're programming and rust. I know.
Jeff Terrell: I want to talk about the Mythical Man Month.
Jeff Terrell: This is a famous software engineering book. It's actually by Frederick P Brooks, Jr. Maybe you have heard of him.
Jeff Terrell: famous computer scientist and happens to be the founder of our very own computer science department at UNC
Jeff Terrell: Be surprised if you haven't heard of him. At this point, but
Jeff Terrell: He. This was actually how I first heard of Fred Brooks is from this book, I heard about this book in undergrad in my software engineering class.
Jeff Terrell: And I didn't read the book at the time, but I continued to hear references to it even since that class like you should read the Mythical Man Month.
Jeff Terrell: And I never did until finally, I was finished with my PhD and I was actually managing software projects and I read it and it was amazing.
Jeff Terrell: I think I mentioned it in the syllabus day for this course first day of class that this is a worthwhile book to read. If you're serious about software engineering and about managing software projects.
Jeff Terrell: You could read it in parallel with this course, or you might want to go back after those courses over and read on it. Now that you've had experience of working with other people on a project.
Jeff Terrell: So related to the topic of the book. I'm going to ask a pose a question.
Jeff Terrell: Is a project where one person is working on a project for 12 months is that equivalent in terms of work to a 12 project for 12 people are working for one month.
Jeff Terrell: And you don't have to answer, but it's
Jeff Terrell: Intended to make you think here are these two things are equivalent.
Jeff Terrell: If they are, then this idea of a man month and basically the idea of a mammoth is that you can
Jeff Terrell: Rate projects, according to how many people need to be on the project over how much time. So it's basically like area under the curve like an integral of people on the project over time.
Jeff Terrell: Nowadays, maybe we would say person month rather than man month but this is the title of the book. It was written quite a while ago.
Jeff Terrell: And the reason as you might guess from the title of the book is
Jeff Terrell: This, this man month idea is not actually a realistic way to re projects and a tie anticipated. Exactly. My next point. The idea that these two things are equivalent is almost as ridiculous as tasking nine women to have a baby in one month.
Jeff Terrell: That's just not going to happen, it's not realistic to think that I mean obviously there's some physical issues related that that are different but but you can't just split work up and expect it to get done that way.
Jeff Terrell: So the key insight here is that
Jeff Terrell: When you rate project effort by person month what you're implicitly assuming is that there's no communication overhead.
Jeff Terrell: When in fact, there is a lot of communication overhead.
Jeff Terrell: That's one of the key insights of the book, if not the key insight.
Jeff Terrell: So let's talk about communication overhead.
Jeff Terrell: If there are three people in a room, how many handshakes are possible.
Jeff Terrell: So if I've got a person to my writing the person to my left, and we're trying to make sure everybody gets a handshake from everybody else I have shake my hand this way I shake my hand this way and then these two people have to shake their hands. So three total handshakes. Right.
Jeff Terrell: Is it three choose to. I think that's right. Three choose to. Yeah. So some common atrix there.
Jeff Terrell: What about for
Jeff Terrell: How many handshakes are possible for four people in a room.
Jeff Terrell: It's actually six
Jeff Terrell: So I'll let you think about that.
Jeff Terrell: But adding one person doubled the number of handshakes needed to actually meet all the handshakes.
Jeff Terrell: And so you can start to see that this is going to start increasing pretty rapidly as you increase the number of people.
Jeff Terrell: There's a formula for this. This is, I think what choose to boils down to, and commented Oryx n times n minus one over two. So, when n equals three, you have the answers is three handshakes, when n equals four, you've got, I guess you could say two times three is six.
Jeff Terrell: And this is a really good proxy for the amount of communication overhead. So
Jeff Terrell: If you could talk about a communication as though that we're a a unit and some sort of equal unit of work or something like that, um, this number of handshakes idea is a pretty good proxy for how many communications must take place to coordinate and developers.
Jeff Terrell: And the idea here is that the overhead of communication skills exponentially. This is like order n squared growth.
Jeff Terrell: This is not or in growth. This is not order login growth. It's not even in login. This is exponential growth and so
Jeff Terrell: You want to avoid growing in very big because you start to have a lot of communication overhead, and this is just overhead. This is not useful work being done all this is is getting everybody on the same page about some amount of work.
Jeff Terrell: So one of the things that came out of this book Mythical Man Month. And I don't think the book ever calls it Brooks's law, but I think people since then I've called it that
Jeff Terrell: Hang on, I take that back. I think this is actually not coming from the book, I think this might be coming from an essay that Dr. Brooks wrote separately called no silver bullet. But anyway, this is called Brooks's sauce is adding developers to a late project only makes it later.
Jeff Terrell: Why, because the new developer has to catch up and that adds communication costs to the project.
Jeff Terrell: So if the finish line was here. And maybe that's you know later than the deadline, but the finish line is here.
Jeff Terrell: And you add another developer to the project than the finish line moves backwards a little bit because you have extra communication that needs to happen, you've just added overhead to the project.
Jeff Terrell: Um,
Jeff Terrell: So anyway, that's, that's a, it's kind of a little bit counterintuitive, but when you think about communication overhead. It makes sense.
Jeff Terrell: So recall that the primary goal of project management is to keep the project moving
Jeff Terrell: The close second goal of project management is to do so with as little overhead as possible.
Jeff Terrell: So you want to try to reduce that communication overhead in order to be efficient and to spend as much of your time as possible actually writing the code and implementing the features and testing things out rather than just communicating about doing it.
Jeff Terrell: In my experience in industry. Most companies are moving to teams of three to six developers.
Jeff Terrell: Right, more or less story is don't shake hands. There you go.
Jeff Terrell: Most companies are moving to teams of three to six developers and moving away from large teams of developers. And I think this trend is probably been happening for a while as people have started to realize that projects with a lot of people just aren't are effective.
Jeff Terrell: And
Jeff Terrell: This seems to be like even even these larger projects that I've been involved in, they found ways to break up the larger project into smaller pieces, and each team worked on a piece
Jeff Terrell: Because they know better than to try to have a team with 20 developers on it because of that n squared scaling of communication overhead.
Jeff Terrell: So this is a trend. I've seen, and I expect
Jeff Terrell: That's just how it's going to be from now on, because it really is better.
Jeff Terrell: If you want to scale up
Jeff Terrell: You've got to find some way to avoid a broadcast paradigm and other words all to all communication because that's what is order n squared.
Jeff Terrell: You don't want to have it where if in anytime anybody has a question they paying everybody else in their team or on the project because that's, that's a lot of communication overhead.
Jeff Terrell: And this is, this is actually, there's some pretty good analogies here to other computer science concepts, just like we saw with multi threading a minute ago. How do we scale up data.
Jeff Terrell: So we're talking about scaling up people. How do we add people to a project and how do we organize the people into teams and just organize the communication of those people
Jeff Terrell: To make the operations in the team more efficient to fascinatingly similar question to how do we add data to something without
Jeff Terrell: Running into some pretty inefficient operations for the data. For example, we wouldn't use a linked list. If we were trying to search for an item in a list, we would use.
Jeff Terrell: Maybe a tree, maybe a hash table, maybe something more efficient than a linked list. Right. So there are some pretty interesting parallels here that are worth some some thought about. I think it's a pretty interesting question, but
Jeff Terrell: A good solution in general is trees trees tend to have order login operations. So they tend to be pretty efficient. You've
Jeff Terrell: probably recall this from your data structures class. If you need to organize a lot of data trees are not a bad way to go. They're not always the best way to go but login is a heck of a lot better than n squared.
Jeff Terrell: This is actually why hierarchy is useful.
Jeff Terrell: Alright, so
Jeff Terrell: So hierarchy in terms of having managers, and this is why when you work in industry in a larger company sometimes there's a lot of layers between you and the the top dog and it's sometimes it can be frustrating to be in
Jeff Terrell: A company with so much hierarchy.
Jeff Terrell: You know hierarchy does have risks. It does have dangers. There's a reason why there's been some backlash against hierarchy. I don't know.
Jeff Terrell: Y'all are in tune with this or not but over maybe somewhere between five and two years ago, a lot of people were talking about hello Chrissy And these flat organization structures.
Jeff Terrell: I think gets get hub has moved to this kind of structure, at least for the most part valves and other somewhat famous example of a flat organizational structure and there's there's a reason why people try to prefer they try to avoid hierarchy.
Jeff Terrell: But this is actually why hierarchy can be useful.
Jeff Terrell: Especially if there are some sort of checks and balances to
Jeff Terrell: Account for some of the dangers is because you get to reduce communication overhead. If you had a team like an organization of 1000 developers each working on different projects.
Jeff Terrell: You can't imagine trying to have all to all broadcast communication that just that you don't subscribe for that mailing list real quick.
Jeff Terrell: Right, so
Jeff Terrell: Anyway, just kind of some interesting thoughts to kind of
Jeff Terrell: Eliminate project management issues. Alright.
Jeff Terrell: So let me switch topics a little bit here and talk about some practicalities for project management.
Jeff Terrell: How do we assign tasks. So we have some big body of work and as you meet with your clients, you're going to get a sense of all the work that needs to be done over the course of a semester or at least all the work that they want to get done. How do you divide that up.
Jeff Terrell: So that you can keep all three of your developers as busy as possible and keep people from getting blocked and stuck and just keep keep things floating on
Jeff Terrell: One of the ideas is just to look for natural seems in the work.
Jeff Terrell: Let's try to find ways that are sort of natural divisions and boundaries and this larger body of work and divide the work that way.
Jeff Terrell: So for example, if this website assignment coming up. I don't even remember how many pages. You're supposed to create but let's say you're supposed to create three makes sense to assign each person a page.
Jeff Terrell: So there you have it, nice, simple division of work, but of course it's never quite that simple, right.
Jeff Terrell: For one thing, I think I failed to mention this in my slides, but maybe one page is a lot more work than the other two pages or maybe one page is a lot less work than the other two pages.
Jeff Terrell: So there are these, you know, even when you find the natural seems there might be some chunks of work that are a lot more involved than others.
Jeff Terrell: There's also often
Jeff Terrell: Pre work and post work, meaning that there is some amount of parallelizable work where all of you can stay busy working on some part of this task, but there might be some work that needs to happen before any of you get started.
Jeff Terrell: So if nothing else, you need to at least define the task and find those seams and decide who's working on what that's some pre work that
Jeff Terrell: Either a single sort of project manager needs to figure out, or all three of you need to put your heads together and discuss how do we break us up and who's working on what so that would be pre work.
Jeff Terrell: And then post work would be maybe there's some work that needs to happen to synthesize everything into a coherent whole. Afterwards, maybe
Jeff Terrell: Each of you worked on your, your pages and you need to make sure that all of the links between pages are correct and work.
Jeff Terrell: You know, they're not broken links. So there might be some work that you need to do afterwards. Maybe it's like a deployment step where you need to you've written it in some place but now you need to actually publish it somewhere.
Jeff Terrell: So it's really not an uncommon thing as you're thinking about all the work that needs to happen in some tasks that there might be some some pre work and post work that's cereal that needs to happen before the parallelizable work in between.
Jeff Terrell: There's an dolls law if you've seen this in in sort of multi threaded and parallelized algorithms and also gives you
Jeff Terrell: An upper bound on how fast you can actually get a task done even if you had infinite workers to work on the parallelizable piece, the serial pieces eventually going to dominate.
Jeff Terrell: The amount of time that it takes
Jeff Terrell: That's another computer science connection there.
Jeff Terrell: And also in distributed algorithms. Maybe some of you have heard of this MapReduce paradigm that would be another example of something in computer science Google was famous for using this back when they were relatively young, I'm sure they still do. It's a good way to do
Jeff Terrell: Very, very
Jeff Terrell: Distributed algorithm with a lot of different workers working on it.
Jeff Terrell: So anyway, if you've seen MapReduce paradigm, it's kind of similar.
Jeff Terrell: Okay, I think I might need to speed up a little bit. All right. Another thing to do is try to pull as much of your communication as possible to the beginning of the work to the task definition face.
Jeff Terrell: To say you're working on your website, you just have one of your pages assigned to you and you spend some time thinking about, okay, what would a good font face be and size and
Jeff Terrell: You put some thought and effort into finding a good style for the for the pages and for consistency, obviously. It'd be nice if all the pages on the site share the same style but
Jeff Terrell: Whoever was was breaking down the task didn't think to manage that and or to define that in advance. So what do you do, you probably message your teammates and mention your styles and say, hey, if you don't mind just, you know, use these tiles in your pages as well.
Jeff Terrell: Now with CSS. Maybe there's ways to do that. But you don't need to actually communicate much about it, but
Jeff Terrell: But, you know, this is intended to be an example of you realize or something that wasn't specified that would be good for your fellow workers to know
Jeff Terrell: And the analogy here would be inter thread communication when all the threads are active on work and then you did talk to each other to coordinate the work that they're doing in the middle of a task.
Jeff Terrell: Sometimes it's necessary to do this. It's not sort of necessarily bad to do into a thread communication, but it's better if you can avoid doing that as much as possible by thinking through the task and advanced during a task definition face.
Jeff Terrell: So the more you can do that, the less inter thread communication you need and the less communication overhead, you'll have in general.
Jeff Terrell: But that doesn't mean that there's more work to be done in the task definition face. I do think it tends to be more effective, though, if you try to pull as much of that communication to the beginning and specify it in the test definition as as much as possible.
Jeff Terrell: Another possibility is that you might have already started on a task and then you get into it, you realize, Oh, I did the client what green or purple. I don't know. I should ask
Jeff Terrell: And so you pause you sort of park the threads so to speak of working on that and maybe you had a blocked label to your travel card and then you maybe need to wait until you hear back from your client.
Jeff Terrell: And this is a, you know, sometimes you need to do this, but this is kind of disruptive to your creative flow right you have to stop working on something so that you can wait to hear back, which means you
Jeff Terrell: Maybe need to work on something else for a while and then eventually you'll come back to this and you'll have to pay all that back into your brain.
Jeff Terrell: So it's not the most efficient way to work. And again, it's better if you can figure all that stuff out in the beginning.
Jeff Terrell: So that's the point of this slide.
Jeff Terrell: Ok key idea here is that write things down, you need to write things down because our human memory is fallible.
Jeff Terrell: How many of you have have learned this about yourself, or about other people that you try to remember details and I
Jeff Terrell: Maybe you lose some details or maybe you know you had a discussion with somebody and you remember the conclusion of that discussion a little bit differently than somebody else remembered it.
Jeff Terrell: I, you know, we as humans tend to remember things in our own favor
Jeff Terrell: It's just a, you know, part of our fallibility, I suppose.
Jeff Terrell: But if we have things written down that can really keep us honest and it can avoid need this conflict, right, you can
Jeff Terrell: Maybe you're talking with your client and your client says that's not what I asked for you did the wrong thing and you say, well, I
Jeff Terrell: I wrote this user story down and this is I implemented that user story and I even have it written here that you agreed with those user stories that you said, those look good.
Jeff Terrell: So having that written down, and you know, especially if it's time stamped you can show that to your client. I mean, hopefully, nobody will have an unreasonable client. But, you know, something like that comes up.
Jeff Terrell: You can say, you said this was what you wanted, and I have the timestamp in the comment to prove it.
Jeff Terrell: Comet
Jeff Terrell: Comments and travel cards are a good place to do this kind of thing. So if you have a question for your client, you can ask for clarification and comments you can note updates in comments you can note assumptions in comments so that that's a pretty good place to put things like that.
Jeff Terrell: how big she tasks beam.
Jeff Terrell: There's no right answer, but there are some trade offs.
Jeff Terrell: Too small. If your tasks are too small. That means you spend a lot of time just managing cards and that adds to the overhead of the project. So remember your secondary goal of project management is to reduce the communication overhead as much as possible.
Jeff Terrell: To big actually means that you don't see progress. Very often, which can be kind of frustrating.
Jeff Terrell: You know hey teammate. Did you really do anything. Last week, you didn't touch the trailer board at all. Are you sure you weren't just lacking the whole time.
Jeff Terrell: The teammate says, Well, I really was. This is just a really big task and I didn't have anything to do on the trailer board because I was just working on this one thing all week long it. I spent 12 hours on it. I'm still didn't get it done. So, that can be a
Jeff Terrell: Problem with having cars that are too big.
Jeff Terrell: If you were working on a full time development gig, you're working 40 hours a week I'd recommend something like 48 hour sighs tasks as a sweet spot here.
Jeff Terrell: For y'all. I just rule of thumb shoot for more like two to four hours per tasks.
Jeff Terrell: Of course, that assumes that you're able to estimate how long things are going to take, which is always a guessing game you'll get better in time, you probably will never be perfect.
Jeff Terrell: And also, not all tasks fit that Goldilocks ideal. So it's just, you know, something to shoot for but not a requirement.
Jeff Terrell: The goal is that you have traction on the projects like tires have traction on a road and traction is just you're seeing the progress happening, you're feeling that you have some ability to keep things moving. And as you see cards flowing from left to right. That would be traction
Jeff Terrell: Now I actually go finer than that I break stuff even like to our tasks down into little tiny steps.
Jeff Terrell: I think this is one of the reasons why I can stay like laser focused on what I'm working on, which tends to make me pretty productive and efficient. So I recommend doing that, if, if you can
Jeff Terrell: See here, I'm not sure I'm going to have time for this. But being able to just like check things off quickly and see that I'm making progress.
Jeff Terrell: Provides me a good emotional boost and reinforces my effort and it helps me stay focused key idea here is, I don't have to waste my time thinking about what do I need to do next, because I have it all written down and saved.
Jeff Terrell: Me briefly show you this is an example. And this is a an example in org mode, which is what I use to stay organized in a lot of different respects in life, but I have a task, but I'm working on.
Jeff Terrell: And I have a checklist counter here like 31 out of 31 tasks done I've listed out every single thing I need to do. This is actually a fairly big task.
Jeff Terrell: I can nest these things as much as I want. If I uncheck that this becomes two out of three. This one becomes 30 out of 31 so you can you can see as I'm making my way down and checking things off. It just feels good helps me stay focused.
Jeff Terrell: Okay, and that's all I got, um, if you have questions maybe save them for later. I want to open up this quiz.
Jeff Terrell: Oh boy.
Jeff Terrell: To give you all time to work on it. I'm really hoping it's not going to be hard.
Jeff Terrell: But
Jeff Terrell: You know, I'm actually maybe I shouldn't show
Jeff Terrell: I don't want to accidentally show answers here. So, one second here.
Jeff Terrell: You go to sekai should have said a second ago.
Jeff Terrell: Okay, just published the quiz. So you'll have 15 minutes to complete it starting from when you you open it, I guess you have to complete it by 410 today.
Jeff Terrell: So I recommend that you get started. Again, it's not intended to be anything difficult but just to kind of keep you honest about paying attention in class.
Jeff Terrell: I'm going to mute myself. If you have questions, I guess you can ask them in the chat. And if you want to stay focused on the quiz. Just don't look at the chat window or close it or something.
Jeff Terrell: And when you're done, you can sign off at a zoom meeting. So thanks everybody. I'll see you Monday.