 All right awesome All right, 12 o'clock right on the dot Awesome All right welcome everybody This is the 12 o'clock session better agile Drupal sprints 12 ways to start and keep the projects humming How to leverage JIRA there's a number of ways you can call this My name is Chris urban. I'm from aquia I'll tell you a little bit more about myself in a second But just want to make sure everybody knows they're in the right room. It's 315 Symphony Hall Okay, nobody's in the right place. Awesome So let me tell you quickly first of just a little bit about me. Hopefully This is a scene familiar most of you your typical sprint meeting I'm the guy in the corner. I'm the scrum master Okay So My right shoulder my name. My name is Chris urban. I am a manager in professional services at aquia I've been using Drupal since 2008 and I'm a certified scrum master. I'm a certified aqua certified site builder D7 and D8 I come from a marketing actually publishing background. So long long time ago Back when there was no internet. It was magazines and newspapers. So that's my real background Today What I want to cover Is about your projects how you are building your Drupal sites and how we can hopefully overcome a lot of the issues that you face day to day Most specifically in how you use JIRA for tracking your work So hopefully the tips that I'm going to give you today will help improve those projects You'll have something to take back and try But from first thing I want to start with this, you know, how do we get here? Why are we talking about this? so number one everybody wants their project to be successful and While you're one of your tasks is to keep your development your development team busy, right? They have work to work on there's a process in place It's for all those times where things don't work and that is really the heart of my message today How can you make sure that those times where things don't work that the project doesn't break down? What are the ways that you can improve that? Now number one, I like to make this more conversational than just lecture So if at any time you have any questions raise your hand and ask me I hopefully will have enough time at the end we can do Q&A and I'll also be downstairs at the aquea booth come find me there if you have questions if we don't have time But most importantly have fun All right, so let's get started first thing just some basic assumptions I don't want to waste time talking about it because you already all know the Agile methodology. Hopefully you can see this how to build a product, right? You iterate you start with a skateboard you work your way up to the car or the pickup truck You don't add tires and then the floor and then the body Because what if the guy who's doing the tires never shows up you're kind of stuck if you start with a simple model That's That's how you start. That's the idea between behind iterative development and again Ensuring this process works. There's a lot of talk about how you're supposed to do development sprints My job here today is to fill in all those gaps about what happens when things go wrong What happens when people don't know what they're supposed to be working on? Does the product owner know what the development team is working on all those pieces of the puzzle? okay, so You'll see this throughout the course of the presentation. Just give you a little preview. So this doesn't shock you We're gonna play a little game, you know, I'm gonna ask you what this is and you're gonna tell me one word so Anybody want to take a guess what this what these things are? Oh Yeah, it's the worst burned arms to burn down chart in the world absolutely because you can see it's like nine months and haven't gone anywhere, but in general what are these? Problems exactly so what we're gonna go through today are all the real problems What are the things that happen to you in a project? most typically You get chaos right anything that leads to that kind of event You've got maybe multiple product owners giving you concurrent requests your team doesn't know what to do Nobody knows who what's going on for the sprint demo. What tickets are we grooming? Who owns what? Right where how does that work? So hopefully we're what I'm going to give you here is the keys to make all of this successful So this is going to be your foundation Now the first thing to have a solid foundation for a project absolutely Paramount is communication This is that part about the agile development that we don't see in that nice diagram with a scooter to the car How does everybody communicate? Most importantly all the processes need to be shared Everybody has to know exactly what their job is and that ensures trust if everyone on the team Trusts that everything is documented. Everything is written down and people know where to go to find the answers They need then you can get back to the business of getting the project done having the key knowledge on the project shared So let's play game What's the first thing we need to do in communication? Documentation that's the fun part so this is my list of things that you really should have documented if you don't Get do it right now like start writing it even if it's just a summary This is the stuff you want to have documented now the scenario I like to give for this sort of thing is imagine you're taking off the project and someone has put on your place Would they know where to go where to begin? Where is everything right? And I have all these posted online by the way in the session the PDF is already applied. So don't don't worry about taking pictures Does everybody know what workflow state they're responsible for do the developers know they're you know Ready to code review to the QA engineers know to pick up tickets in the ready for QA state and so on Have that documented and spelled out a Racy or rassy depending on how you want to pronounce it a table that outlines whose job is what? That's probably the most single important thing. This could be just a basic spreadsheet With each role on the project right lead developer a developer senior developer QA product owner Anyone else involved in the project release manager? Who does what on the job and outline? Are they the responsible party or are they just the informed party where on that spectrum did they land? Then the last one is I call it the objective rules and playbook Playbooks, this is the catch-all for everything on the project that everybody needs to know again Think of the example somebody has dropped off the project and needs to come back on Cold they have no time to get ramped up. Is there a one pager that outlines all of these steps clearly? Right, what do you do when a client gives you a request to fix something at 4 o'clock on Friday? When everybody's going out the door at 5 do you have a process for hotfix handling? Do you know who needs to be asked to get approval? How long does a deployment take? What are the alternatives? Can we wait till Monday? Write it out as a basic question-and-answer flow diagram and having that Documented shared and everybody in the team aware of that document makes a decision like that objective and Not emotional and that when you have a problem on Friday at 4 o'clock is the first thing that happens, right? Everyone starts freaking out running around like chickens. Oh my god. What are we gonna do pull up the document step one? Is it really a hotfix and just work your way through? Okay Let's have some fun now. This is the documentation side now. We'll get to the Jira side This is my favorite part because I am a Jira nerd. Yes, and I use Jira for all our projects in at Acquia That's standard issue. We do cloud hosted accounts a lot of customers bring their own Jira instance So hopefully what I want to give you today are the quick and dirty list of things you should be doing or try to do All right, so the first one This is hard. This is really hard Queries you find a picture for queries So let me first stop right first and ask a question who here has used Jira or is using it regularly show of hands Okay, awesome. Yes. I'm with my people So what if you don't know it already what I strongly recommend you do this is I warned you This was advanced is to learn some JQL if you know any kind of structured query language You've played with minus QL or you play with any kind of database querying then you kind of know it already And you can learn it very quickly thanks to the way Jira is set up. Hopefully this will show up So if you go to your issues and just start doing a search The default is to give you the basic setup and you'll see a list of selections up at the top Just start picking things to find what it is you're looking for and once you've built that query Go over to the right and click on advanced and it will turn it into JQL for you So right away. I have now my first query What's the project? What kind of issue type and it's once you start understanding how the query language works The difference between an equals and an in the exclamation point equals for not you kind of get your whole set of rules So just as it like absolute 101 primer These are the first ones you can start with like I'm looking for a ticket in a project I'm looking for tickets in the project that are only bugs. I'm looking for tickets that are bugs or stories Okay, easy, right? All right, next one anybody What is it? Columns, yes, it's not easy. It's not hard. So in Jira You think of Get some more coffee people. All right. Maybe that's the problem When you run a query now in Jira Your layout looks like a table. You get a list of results a quick side note If you don't know the key shortcuts in Jira T Just T no control. No command will toggle between That column view and the detail view and go back and forth If you're in this column view you can arrange the columns you any way you want and you can pick What columns you want by clicking on that columns button all the way on the far right very Very handy because how many times you wish you had an excel spreadsheet for all those Tickets to give to your customer. Now you could just crank it out and just send them a link and say hey I got it right here. What do you need a spreadsheet for? So everybody knows this right? I'm sure of hands anybody who's familiar with this ready Okay, so good. See you're learning stuff already. Awesome. All right next one filters. See this is easy All right, so sprint filters. This is my filters You can do for anything once you've learned a query you can learn to save it and once you save it You can share it and you can keep it to yourself and nobody else can see it So very often I'll do that, but then more importantly when you start a new sprint Instead of having to go to the board just create a filter that says project and sprint Equals the current sprint and save it and share it by doing that you can share that filter with everybody on the team They'll click on the link. They'll see that report. They can make their own columns They can change that filter however they want, but they get the same list of tickets that you're looking at Remember at the very beginning. What did I say was the most important thing clear communication making sure it's consistent and easily available Sharing a sprint filter by the time you get to sprint 10 You now have a list of all the links to sprint one sprint to sprint three and so on all readily available Now one side tip Don't name your sprint one sprint one. How many people have done that? Because if you do when you start working on a large project You're gonna get everybody's sprint one and how do you know which sprint one is yours? So first thing I advise is either give it an ID number or and the project name like you know I'm working for XYZ company sprint one and that will make it a lot easier for you because then you can just start typing in The project that you're interested in and I like I said, I don't have many times this is happening to you But that drives me crazy. So make sure you name your sprints appropriate your filters and your sprints appropriately Okay, now how to do this really quickly one other thing to make sure you're aware of is when you create a sprint filter or Any filter by default? It's only yours. You have to share it So very at the very top where there's the save button. There's a details link you click on that and There's this really kind of clunky UI where you have to add people that have visibility Typically adding everybody that's on the project is a good place to start because you want everybody on the project to be able to See your filter See this is all coming together All right any questions on that? All right, let's go next one tags. No labels. Okay, sorry. Oh, okay. I can see yeah tags So labels anybody here using labels in JIRA frustrated because there's so many of them, right? Okay so labels Have an infinite number of uses the most Benevolent of these that I see is for your sprint demo So you're on let's say day eight or seven of your ten-day sprint your two-week sprint And you and your product owner are figuring out what is it? Do you want to show off because the stakeholder is coming to the demo? So how do you quickly mark the tickets that are going to actually be demoed? Just add a demo label and then you can run a filter query for This sprint plus label equals demo And now I have a pre-built list of all the tickets that are going to be on the demo Don't have to build a spreadsheet done you save that filter and every sprint you will have this sprints Demo tickets right which is what the developers need to see is that something that I'm demonstrating Does the product owner know that those tickets are being demonstrated you can manage that any way you want? But now building on that query add in the label and you can kind of see how we can use this Using it more for actual filtering and not just for the customers marking it as Urgent or whatever kind of crazy labels your client likes to do Okay Next one. This is hard Components awesome. Yes components Components to me are the most underrated Feature of Jira and for us in the development world. It works perfectly with content types It's a perfect one-to-one. So if you're working on tickets you typically have them arranged by epic, right? So for example, you're working on a let's call it a news release content type You've got theming tickets. You've got back-end tickets. There's a view There's a whole load of stuff. That's associated with it by the epic You may have your theming in another epic by adding a component to that ticket now You have another way to organize those tickets in a some what more? Drupal organization and the real benefit is that of this at least one of the ones I can think of is regression testing in QA So imagine you're in your sprint and the last couple of sprints have been all over the map because you've got work on this Thing and the theming and a view and permissions and workflow and there's something wrong in the home page So the home page is a good one because everything feeds into it How can you quickly find the last couple of sprints worth of tickets where something may have broken something on the home page? You can just go back to the component for home page and find the tickets that were associated with it Not having to look for the epic or was it a view was it back-end? You tag it while you're doing grooming because you know that ticket affects that area or that functionality Now you have another way to find that work more quickly This is really helpful when you're working on large projects And I mean like multiple development teams multiple product owners, and you've got like 50 60 tickets a sprint You're going to find something in the last three sprints. Do you really have time to go through 150 tickets? Use something like this and this will let at least narrow it down and you can find likely candidates that may have affected that regression Besides the content type there's other areas to use and it's just about the typical functionality Is it around content editing? Is it around image editing? Is it around analytics advertising? And so this is my list That I like to use and again this is posted in the BDF Take a picture copy and paste and we'll get better because I'll show you how to load this into your project like that But you can see I have content types. I have integrations and then there's like everything else error pages How do you work on your error pages? Do you have an error pages epic? Probably not at least you have something now It's usually a bug ticket now. You have another way to organize those tickets Okay Next one Think plural of the singular Tables. Yeah, exactly So Who here is using confluence along with Jira? Okay, fair amount of you. So if you're not already aware you can insert a filter in your confluence page and That means all those queries that we just talked about the list of demo tickets The list of tickets in the current sprint are now Instantly tables on a confluence page So you can take that query that you just built and now stick it on a page And you can organize exactly what columns you want to display it on the bottom right corner It lists all of them like do I really need the issue type when it was created? Probably not, but I do want the summary and the key This is again think towards your product owner the people that you're working for Are they able to see what it is that they want to see you can edit this and customize this as you see fit So two examples here I've put in is a page that is specifically dedicated to all the work that we've done lately That's specific to the content type article because for this imaginary client That article is the big feature that they want to work on this quarter of this sprint whatever it is The first question you always get is oh, what are we working on in this sprint towards this feature? That I've told you a million times we want to get done now You have a page that automatically updates you don't have to go back and generate a new report because that's a waste of your time You have think better things to do save the query build a page and you're done okay This is yeah, I'm from Philly. So forgive me for the obligatory cheesesteak, but it's not cheesesteak This is also a really hard one Subs can you that's a stretch all right? Subtasks Cheesesteak sub doesn't okay. I had a sub but nobody got it. So I figured my head was awesome fun All right, so in Jira you can use Subtasks and what a sub-task is is when you're in the ticket a story a bug anything you can add a sub-task right away This is really helpful when you're doing planning for that next sprint or grooming So a typical case is you've got a ticket where there's someone else involved That's not normally involved on the day-to-day process a good example design You're working with a company and they have their own internal design and marketing department. They need to review You know how this theming work looks before it's sent off to QA or to the product owner for UAT So you add a sub-task that says don't forget to get the input from design and add it as a sub-task so now you have a marker in the ticket more prominent than a label right because the labels get lost and Everybody can see if it was done or not and more importantly is that you can assign it. That's the big one So in that case so-and-so needs to be asked if this data is available or whatever that task is Another one is let's say it's a very large or complicated ticket add a reminder basically to say Hey, let's check in on this product on day five and take an extra couple of minutes after scrum Make sure that we're on track because it's really important. We get it done You will forget when it comes to day five right because you're in and out every day Adding a ticket right on the board. It's in your face. Everybody sees it. Everybody knows that we need to check it again Clear consistent communication to everybody who's on the team Okay Next one ceremonies It's a little hard. Okay You're already hopefully using a daily stand-up You're using a probably a sprint and review and a retro and a demo and you're hopefully doing ticket grooming Are you doing sprint planning? Is anybody doing that at the beginning of the sprint like you're supposed to okay? Good, so if you're not you should and a good way to keep this short and concise is Prepare a document that is shared with everybody that lists the tickets that everybody is committed to for the sprint But more for the product owner for the customer is to announce What are the real goals of the sprint in English? Not we want to get ticket SB 1155 done It's that we want to be able to a User can log in and change their profile like what's the feature? What's the elevator pitch that a person at the customer side can say we're working on this and It it got done. It's yes or no like can we show that the news release is now show up on the homepage That's a goal right have the top two or three major features or goals that the customer thinks as the most important things in That sprint put it in a table and that at the end of the tape at the end of the sprint when you're doing your retrospective You can just say do we meet this goal or not? And now you have a metric for Qualifying if the sprint was relatively successful or not if you have three primary goals and you've met them all That's a successful sprint if you have three primary goals and none of them got done They all turn out to be way more complicated than you thought and they got carried over into the next sprint That sprint wasn't as successful But now you have an objective Unemotional metric that everybody can be judged against or everybody can see how they're progressing against right? That's the important thing Another thing you can do obviously if you have time is assign the tickets to a developer This is a sidebar note. We won't have time to talk about custom fields But if you're not using it already, I would strongly recommend a custom field for a developer You have the reporter you have the assignee add a developer because as a ticket goes through a workflow You won't remember who worked on that ticket and nobody has time to read through 50 comments to find out who was Okay, next one easy Pruning yes, so I'm not saying this is my project But the numbers on the side you probably can't read but the top number is 420 403 80. This is the days in the issues log that were unresolved So hopefully your backlog doesn't look like this, but if it does Probably does you need to do some pruning. So this I try to make this is this is the actually I know I'm a nerd. This is the fun Ceremony to do because you can take your customer once a quarter and say we got a lot of shit in the backlog We need to get rid of let is spend an hour or two hours and just go rapid-fire through tickets Use a filter that says find me everything that hasn't been touched in over 14 weeks That means it's stale that means nobody cares about it It's not gonna get done make a rapid-fire decision to close those tickets just get it out If it's really important you can create another story But this way you're not going to be having to filter through that massive backlog of cruft Get rid of it all. So I say do this quarterly It's fun, especially for a longer longer term projects that are running like 9 12 18 months anybody Take a guess grooming yes Grooming so if you have oops if you have multiple product owners on a project, right? Not just one but two three four you have a larger team and You have to get your grooming done It's the product owners responsibility to get those tickets groomed They're the ones they're gonna bring them to the team and say I want to get this feature done Is this ticket ready for work or not? If you have three or four of them now you have competing conflicting interests How do you maximize efficiency of a grooming session when everybody walks in with their top 10 list that they want to get done? And you only have time to groom 10 tickets So what I suggest is first of all time box it So you should allocate a rule of thumb I use is about half an hour per product owner per session because ever after a while Everybody's gonna go crazy and you really want to figure you should not need more than five minutes per ticket to groom it If it takes more than five minutes the ticket's not ready. It needs to go back in discovery But if it is ready your team can size it and move on to the next ticket Now the way I do this is I set up a worksheet with a grid by Product owner and I put in they put in the tickets They want to groom and they tell me when they're available So if I have two slots a week Let's say a Tuesday and a Thursday or a Monday and a Friday Sometimes one can't make one and another one can't make another Now you can fill the pieces together and organize a grooming schedule that is actually more efficient for everybody So I know I don't have any tickets being groomed on Tuesday's call I don't need to attend I can do something else But my tickets will be groomed on Thursday, so I'll make sure to make that one It makes it a little bit a better relationship For the customer and it makes it more efficient for your team because now you're actually got stuff to go through There is a couple of Assumptions like I mentioned make sure you have a hard deadline like you really have to time box it and keep things moving Right, but if you do this if you have four owners you can go through a list of tickets like this and easily in an hour If not less yeah question So that's that's exactly it so well for grooming alone you have to make it fair Right, so if they're all using the same development team, let's say And these are my three product owners They are the ones responsible for getting their tickets into the next getting it ready for Development and then in the planning meeting you have a meeting with all of those product owners and you decide okay We can fit x number of points what really needs to get done now What can wait a sprint what can wait three sprints and so on For a larger types of projects like that you usually have to use another tool on top of Jira like a ha or Again chart to kind of map out the amount of sprints You need to get a feature done to make sure that you have enough time to get it done And there is a little bit of trickery with that but for this argument This is just about the grooming itself, so that's like the first step in that chain But yeah a good question in terms of the beginning of the sprint they have to hash it out among themselves It's a fist fight basically or horse trading like yeah, let's make this a stretch ticket or we can wait a sprint We really don't need it right away So just set up a document like this and share it with everybody on the team all the product owners And they fill it in do at the same time I do one let's say one per week and then everybody knows What tickets are going to be groomed and this also gives the developers a little bit of lead time to actually go and read The tickets ahead of grooming to say yeah, this one's not quite ready or I've got a question or this is really easy And they gives them a little bit of time to be prepared now the other part of grooming obviously is Pointing or sizing the tickets And so I like to use a pointing poker This allows everybody to keep it fair and keeps the voting time so that you can watch that five and a clock And you can arrange it how you want so all you have to do is just type the ticket in I'll have another window open I'll show you what it looks like You just go to the site you either join an existing session or if it's yours you type in a session number And you have a lot of options You've put in your name you can join Most importantly is what you're going to be using you want to use t-shirt sizes you want to use a Fibonacci sequence You want to use ours? whatever it is and For product owners that can join as a non voting person as an observer The nice thing is that once everybody votes and I'm doing this with only two devs here But the idea is I Cast a vote for eight points and then everybody else votes and if everybody votes the same thing you see consensus Or if you see that everybody's voting different sizes you see what the tally is over on the right-hand side over There right so I see that I had an eight and a 13 in a typical Pointing session I may have let's say three eights and one thirteen then I can say okay so-and-so you voted 13 What are your concerns and now you get right to the heart of the questions that are being asked by the developers? Why did they think why did they understand to be more complicated than it sounds? All right any questions on it, okay? Yeah, you're not gonna get this one. It's not one word. It's two tips and tricks Okay, so a couple quick other things just to throw in here to round these out One is Using this is all kind of using the ingredients that I've started giving you now I like because I like color because the sprint board is pretty boring I like to use queries on the back side to color the code of the tickets By for example a custom field or some other combinations So in a case where you have a large project and you may have multiple teams like you know Let's say North America South America in Europe you have development teams in each region You could make that a custom field and now you can share a single board But color code, you know Europe is blue so I can see what the tickets Europeans are working on Green for South America, and I can see the ticket says green. I'll show you what this looks like in a second Another is when you're in the backlog create a sprint just for organization You don't have to ever open it, but now you have like a holding bin you could call it like the icebox or You know tickets We really need to focus on for the next couple of sprints Especially if you have a lot of stuff in your backlog because you haven't done pruning and you have 400 issues back there You can pull out let's say the 10 or 20 that you need to focus on just create another placeholder sprint The last thing to make sure if you've not done this before and if we have time I'll show you how to do this Set up multiple boards. You don't have to have one master board or one single view You can make one Kanban and another one scrum. There's no rule that says that they all have to be the same So from a product owner perspective, that's a Kanban board for the UAT state, right? It's ready for me to look at I'm looking at it and I'm done with it and that's it So just put those three workflow states in one board and that's specifically designated for a product owner You can do the same thing for QA. You can do the same thing for The code reviewer right coming out of ready and going into code review They don't have to be time-limited. They don't have to be a typical scrum board Okay, so let me show you what I mean by this color coding and the swim lanes And for example, I have another label here stretch What if you add a ticket to your sprint because you've got capacity you want to show that that ticket was added? Yes, Jira will show that it was added to the sprint after it was open But you want to be able to label it right away because that means it wasn't originally planned for it's almost like icing on the cake You can make it its own swim lane in the backlog And now you get the customer to not focus on the tickets that were Icing on the cake, but really the tickets that we started this sprint with Does that make sense? All right, so in the back if you go to your board and you configure it for example here. I'm using This is not playing it's not You can use Queries and you just type in for example. I want to have a label's equals stretch And so now if I add that and I go back to my board if I have any tickets that I've added They show up in their own swim lane basic the colors that you see here blue and gold Those can be either also additional queries or let's say in this case. I'm assigning it by team So let's say the blue is the US team and the gold is the India team or whatever you want But now you can see who's working on what and you can say oh the blue team is way ahead of everybody else and Gold what's going on there? So I can already see some more reporting and everybody sees this and everybody knows what you're doing Again the example is to have clear and consistent communication on the product on the project Okay, one more I think this is the other example With the queries for the card colors right, so here I'm using Find the ticket Yeah, I'm using extra custom fields and here I've got a team so now I can say PS team is blue I can see right away that how that team is performing So now I'm just assigning it by card color and I'm using that label team equals whatever the name of the team is That's it. It's a little bit of effort on the upfront But once you have it in place you can adapt and adjust this any way you want I'm just looking at one custom field, but it could be anything it could be by size It could be by component. Let's show me all the content news article Tickets in one swim lane because there's a product owner that is just on my back all the time about those tickets And I don't want to set up a separate board give them their own swim lane Okay Now we get to the fun part Kittens who don't exist kittens rest API Yeah, they're very different go to the pre-net this morning by the way. Do you guys have a good time? Yeah, okay good Has anyone used the rest API in Jira does anybody know what I'm talking about let me start with that anybody have a clue What I'm talking about Okay, a couple of you good. So this is really getting to the meat of this so if you have a Jira instance you can add this to the URL and Add your query as a string and you get a JSON Object back with all that data. So instead of looking at it from a board Look at it from a pure API perspective. You can hit Jira and get whatever pieces you need This is just one end point. There is a ton of them And I'll give you the URL for it, but this is the best example right out of the gate So if I use that query that I just told you about before projects equals You know sp1 and issue type equals bug I passed that to the end of this string and I'll get a JSON set back and I get a count 35 So what this means? I don't see this everybody's gonna connect the dots here. I Could build a Google sheet with a bunch of fields and query my Jira and build any kind of report I want So you can run a query on Jira that says show me all the tickets in this sprint that were reopened from QA specifically and I can get a count what that number is or show me all tickets whose component is Article or whatever anything you want as long as you have a query that works So you can go to a Google sheet build that query Pass it along and oh, sorry. This is the end point for all the rest Endpoints on Jira. You'll see a long list and I'll go through like three of them here But you could build anything you want so here. I'm going a little crazy But you get the idea I've got you know a half a dozen sprints and I see the number of tickets I see the number of stories. I see the number of bugs. I see the number of stories Specifically for the FV group, whatever that is How many of them were reopened how many of them were reopened specifically from QA? How many of them were opened specifically from UAT, right? That means the guys that caught it on my side that the tickets that were caught by the product owner you Ideally don't have any tickets to reopen from UAT and I'm this is all fake numbers By the way, so don't think my project is as bad as it looks please But the idea is once you have this now in Google sheets There's awesome charting tools and now you have a nice fancy graph You can say hey look our overall quality is improving, you know, why are these bumps here? Why is the gold spiking here? What happened in that sprint ways to start conversations with your with your customer? But this is way way more detailed than you're gonna be able to get out of Jira and easier because you already know How to use Google sheets, right? Okay, Chris. This is all great. How the hell do I do this? Okay? Easy you use this function. That's it. I know real easy. So I Have instructions this is basically one variation of the function call and I have this in github and it's I'll come back to this. It's here. You can download it plop it into a sheet I have you specific instructions how to do it you go to the script editor in your Google sheet You add this you have to you know give it permissions The only piece that's the most important is you have to add your username and password right because it's Jira You can't just go to it. You have to authenticate so if you authenticate the endpoints that I mentioned you can query But you have to be authenticated in the same session. This is another way to do that within a within a function call So all this is already you don't have to do anything You just copy and paste this and all you do is on your sheet type in the query project equals project type equals anything But a subtask and the sprint was 1122 remember at the beginning. I told you name your sprints with an ID number So now you have a reference because you know what that ID is and you can make queries out of it Okay, it's a lot right, okay? I Got more. This is gonna be awesome. All right next one Standardize your projects. This is a lofty goal But my hope is what I'm gonna be able to show you is a way for you to Standardize your projects because a lot of time is spent getting stuff set up at the beginning You start with a blank slate a new project in Jira You have to go back and add all the tickets you have to add your epics You got to add your components all these things have to be added in and you usually do it by hand Now if you've ever imported stuff into Jira, you know that you can export Let's say from a Google document or Excel a CSV list as long as the fields line up You can import all your stories in one giant pass Right all you need is like a summary And that's it right I mean bare minimum ideally summary acceptance criteria Implementation details descriptions some other notes if you have them in columns You can export that in and import them easily into Jira Epics and components are a little trickier. Epics are just another version of a ticket So this is the first one will do which is really easy because it's the same thing as importing your stories Except that you just say it's an epic and once you have an epic list Now you can drag all your tickets over and associate them to that epic much more quickly Most importantly is that all your projects will start now to be more consistent meaning one person says they have an issue on You know some epic somebody on another project knows what you're talking about because they have the same Epic on their project and that means you have now some equal waiting to figure out Effort because on one project this epic took us X amount of hours Now I'm coming to this new project. How many hours is it gonna take me? Well on the last one it took me 10 hours So now you have some better equivalents in terms of reporting and a feedback loop if you're really into this kind of stuff You know over the course of a year or two now You have a lot of projects to start measuring against and figuring out what kind of budget you want to plan for and as a Business owner that's really what you want. How efficient is my team? Can I accurately estimate how much this project is gonna cost me? And then for developers obviously they come on to a project knowing that it's the same naming Naming convention from one project to another makes things a lot easier one person will call something one thing and another person calls it another Get rid of that make it all the same make it uniform as standardize it You may have your own nomenclature for your own projects make them all the same on all your projects, right? Okay, so what I'm showing here on the right-hand side is you know You create a ticket and you want to be able to associate it to an epic easily So if those epics are already there as you start creating those take those stories The product owner starts creating those stories They can associate them easily to the epics that you're starting them with right lead them down the path You don't want to let them just start creating stuff Give them a starter list and that's what this epic list is supposed to be For components, it's the same thing remember that long list of three columns that I gave at the beginning If I have that already existing in Jira all they have to do is just start typing the first couple of letters And it automatically makes a match and now you have a preset list of things to identify tickets with Okay. All right So the good news is importing epics into Jira is really really easy All you have to do is go up to issues import from CSV Match up your file and boom. You're done. That's it. I mean we'll do a dime a live demo Now That epics list that's also in github. So I have a CSV file up there You can download it edit it play with it and use that as an epics list to start with customize it It's just a CSV file. There's nothing fancy about it Components is a little trickier components unfortunately They in order for you to import a ticket which has components assigned to it The components have to be existing in the project already. This is the catch. So There's one the API endpoint which is for a component So how do I import? 50 components I go to this website URL 50 times No We use postman. Is anybody here heard of postman or use that okay? So postman is an API tool that allows you you can script it really easily to make repetitive calls So if that API that I gave you at the very beginning with the JQL is of interest Download postman put in the credentials for your Jira instance and start playing with your queries And you'll get the JSON result back in that tool and it's nicely formatted You don't have to go to JSON lint and clean it up so you can read it But for our purposes because I got to put in 50 actually 44 components I use postman because I can attach a script to it and use place holders to take a CSV file and Put the two together and do 44 calls to that API endpoint and boom I have a components list so this sounds really complicated, right? So how about we do a demo because it'll be a lot easier Okay Alright, so We already can see my screen. This is horrible This work I didn't break anything, right? Yes, okay awesome That's always the first goal of the session. Alright, so what I've got here. This is my Jira backlog, right? You saw this before There's a bunch of tickets in here, right? They're color-coded nice happy And if I click over here on the left, I have some epics that are already existing So if I have a ticket, right? You drag it and you can assign it to an epic easy if I go to components, I Have a list of components and this is a Version of the list that I gave you if I try to import tickets into this project With components it'll work because they're there if I go to a new project and I'm called a Baltimore So I have no tickets. I have no epics and I have no components, right? So the other way to do this is just type them in over and over again for every project and nobody wants to do that So let's put them all in automatically. Alright, so let's start with the epics, right? Let's go back to the backlog Can everybody see this? Okay, is this big enough? Hopefully Okay, so here on their epics you see there's nothing there, so I'm just gonna go to issues import from CSV I Find my file and I went up to github Chris Urban and I downloaded the file So there's my sample epics list Right now I've also actually uploaded an existing configuration file because if you really want to be lazy And there's not a lot of work here You could actually download the configuration file and upload that too. You don't need to you really don't just download that one file And it will match it. You'll tell it where to put it I say I want to put it here and be more don't worry about the next and now I match up The fields and there's only five fields in my file the description So I match that to my description the epic name I match that to my epic name. You see where this is going issue type Because I thought about all this ahead of time and name the columns correctly priority and summary And it'll say okay, let me do a quick check. I could validate it and I'll say mm-hmm. Yeah, this will work 19 epics will be created. All right begin you get the fancy Progress bar that everybody knows and loves boom and now if I go back to my Baltimore project And I see behold are all my epics. Okay easy Components this is a little harder now postman Looks like this and hopefully you can see this it's really kind of dim Okay, now the way this works in postman What you've got is basically a couple of ingredients. You've got a destination address Which is that API endpoint that I told you about I'm using in this case I don't know if you can see this here local host 8888 because it's my it's my Jira on my laptop We you don't have Wi-Fi that kind of sucks. So I'm doing this locally But it would be your Atlassian net. It's your local server. Whatever that URL is. That's what you fill in the rest See what I did there is the same for every Jira instance. So rest API to slash Component in this case. All right. This is the complex one So let me take a step back to the beginning where we were talking about a real simple query like Show me all my projects. This is one of those endpoints in that rest API list all you have to do is Add and I wrote this all out in the get hub Read me you need to add your authorization, which I've already done here But you basically go in and do basic auth and then type in your Jira instance username and password Once you have this here and use hit update or save It will add it as an authorization string with the base 64 encoded thing That is that, you know gobbledygook that you saw in that earlier code snippet That's the translation of my username and password hashed as base 64 All I need to add is that it's sending JAP like application JSON so that the endpoint knows I'm sending them JSON and I query the project and if I hit send I Get of course That's because I zoomed I should get back a JSON script. That's a weird one Love live demos You get a list of You get a list of the projects that are in your local Jira instance and it's in that same JSON format with name of the Name of the project number of the issues who created it when was it created all those all those data points All right, so you can go on from there and add other things now that I know my project I can go back and get the list of components. I could go back and add a specific component And so this one is the one I'm talking about right here. This create a single component this is saved from postman as a Collection that's what these things on the left-hand side are called and that setting file is what's in the github So if you download the create or add a component collection for postman open up your postman instance and import it You'll see the exact same thing here. All you need to do in do is again enter your authorization Save it and then you need to customize one thing and that is what's the project that I'm adding these components to be more Right. So now I have that this tells the Postman instance to take the component name and the components description from another CSV file And every time I go through that list It's going to post that component and that description and it's going to do one two three four five all the way through the entire list Right. Okay. So now we have this I Go to runner told you this was going to be hardcore and now I select that collection that I had add components I'm going to tell it because I happen to know there's 44 files a 44 rows and I go to my Components descriptions Json source file. So in this source file, and so you'll see what that looks like Of course, I don't have it open. Yeah No, I didn't record it. I didn't record the demos themselves But there are screenshots and those are in the github read me so you can see screen by screen what I'm showing you So that Json file that I'm uploading this is what it looks like It's literally just a name and a description and I'm going a little hog wild with the description You probably don't need it, but you do need that original name. So that list that I showed you at the beginning with all those Components that's all in this one Json file. So what I'm basically doing is telling Postman go through this list take the next one post it to my local Jira instance Which creates a component go back to the list take the next one post another component 44 times Right, so I pick that one and You can test to make sure it works by hitting preview and yes, you get the things. I just showed you right? It's reading the component. It's reading the description and I just fire away And yes, you will get a 400 bad request which you can ignore, but if I go back to my project Which was where there we go oops Miss something. What did I know? Oh, you know what? I didn't save the It would help if I save this area area 201. That's what I should get See this is an awesome live demo when we get to do debugging and now if I refresh There are all my components loaded and ready to go and so on and so on so you just saved yourself a little typing now It took us what five minutes to do this for one project rather than type in 44? Components for every single project you can add this to let's say your project setup Ritual when you're opening a new project for a customer opening a new project for another job Part of your setup process is creating a new instance a new project in Jira Adding these components and adding all of those epics that we just listed and now everybody has that same starting point So now when I go back to my backlog and you're doing grooming you create a new ticket Whatever I'm putting in there I can start automatically typing in you know news and automatically my content type my component shows up and The epics that I wanted to list to Let's say there you go news releases. That's the epic in this case. They're both named the same, but you get you get the idea Okay All right, so that's the live demo. Let's go back to the PowerPoint real quick Any questions on that? That's a lot to absorb, right? I'm all gonna go back and watch the recording again All right, so all those pieces that I just talked about they're all here under agile Drupal in GitHub the epics list The Jira import config file if you need it you want to go crazy You don't actually need it the components list itself Which is that Json that I showed you and the postman setup files So all you have to do is just import them into postman Update to your local URL your local authorization and you're ready to go All right, so what do we learn? Document everything we went through all of these things here There's a lot to go that we went through you know like I said if you have any questions Let's talk let's ask and you can catch me at the aque booth downstairs We skipped over a couple of things. We'll talk with them later. Here's my contact info Please reach out to me if you have any questions. I'm happy to talk about this in more detail All right. Thanks guys. Oh one more thing. I'm supposed to show you the Contribution sprints on Friday If anybody's interested in the conference organizing distribution cod, we're working on that for d8 There's a boff for that next and we're going to be sprinting on it on Friday Thanks