Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Search the Community

Showing results for tags 'series'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Support
    • Open Forum
  • Professional
    • Management
    • Requirements
    • Design
    • Development
    • Test / QA
    • Operations
  • Interesting
    • Atlassian
    • Security
    • E-commerce
    • Invision Community
  • Jobs
    • Looking for employee / consultant
    • Looking for Job / Assignment
  • Building The Site's Forums
  • Destiny 2's Discussions
  • The Journey's Discussions
  • Cinephilia's Topics
  • Cinephilia's Movie Database
  • Diablo 4's Diablo 4 Topics
  • Shadownessence's Topics
  • sensory hyperreactivity's Topics
  • Wolcen's Wolcen Topics
  • Quality Assurance Heroes's QA Topics
  • Visual Studio Code's Forum
  • Adobe Illustrator's Adobe Illustrator Forum
  • Sketch Guru's's Topics
  • Requirements & test management in Jira's Topics

Calendars

  • Community Calendar
  • Professional Events
  • Management Events
  • Requirement Events
  • Design Events
  • Development Events
  • Test Events
  • Atlassian Events
  • Operations Events
  • E-commerce Events
  • Destiny 2's Events
  • The Journey's Events
  • Cinephilia's premieres
  • Diablo 4's Diablo 4 Events

Categories

  • Jimi's Files
    • Curriculum vitae
    • Presentations
    • Certificates
  • Management
  • Requirements
  • Design
    • Fonts
  • Code
  • Test
  • Operations
  • Atlassian
    • Certificates of Excellence
  • Security
  • Ecommerce
  • Shadownessence's Files

Categories

  • Management
  • Design
  • Requirements
  • Development
  • Test & QA
  • Atlassian

Categories

  • Personal
  • Professional
    • Management
    • Requirements
    • Design
    • Development
    • Testing
    • Operations
  • Interesting
    • Atlassian
    • Security
    • E-Commerce

Categories

  • System Science Program
  • Graphic Design Program
  • Single Courses
  • Certifications

Categories

  • Management
  • Design
  • Requirements
  • Atlassian

Categories

  • Management
  • Design
  • Requirements
  • Development
  • Test
  • Operations
  • Atlassian
  • Security
  • E-commerce
  • Sales

Categories

  • Personligt
    • Jimis profiler
    • Åsikter
    • Humor
    • Spel
    • Träning
  • Allmänt
    • Internet
    • Program & tjänster
  • Intressant
    • Prylar
  • Professionellt
    • Management
    • Krav
    • Design
    • Webbutveckling
    • Test
    • Atlassian
    • säkerhet
    • Förvaltning
    • Ehandel
    • Wordpress
  • Personligt_

Blogs

There are no results to display.

There are no results to display.

Categories

  • Personal
    • Humor
    • Music
  • Professional
    • Management
    • Requirements
    • Design
    • Development
    • Testing
    • Operations
  • Interesting
    • Atlassian
    • Security
    • E-commerce
  • Destiny 2's Videos
  • Destiny 2's Streamers
  • The Journey's Videos
  • Cinephilia's Trailers
  • Cinephilia's Full Movies
  • Diablo 4's Diablo 4 Videos
  • Wolcen's Wolcen Videos
  • Visual Studio Code's Videos
  • Adobe Illustrator's Adobe Illustrator Videos
  • Requirements & test management in Jira's Videos

Categories

  • Just for fun
  • TV & Movies
    • Lord of the Rings
    • Star Wars
    • Marvel
  • Atlassian

Categories

  • Games
    • White Wolf
    • Drakar & Demoner
    • Mutant
  • Books
    • Management Books
    • Design Books
    • Development Books
  • Comics

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 6 results

  1. I often get questions on how I think the best setup for Jira and Confluence should look when I meet organizations. Because of that I will make a series of posts about this where I setup Jira and Confluence from scratch. This will include not just how I do things, but also the thought behind it. I hope you will find this useful for setting up your own setup in Jira and Confluence. This series will be divided into several parts. This is because adding every step in a single post would make for a very long blog post. Dividing into a series also make it easier for you to look at specific parts that is most interesting for you at the moment. The parts that I have in mind could change as I write the series, but at the moment the plan is this: Part 1: Defining the tools Part 2: Defining Jira Issue Types Part 3: Defining Jira Issue workflows Part 4: Defining Jira Screens & Custom fields Part 5: Defining Jira security & access Part 6: Defining Confluence Information Structure Part 7: Defining Confluence Requirement Templates Part 8: Defining Confluence Design Templates With the setup completed in Jira and Confluence I will probably add a second series called "Work processes in Confluence & Jira - From Need to Deploy" where we go through how to use the setup from a practical point of view. It will be a more generic process so it can be used in any methodology with some minor tweaks. If anyone want I could also add a post about how to use the power of Jira and Confluence for programmers without ever leaving your IDE. Is there anything you miss from this series that you feel I should add?
  2. In the last article we talked about defining workflows, so now it's time to talk about defining custom fields and screens. The custom fields is where most companies make many mistakes by trying to build new ways for Jira to work and screens almost no one seem to use. Let us change that, but first let us go over what these things are. We start with custom fields. Custom fields explained Custom fields are extensions of the data built in to Jira by default. This allow you to make adjustments to your Jira instance in the event that you need it. Custom fields comes in many pre-defined formats such as date fields, droplists, labels and even cascading select lists. In short you can model the data you work with pretty much any way you want. That is usually also the big problem with custom fields... Custom fields are defined just like most things in Jira using attaching the custom fields to a scheme. For custom fields this is called Field Configuration Schemes. These schemes connect a custom field configuration with the custom fields. This field configuration is what defines how each custom field should be used in a specific context. This allow you to have different behavior and configuration for the same fields. Custom fields - new data objects that extend the database model. Field configuration - Definition of configuration and behavior for custom fields. Field configuration schemes - map fields with field configurations. This is attached to a project to define that projects field configuration. Impact on performance Custom fields have an impact on performance. Period. Anyone who think otherwise do not understand how custom fields work or what impact they have on the system. Jira uses an indexing system that cache data in order to quickly find the relevant data you search for. For this Jira uses Apache Lucene, an open source high-performance, full-featured text search engine library written entirely in Java. Whenever you use a board, filter, dashboard or search in Jira you will use Lucene. Every custom field you add will grow the data exponentially in the index as it will be added to every single issue in Jira, even if that issue does not have any data in the field. Just by adding custom fields you will see an impact on performance and if you are careless about the size of your projects or do not manage your releases properly, then you can render the Jira instance almost unusable dye to loading time. Use custom fields with care! Mandatory fields impact Mandatory fields can be set in the field configuration. This will make a certain field mandatory that you have to fill in. This may sound like a great way to force the users to fill in the data you want them to, but in reality it is causing serious issues, especially when working with any form of integration. When you have integrations that send data to Jira, then do not use mandatory fields, or make sure that it is mandatory for all projects. Having multiple versions of what data is mandatory is a sure way to make integrations fail. This is because we set up a condition that say that unless this data is part of the data you want to submit, it will fail. The most common reason for using mandatory fields is because the teams do not understand why they should fill in the data. This is because of poor education on how the workflow should be done or because the way it is designed makes no sense to the people actually doing the work. This should be solved on a method and process level and not in the tool. Building new systems in Jira with Custom fields The biggest failure I see in Jira is when custom fields are used to extend the capability of Jira to something it is not built for. The most common thing I see is that a story is used as a business need and then kept all the way though deployment. I understand the thought behind it, but the execution will require dozens if not hundreds of new fields and it will just become a mass of data that is almost impossible to work with. Jira is first and foremost a development tool. It starts with a need that has been transformed into a work order for the development team. In many cases you also have test included in Jira. Often as a plugin or just in the workflow itself. That is all Jira should do as there are other tools that should handle business need, requirements as well as build and deployment. In large organizations this behavior is very dangerous. I often see people getting burned out or just give up an aspiration of coherent and logical way of working as the systems evolve to grotesque monsters no one really understand or want. Do not build new ways of working, stick to the standards that exists and you will be much happier. If you are going to extend the capabilities of Jira, then always use a Jira designer that can design the system globally for all users. NEVER allow teams and groups within the organization to design on their own, unless they are an isolated group that never need to work with outer teams or systems. That lead to a fragmented way of working that will cost millions to repair in the future. One field to "always" use Despite all the issues that comes with custom fields there is one field I always think makes sense. There are others of course because in all organizations there are a few fields that makes perfect sense and that really improve the way of working. One such field is "Team", but only if you are not using a plugin like Portfolio for Jira as that already have teams built in. The reason why team is useful in almost any scenario is because it allow you to work across Jira Projects in a standardized setup. This way we can avoid Jira projects with hundreds of people and instead work with boards. Using this field you can assign issues to teams rather than people allow for cross project assignments. We will discuss this more in future articles. Screens and why they matter Where custom fields are abused to the point of absurdity in many organizations, screens are barely used at all in my experience. This is strange as screens are very useful for making sure you are working with the right data at the right time. This will make things much easier when creating new issues or allow you to have certain data filled in during transitions in the workflow. Screens are divided into 3 views: View screen - The view used when you look at an issue i Jira. Edit view - The view showed when you edit the issue. Create View - the view when you create an issue. This allow us to focus the information in creation view for example to make sure that we only see the fields that we actually need, and then have all information in view and edit. When defining screens we have three parts to do so: Screens - Where we define what data should be available in the screen. Screen Schemes - Where we define what screens should be used for the View/Edit/Create views Issue Type Screen Schemes - Where we define what screen schemes should be used for the different issue types. One common use of defining screens is to define the create view for defects. This allow for a more focused defect report process where only the fields we really need is shown when creating the defect. Once created it will allow for all the same fields as a story since it is actually a story that describes a need that has yet to be addressed. Defining fields in a screen So, first we start by defining the screens. First we want to create a new screen for defects so we can define the fields we want when creating new defects. We go to Jira Settings ->Issues -> Screens where we find all our current screens. Then on the top right we can click the button to create a new screen. Add a name and a description and then click add. This will take us to the screen configuration page where we can define the data we want. Since this is a defect we want to capture the problem, where the problem occurred and also who should get the defect to look at. We define the fields like this: Issue Type* - Needed to we can set this as a defect. Reporter* - So we know who reported the defect for follow up. Summary* - The headline that summarize what the problem is. Environment* - Where was the defect found (test, pre-prod, dev and so on). This is needed for defects, but if this had been for production incidents we would not need this field as it is always in production. Affects version* - what code base or release is this related to so we know in what code we should look for it. Description* - This is where the defect is described. It should be steps to reproduce and expected results. Attachments - Pictures or videos that help describe the defect. NEVER upload office files here as you need to download them, which is a horrible way to work. Assignee - Sometimes used to assign a defect to a QA lead for example or a Project manager for attention. Responsible team - When the responsible team in known it can be added to the defect as well. Priority / Severity - How bad the defect is and not how soon it should be fixed. Components - what area of the system the defect affects. Labels - for labeling. Linked issues - If there are other issues that are relevant to the defect. Epic Link - If you use epics to group things. * These fields are mandatory. The rest can vary depending on your work process. It is important that these fields are also available in the default screen. If they are not present there they will not show as we do not have custom screens for the view or edit screens in this example. If you forget to add them, then do not worry. The data will still be there, but it will not show until you have added the fields to the screen. Defining views for Defects With this done our next step is to define the three views for defects so we later can attach it to the right issue type. We do this by going to Jira Settings ->Issues -> Screen Schemes and click on the button saying Add Screen Scheme. Add a name and a description, then set the default screen. This should not be the new screen we created as that one will only be used for the create action. You can change this later if you want. With that in place we come to the configuration page where we assign screens to the three actions we have (Create, View, Edit). By default you have one screen defined for all actions here, which is the one selected when creating the screen scheme. Now we will add our new screen to the create action and we do that by clicking the top right button that says "Associate an issue operation with a screen". Now you can select one of the three actions and a screen. We select the create action and connect that to our new defect screen and click add. Defining screen schemes to defects Now that we have the screen configured we need to add it to the correct issue and to do that we first need to create a issue Type Screen Scheme. We do this by going to Jira Settings ->Issues -> Issue Type Screen Schemes. Again we click the add button in the top right and add a name and description. This time we also can select a default screen scheme so we add the default screen sheme that will be used for all actions rather than the custom field we created for creating new defects. This can be changed later if you want. Once we have this created we get into the configuration screen. Here we will have a default screen scheme set for all issue types. Now we will need to add the new screen scheme we created for defects here. We do that by clicking the button in the top right that says "Associate an issue type with a screen scheme". Select the issue type Defect and then the screen scheme we created earlier and click add. ...and we are done. From now on we will always see the fields we have defined in the Defect screen when we create new defects. We can edit the fields as we see fit and it will not affect any other screens. Since we did not create custom screens for edit or view it means that we will see the same fields as for all other issues once the defect has been created. Focus information when needed As you can see it is not very complicated to add new screens, but they can add quite a bit of focus to your workflow. For this example we created a focused screen for reporting defects, but you will most likely want additional screens. One such screen that I almost always add is the Resolve screen that shows up when you resolve an issue. This is done by adding a trigger in the workflow that add a screen on an action as a popup. We will cover that setup in another post. I hope this was useful for you and in our next article we will discuss Jira security & access. In case you have missed any of the previous articles you can find them all here.
  3. In the previous article we discussed what tools we should use for what purpose. Now it's time to define the work we want to do in the different Areas of Responsibility. We do that by defining what different type of work we do in each so we can create a separate issue type for each type of work. This way we can separate work and can evolve the way we work in each through fields and workflows for example. Before we dig into that however we should first identify what issue types really are and how we should use them properly. The three levels of issues in Jira In Jira we have 3 levels of issue types. Each level is used for different purposes so it is important to understand what that purpose is so we can map our issue types to the right level. Epic - This is the highest level in Jira and it's purpose is to group and categorize the lower levels. In itself an Epic has no value and you can see it as a box or a rubber band that simply is used to group other items. The term epic means a story that extends over a long period of time or that it is something grand and impressive. This is also how it is meant to be used in Jira as a way to mark stories that are connected and span over two or more time periods. Standard Issue Type - This is the middle level in Jira and it's purpose if to act as the transitional item to indicate what responsibility area currently own the responsibility to do something. This type is the one that we design workflows for that are flow chart based and not in the form of state diagrams. We will cover this when going over workflows in a later article. Sub-Tasks - Within each responsibility area we have a need to break down the work so we can mark them as complete. These are referred to as producing items and unlike the Standard Issue Type we do not always use a tranistional workflow, but more of a task management flow of open, in progress, done .We will cover this when going over workflows in a later article. The majority of our issue types will fall into this category. Identifying the work that need to be done With the issue types identified we can now begin to define what issue types we need for our setup. We previously identified Requirement, Development, Test and Acceptance as our areas that use Confluence and Jira, so we will break down the work in those areas and see what we can come up with. Requirement Requirement: Standard Issue Type (optional) - If we want, we can use a separate issue type to act as the object which we work through the requirement process. This should be done in a separate project as it will contain a large number of unprocessed need. This would make managing the development projects less efficient, but we will discuss that in another article. Story: Standard Issue Type - This is the output from the Requirement process and while the name might make you think it comes from the fact that many requirements are written in the form or user stories. This is not accurate however as requirements can come in many forms and shapes. Story refer to the fact that we get the need explained to us as a story, which is because as humans we communicate in the form of stories. Design: Standard Issue Type & Sub-task - Design (UX/UI) can be done separate, which is why we have a Standard Issue Type for it. It can also be done as part of a requirement which is why we have a sub-task for it as well. In some cases we need to make adjustments in existing requirements and there we also use a sub-task connected to a Story for that purpose. Technical Design: Standard Issue Type & Sub-task - Just like with Design we have both a standard issue type and a sub-task. Technical Debt: Standard Issue Type - This is a rare issue type in many companies, but it is used when decisions are made that create technical debt or when clean up need to be done to optimize systems and data. These are IT driven stories in nature with the intent to make sure IT driven concerns are logged and prioritized alongside business need. It is also used to highlight decisions that will have a cost in the future. Development Development: Sub-Task - It may seem strange that Development only exist as sub-task, but the reason for that is that development only happen when there is a need for it. This need is in the form of a Story or Technical debt. That is why development only exist as a sub-task and it is used for writing code. Build & Configure: Sub-task - Again this is only available as a sub-task for the same reason as for Development. This issue type is used when there is no code related to the task, just configuration. It is also used to build systems such as servers that are again configurations or physical assembly tasks. Common tasks are upgrades or adding new subset of a system through configuration. Defect: Standard Issue Type & Sub-task - The default way to create defects is as sub-tasks connected to a story. This block the story from deployment as it can never be closed with open sub-tasks. The standard issue type is used when defects are found without direct connection to a development or when you want to break out a defect as a known defect, but still close the story for deploy. Defect can only happen before code is put into production. I usually rename the standard Bug issue type to Defect if possible, otherwise I create a new issue type for it. Incident: Standard Issue Type - Incident is used for defects that are found after the code is put into production. It is separate from defect in order to properly identify where a defect has been discovered as that can affect legal aspects. It is also used to allow proper focus and prioritization as production defects usually need high attention. All incidents are standard issue types as the stories they comes from have already been closed. Feature Toggle: Sub-Task (optional) - This is a bit of an odd addition lately and it act as a way to determine what code is in what code based, even if it is not activated. We will not dig to much into this one as it's an article in itself. It is just added in case you work with feature toggle in your project. Test & Acceptance Test / Acceptance: Standard Issue Type & Sub-task (optional) - This is again an optional issue type due to the fact that most test add-ons have the functionality needed to keep track of time and effort. In the event that you need a way to add time and effort outside the add-on, then you can create an issue type for this as placeholder for that information. Generic Epic: Epic - This is standard in Jira and it is used, as described above, to group standard issue types. Task: Standard Issue Type & Sub-task - Tasks and Sub-tasks are standard in Jira and they can be used for any task not defined in other issue types. This can be things like scheduling meetings, organize workshop or buy cake for the team. Color coding for visual guidance In order to make it even easier to identify what the different issue types will be used for I always create custom icons and color code them. This visualize the area of responsibility as well as the purpose of the issue types. My way to color code is based on color theories and my own preferences, so feel free to adjust if needed. Requirements - This is an interpretation of the business need to Development. I tend to color Business in blue/teal as corporate colors and Development as red. The combination of those two is purple, so I make the Issue types related to Requirements as purple. Development - This is the heart of the work flow. We tend to want incidents and defects highly visible as well, so we pick the color that match those requirements. We tie this into the traffic sign colors used in test and acceptance as well. This is why everything related to development is red. Test - This is where code is either allowed to pass to acceptance, or pushed back to development for further adjustment. It is something we want to make sure it has good attention and we also follow the traffic sign color schemes used in development and acceptance. this is why test is yellow, sometimes with a orange tint to tie it closer to development. Acceptance - This is where a need is given the thumbs up or the big GO. We use the traffic sign color scheme to signal this and for that reason Acceptance is green. I use icons that I feel is matching the issue type itself to further clarify purpose. I also use en inverted design to distinguish between standard issue types and sub-tasks. You can see some of the icons in the download section. You are free to use the icons in your Jira instance as they are created by me using the free version of fontawesome. Setting up Issue Types in Jira Now that we have defined the issue types and designed the icons it's time to set this up in Jira. I will set this up in my Demo Jira which is cloud based. If you use Server or Data Center version the way you set this up will look a little different, but the functionality will be the same. In order to get the new issue types into our project we will need to do three things: Create the new Issue Types Create a new Issue Type Schema and add the Issue Types to that Schema Assign the Issue Type Schema to our project. Create Issue Types In Jira Cloud we do this under Jira Settings -> Issues -> Issue Types. Please note that you need admin access for this step. Here you will see a list of the current Issue Types and in the top right corner you will have a button that say "Add issue type". Clicking on that will give you a popup where you can create a new issue type. Once you add the name and description of the new issue type, then you select what type of issue type you want it to be. You can not add an image at the time I am writing this, so you will get a generic icon for it when you click add. Once created you simply find it in the list and click edit to change the icon by uploading a new one. Next to the icon click "Select Image" and then "upload avatar" in the popup. Select a new image, close the poup and then click on update to save the new image. Create a new Issue Type Schema Under Jira Settings -> Issues -> Issue Type Schemes you find a list of the different issue type schemes you currently have in your Jira. In the top right corner you find a button with the text "Add Issue Type Scheme". Click that to create a new scheme. Please note that you need admin access for this step. When you create the scheme you add a name for the scheme, a description and then you drag the issue types you want to add to the scheme from the list on the right to the list on the left. Once you have done that you can select "Story" as the default issue type. This will make Story the pre-selected issue type when we click on Create in a project using this Scheme. Once done, click save. Add Issue Type Scheme to your project Go to your project and then click on project setting in the left menu. It should be at the bottom of the list of areas for your project, but if you can not see it then you may not have admin rights for your project and you need to get some help with this step. If you have access then in the project settings go to Issue Types. This view will show you the current issue type scheme and the issues included in that scheme. In the top right corner you will see a drop list with a cog wheel that say "Actions". Clicking this will allow you to edit the issues in the scheme, but we want the other function called "Use a different scheme". Simply select the Issue Type Scheme created earlier by first making sure you select "Choose an existing issue type scheme" and then the correct issue type scheme in the list below. Click OK and your project will now be associated with the new issue type scheme we created and with that we now have our new issue types. We now have the proper issue types we need to work, but in order for them to really useful we need to make sure we have workflows that match the work we do. This is what we will focus on in our next article: Setup Jira & Confluence for success - Part 3: Defining Jira Issue workflows.
  4. In the previous articles we have defined what tool to use for what and what issue types we need. New it's time to define the workflows for those issue types. Before we can do that however we should first define what workflows are and how we should use them in Jira. Three types of workflows In short we can narrow down workflows to three types: sequential, state machine and rules driven workflows. Sequential workflow This workflow is usually chart based from one step to the next, always moving forward without ever going back. Each step depends on the completion of the activities on the previous step. You can think of this workflow as a connect the dots system: you have to follow the numbers correctly, one after the other, to complete the big picture. State Machine Workflow This type of workflow can be considered like puzzle solving, in which you’re constantly putting important pieces in place to complete a project. State machine workflow are frequently used when there are creative elements in the process, or products and services that require extra review or input from clients and management. Rules-driven Workflow This workflow is executed based on a sequential workflow with rules that dictate the progress of the workflow. This can be compared to following a blueprint to make one complete structure. Rules driven workflows are very useful when working on a variety of projects with clear goals but varying levels of specifications. We should also define what a workflow is NOT: A workflows is NOT a process - A process is more then just a workflow as it includes data, forms, reports, actors and more. A workflow usually span over multiple processes as we hand over responsibility between different capabilities (requirement, development, test, acceptance). A workflow is NOT a list of unconnected tasks - Unconnected tasks are task management and not a workflow. A workflow is NOT a checklist - Checklists are binary. It's either done or not done. That is not a workflow. A workflow is NOT a state diagram - This is probably the biggest issue I see when people try to design workflows. The idea that you need to track every single state in a workflow comes from a misunderstanding of who we actually build workflows for and what they actually need. "A state machine (panel (a)) performs actions in response to explicit events. In contrast, the flowchart (panel (b)) does not need explicit events but rather transitions from node to node in its graph automatically upon completion of activities." - Wikipedia Who do we build workflows for? In order to understand why state diagrams are not the best choice to design workflows in Jira we should understand who we build workflows for and what purpose they serve. The reason we use Jira is because we want a good way to define and assign work. We also need a way to oversee, or manage, the work. This means that we want a way to track what work we are doing, what the current status is on that work and who is responsible for completing the work at the moment. So for developers and testers we want en easy way to see what is ready to be worked on, what is being worked on and and what have we completed. For managers we need the same, but over the whole chain of responsibility. We also want to connect the work to the need so we can follow up when the need is being fulfilled. So we have two basic need to fulfill: What is ready for me to work on? Are we on track to fulfill the need or do I need to take action? In the previous article we mentioned transitional and producing items when defining what issue types we need. We can match these theories with these two need as well. #1 is producing as we just need to track the actual work in a fetch and release process. For #2 we use transitional as we want to track all areas of responsibility. Based on this we can see that there is no need to see everything that happen in the work we do. We need to see who is doing what and if there are any impediments that could prevent us from completing the need in time. This is why we choose to work with flow charts and not state diagrams. "Design for collaboration, not control" If you feel that you must track every single step in the work, then I suggest you take a look at why you need that. Usually it is because you lack trust in your organization due to poor communication or that someone in the chain of management suffer from an unhealthy need for control. Either way you should fix that outside of Jira as we should design for collaboration, not control. What statuses do we need? So now that we know what types of workflows we have to work with and what the need is we need to fulfill, then it's time to break down what statuses we actually need. We start by defining the different areas of responsibility that we need to track in our workflows. Development Test Acceptance First we start with adding a waiting status in each so we can fulfill the need of knowing what is ready for us to work on. This will also allow us to get statistics on waiting periods to see where we have resource issues. We name them the same to keep a proper naming convention: "Ready for <area of responsibility>". Secondly we add a status for when someone is working on something. Again we can track this for statistics, but most importantly we can quickly see what is being worked on and by whom. We name this the same as well: "In <area of responsibility>. We end the basics with setting a Closed status as the last status. This will allow us to set a resolution and indicate that the development work has been completed and is ready to be deployed. I often see people adding things like resolved or done, but in a workflow you should not have partial closure and there is actually no need for it. We now have the basics for a fetch and release process and we have fulfilled the first need. In order to fulfill the next need we need to add a few additional statuses, but first we should change the starting status. In Jira we have Open as the first status when a new issue is created. This is a bad status as it is not clear what Open really mean and I have seen whole organizations failing due to this misunderstanding. So we will rename this status to New if we can do that for the whole organization. If not, then we create a new status and use that as our first status. In order to track when something is blocked or waiting for something we add a status called Waiting/On Hold. Even though we can use the flag function to visualize this I have found that a dedicated status usually make this far more visible in the boards. We will also add a Reopened status in the event that we need to open a closed status for some reason. This either happen because we close by mistake, but in the event that someone actually revoke a closed issue we want to track that. Adding this is a status allow us to define how we want to handle this situation later. Finally we will add a status mostly used for defect management, but it can be used in any development workflow. That status is Rejected. While this can sound like a very harsh status it's purpose is to revert something back to the reporter for clarification rather than using the Close status and then Reopen. With just these few statuses we can manage both need to see what is ready for me to work on (ready for <area of responsibility>), who is working on what (In <area of responsibility>)and if there are any issues that need attention (waiting/on hold). We can not take any issue type and look at what area of responsibility is involved in fulfilling that task and then map the statuses we have defined to that. All generic workflows will have the same statuses. This makes it very easy to work with boards and no matter what capability you work with you always have only 3 statuses to keep track of: ready for me to work on, I am working on this, ready for someone else. What about release management?! Another common question is how I handle release management since there is no statuses for release. The answer to that is that we do not need that since Jira has that built into the core system in the form or versions. Every development should be closed with at least one version in the Fix Version field to indicate what code package the code is placed in. Every defect should also have an Affect Version that indicate what version of the code the defect was found in. By doing this we can map what code is in what package, but Jira should never be master for this information. This information should come from Bitbucket, or similar code versioning tool. This is also the same for deploys, which we do not manage in Jira at all since that is a completely different process. This comes from Bamboo or similar tools. The idea of managing deploys as a status in Jira quickly become silly as you would have a separate step that happen long after development, test and acceptance has been completed. This task is unconnected to the areas of responsibility. It is not a producing step, just a transportation step that is done not on story level, but on code package level. Like we established above this is not a part of a workflow since it is an unconnected task. We will however keep track of deployment in Confluence, but we will get to that in later articles. Let's build the default workflow Let us take all the theories above and make it real by designing the workflow in Jira and see if it hold up for real work. Requirement & business processes happen outside of this workflow. The expectation is that the beginning of the workflow comes in the form of a clarified need as a story. Even in Agile way of working the story is clear enough to be worked on once put into the ”Ready for Development” status. Once a story is clear enough to be worked on and we have acceptance from Development and Test, then we move the story to the status "Ready for Development". Producing items are created for development and we start working on the issue by transition the store to In Development. Once done we transition the story to Ready for development to complete the fetch and release process. This is repeated in the test and acceptance steps. In the event that we get a defect, then we create a defect sub-task and block the story from completion. We can use this for all development tasks as they all follow the same path. Let's see how we set this up in Jira. Building workflows in Jira In order to build global workflows in Jira you need Admin access to Jira. Go to Jira Settings -> Issues. Here you will find the two sections we need to configure to build a new workflow and to assign it to a project. Under Workflows you will see the current active and inactive workflows. In the top right corner you will see a button with the text "Add Workflow" Click that and you will get a popup to enter a name for the workflow and a description. Once you have added a name and description you will come to the design view. Here you use the "Add Status" to add the statuses we want. We create them with global transitions to make the workflow as open and flexible as possible by checking the box "Allow all statuses to transition to this one". I usually have transitions between rejected and new, as well as for Closed to Reopen, just to make it more clear that the rejection is used in a certain part of the workflow. This way you can't go to rejected or reopened from other statuses than the intended ones. In a proper workforce where the users get education on how to use Jira this is not really needed however so you can skip that if you do not feel it is necessary. Add Workflows to a workflow schema Now we can go to workflow schemes where you find all your active and inactive workflow schemes. in the top right corner you have a button with the text "Add workflow scheme". Click that and in the popup you add the name and description of your scheme. You will then be taken to the screen where you add workflows to the scheme and map it to specific issue types. Click the add workflow button and select the workflow we created earlier. In the next screen you get to select which issue types you want to map to this workflow. Select the ones you like, which should be all of our development issue types and then click finish. Your scheme is now configured with a workflow that is mapped to the issue types you want. You can edit this scheme at any time should you add workflows and/or issue types. Add Issue Type Scheme to your project Go to your project and then click on project setting in the left menu. It should be at the bottom of the list of areas for your project, but if you can not see it then you may not have admin rights for your project and you need to get some help with this step. If you have access then in the project settings go to Workflows. Here you see your current workflow schema and the workflows attached to it. To change click on "Switch Scheme" and select the new scheme that we created above. Click associate and if needed map statuses on the next screen and wait for all statuses to resolve. Once done you have your new workflow scheme mapped and you can start using your new workflow. We now have workflows setup for our issue types, but we still have a few things to do before they are completely ready to be used. That is to define the screens and custom fields we will use in our setup. That will all be explained in Part 4: Defining Jira Screens & Custom fields that we will look at next.
  5. The first thing we need to do before we can actually build the setup in Jira and Confluence is to define the tools. What should be done in what tool. We also need to define how we will use the tools based on what need we have. This may sound easy, but it is actually a bit trickier than it sounds and it's the source of many failures when using Jira especially. Who are we building for? In our example we will build a setup based on a development team. It is a traditional team that tries to adopt some agile methodologies. The company is medium sized with dozens of teams distributed in several countries where waterfall methodologies are still the norm. Most development happen in projects, which cause some overlap, but overall this get done even if it is not always easy. Requirements have decent quality, but varies greatly between teams and most work process related changes are driven by management and test. In short it is a pretty common situation for many companies. There are some challenges, but the organization is moving towards a more agile and uniform way of working. There is a struggle over control and visibility because the teams want more freedom and the managers still want to feel that they have the control because they are still a bit to far away from the teams. The Areas of Responsibility In order to see what tool is best suited for what task, then we need to identify who do what. We start this by breaking down areas of responsibility so we know what areas we hand over responsibility to. In our setup we identify the following areas: Business - This is where the need originates from. This is actually a whole process in itself, but we just consider the output as a responsibility area. This is represented by the Product Owner. Requirement - This is where the need is defined and translated to actionable information for the development team. We include design (UI/UX), technical design and non-functional requirements such as legal as part of this area as well. This is because they are supporting the requirement process. Development - This is where the need is realized in the form of code. Test - This is where we ensure the development have good quality. Acceptance - This is where business ensure that the need has been fulfilled. Doing so also conclude the legal agreement between business and development. Deployment - This is where the need is made available to the end users. Support - This is where feedback related to the need is managed. Since we are building in Jira and Confluence all of these areas are not going to be represented due to the limitations and capabilities in those tools. In order to identify the best tool for the job, we identify the need for each area. Business - Jira Align This is a big area that are actually made up of multiple processes. In this area we need to be able to organize people, money and resources into initiatives that span the whole company. We need to follow up and see when cross initiatives have issues in order to mitigate.This area do not just deal with IT, but include things like marketing, product development, human resources and so on. Jira and Confluence are not a good match for this area. Instead portfolio tools such as Jira Align or Portfolio for Jira are better choices. Requirement - Confluence This area work with documentation to break down a need into actionable items. Design is delivered in multiple versions and file formats. Technical design include flow charts and tabled specification of data. Legal and non-functional requirements are usually global so wee need to be able to link in from other locations. We also want to prioritize work, add estimations on multiple levels and eventually create work orders that can be traced back to the original need. Since a requirement is both a translation of a need to actionable task and a legal agreement on what need to be done, we need to be able to control the requirement. This means that we need both version control to identify changes and the possibility to restrict editing when agreed upon. We will use Confluence for this area for the final documentation. We will also use Jira as an optional tool to drive the requirement forward until it is ready to be locked down in Confluence. Development - Jira This area work with code where they need to have tasks on what to do. This task is actually the work order and as such it must be connected all the way to the need. This area also need to connect the work with the code in order to trace work to code packages. We need the ability to assign work so someone is responsible to fulfill the need. We want to see what is ready to be worked on and if the code package is ready to be deployed. This means that we need to be able to see other areas as well in a workflow. For this purpose we use Jira and connect to the requirements in Confluence. The Development team will also use Bitbucket to manage their code. Test - Jira Add-On This area work with making sure that the code we produce are in accordance with the requirement and that it has good quality. We need to be able to create test cases for what to test and then a way to connect to series of test. These must be reusable so we can use them to make the same tests multiple times. We need a good way to report when something is not working so we can bring that back to the development team to be fixed. We need a way to get reports on progress and result of the tests. Jira and Confluence does not support this fully, so we will add an Add-On for this to extend that capability and connect it to the development tasks. Acceptance - Jira Add-On This area work with making sure that the need is fulfilled. It is testing in the same manner that the test area, but on a different level and with a different responsible group. We will use the same setup as for Test with the same Jira Add-On, but connect to the requirements instead of the development tasks. Deployment - Bamboo This area work with making sure that the code packages created by Development are moved to the different environments. In order to do this they need a way to deliver code between the environments. This in not something that we can do in Jira or Confluence. Instead a tool like Bamboo will be used. We will however use the Release feature in Jira to connect the code base with the deploys for traceability. We will also use Confluence to document deployments to production for traceability. Support - Jira Service Desk This area work with supporting the code that is available in production. This require the ability to manage incoming support requests, identifying resolutions and when needed create work tasks for different teams. Continuous communication with the reporter is a must and there should also be a way to resolve repeating requests to reduce duplicated requests. For this Jira and Confluence is not fully what we need. Jira Service Desk is a better option for this. As we can see from this our setup for Confluence and Jira will support Requirement, Development, Test and Acceptance. We will connect with Deployment as well, but the full capability will not be in our setup. Now that we know what we are going to support, then it is time to start looking at what work we actually do in each area so we can define the issue types. This we will go over in our next article: Setup Jira and Confluence for success - Part 2: Defining Jira Issue Types
  6. I often get questions on how I think the best setup for Jira and Confluence should look when I meet organizations. Because of that I will make a series of posts about this where I setup Jira and Confluence from scratch. This will include not just how I do things, but also the thought behind it. I hope you will find this useful for setting up your own setup in Jira and Confluence. This series will be divided into several parts. This is because adding every step in a single post would make for a very long blog post. Dividing into a series also make it easier for you to look at specific parts that is most interesting for you at the moment. The parts that I have in mind could change as I write the series, but at the moment the plan is this: Part 1: Defining the tools Part 2: Defining Jira Issue Types Part 3: Defining Jira Issue workflows Part 4: Defining Jira Screens & Custom fields Part 5: Defining Jira security & access Part 6: Defining Confluence Information Structure Part 7: Defining Confluence Requirement Templates Part 8: Defining Confluence Design Templates With the setup completed in Jira and Confluence I will probably add a second series called "Work processes in Confluence & Jira - From Need to Deploy" where we go through how to use the setup from a practical point of view. It will be a more generic process so it can be used in any methodology with some minor tweaks. If anyone want I could also add a post about how to use the power of Jira and Confluence for programmers without ever leaving your IDE. Is there anything you miss from this series that you feel I should add? View full article
×
×
  • Create New...