Skip to content
Snippets Groups Projects
Commit 551b258c authored by Sean Packham (GitLab)'s avatar Sean Packham (GitLab)
Browse files

Merge branch '20-blog-post-getting-started-with-conversational-development' into 'master'

Blog post: Getting started with Conversational Development

Closes #20

See merge request !25
parents e386173c b74a1a8d
No related branches found
No related tags found
1 merge request!25Blog post: Getting started with Conversational Development
Pipeline #
Loading
Loading
@@ -10,4 +10,12 @@ gems:
- jekyll-feed
exclude:
- Gemfile
- Gemfile.lock
\ No newline at end of file
- Gemfile.lock
defaults:
-
scope:
path: ""
type: "posts"
values:
layout: "page"
Loading
Loading
@@ -35,35 +35,40 @@
</script>
</head>
<body class="{{ page.body_class }}">
<div class='container' style=''>
<h1 class='primary-logo'>
<a class='primary-logo-link' href='/'><span class='primary-logo-conv-piece'>Conv</span><span class='primary-logo-dev-piece'>Dev</span>
</a>
</h1>
<div class='container'>
<header class="header">
<h1 class='logo'>
<a href='/'>
<span class='logo-conv'>Conv</span>ersational
<span class='logo-dev'>Dev</span>elopment
</a>
</h1>
</header>
 
{{ content }}
 
<footer class='footer'>
<div class="likely" data-url="http://conversationaldevelopment.com" data-title="Conversational Development - the evolution of Agile">
<div class="linkedin">Link</div>
<div class="facebook">Share</div>
<div class="twitter">Tweet</div>
</div>
<div class="look">
Look for
<a href='https://twitter.com/search?q=%23convdev'>#ConvDev</a>
on Twitter
</div>
<div class='contribute'>
This page is generated from a
<a href='https://gitlab.com/gitlab-com/conversationaldevelopment-com'>public repo on GitLab.com</a>
— merge requests with improvements are
<a href='https://gitlab.com/gitlab-com/conversationaldevelopment-com/merge_requests'>very welcome.</a>
</div>
</footer>
</div>
<br>
<br>
<footer class='primary-footer'>
<!-- http://ilyabirman.net/projects/likely/ -->
<div class="likely" data-url="http://conversationaldevelopment.com" data-title="Conversational Development - the evolution of Agile">
<div class="twitter">Tweet</div>
<div class="facebook">Share</div>
<div class="linkedin">Link</div>
</div>
<br>
<br>
Look for
<a href='https://twitter.com/search?q=%23convdev'>#ConvDev</a>
on Twitter
<section class='primary-footer-contributing-note'>
This page is generated from a
<a href='https://gitlab.com/gitlab-com/conversationaldevelopment-com'>public repo on GitLab.com</a>
— merge requests with improvements are
<a href='https://gitlab.com/gitlab-com/conversationaldevelopment-com/merge_requests'>very welcome.</a>
</section>
</footer>
</body>
</html>
---
title: "Welcome to Jekyll!"
date: 2017-04-05 14:44:32 +0100
categories: jekyll update
---
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
Jekyll also offers powerful support for code snippets:
{% highlight ruby %}
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
{% endhighlight %}
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
[jekyll-docs]: https://jekyllrb.com/docs/home
[jekyll-gh]: https://github.com/jekyll/jekyll
[jekyll-talk]: https://talk.jekyllrb.com/
---
title: How to start adopting Conversational Development
date: 2017-04-13 8:00:00 +0100
categories: guide beginner
---
Adopting a new process can be a daunting task for any team. The key to success is getting everyone on-board and taking on change in a manner that is comfortable for all. In this guide we will cover how to assess your own process and introduce the four principles of Conversational Development into it.
### Assess your current process
The first step on the path to adopting Conversation Development (ConvDev) is determining your team's or organization's place on the [Maturity Model](/maturity-model) to get an idea of your process maturity, possible problems, and potential for growth.
Each of the five stages on the model has fewer barriers to collaboration and invites more of the extended team to be part of the process. Find your place on the model and set goals for your team to get to the next stage. If your are missing one aspect don't jump ahead, make getting their part of your goal.
### Get familiar with ConvDev principles
1. [**Shorten** the conversation cycle](/shorten-cycle)
1. [**Thread** the conversation through all stages](/thread-conversations)
1. [**Invite** everyone to the conversation](/invite-everyone)
1. [**Result** oriented conversation](/results-oriented)
### Focus on Minimum Viable Change
The objective of software development is to produce value as soon as possible. Instead of minimum viable products or minimum viable features, start thinking in terms of Minimum Viable Changes - the smallest change that can be shipped and measured.
<div class='col-md-12 col-xs-12'>
<p>
<img style="width:100%" src="/images/mvc.png" />
</p>
</div>
By focusing on shipping Minimum Viable Changes instead of entire feature sets or at arbitrary time intervals your team will be in a better position to measure and assess value and create a result oriented culture.
#### 1. Shorten
As an exercise to get started pick a feature and ask your team what is the smallest amount of change they think is needed to get a working version shipped For example instead of building a full-featured issue tracking solutions with issue boards and reporting start with a simple to do list and gradually expand it.
#### 2. Thread
Record any meetings or if not possible have someone take meeting notes to share with everyone afterwards. It is important to thread the conversation through the entire process either by linking various tools or using a centralized solution. A linked conversation with clearly defined stage transitions will allow your team to measure the entire cycle time for the minimum viable change as well as the time spent in each stage e.g design, development, testing etc.
#### 3. Invite
Make sure you invite someone from each cross functional team to the conversation and that the conversation is not dominated by anyone. There is nothing wrong with having a project manager or agile coach lead the conversation and act as a mediator.
#### 4. Results
Tracking the cycle time will allow your team to become more result orientated by optimizing the first three principles. Once you have finished your first cycle begin again with the team thinking about the next minimum viable change to make.
In the next post we will dive into more detail on how to shorten your conversation cycle.
 
a {
color: #ef5b35;
html {
margin: 0;
padding: 0;
}
 
.primary-logo {
text-align: center;
font-size: 120px;
body {
font-family: Verdana, sans-serif;
font-size: 16px;
line-height: 1.6;
margin-top: 25px;
}
 
.primary-logo-link {
color: inherit;
cursor: pointer;
.container {
max-width: 970px;
min-height: 700px;
}
 
.primary-logo-link:hover,
.primary-logo-link:focus {
color: inherit;
body > .container section {
margin: 0 0 3em;
}
 
.primary-logo-conv-piece {
color: #ef5b35;
font-weight: normal;
p, ul, ol {
margin-bottom: 22px;
}
 
.primary-logo-dev-piece {
font-weight: bold;
a {
color: #ef5b35;
}
 
 
/* principles */
 
.priciple-heading {
margin-left: 1em;
.logo {
text-align: center;
font-size: 50px;
margin-bottom: 1em;
}
 
.principle-heading-link {
display: flex;
align-items: center;
color: inherit;
.logo a {
color: #333;
}
 
.principle-heading-link:hover,
.principle-heading-link:focus {
color: inherit;
text-decoration: none;
outline: none;
.logo-conv, .logo-dev {
color: #ef5b35;
font-weight: bold;
}
 
.principle-heading-link:hover .priciple-heading-number-bubble,
.principle-heading-link:focus .priciple-heading-number-bubble {
transform: scale(1.1);
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.15);
#principles img {
max-width: 140px;
padding-right: 20px;
}
 
.principle-heading-link:hover .principle-heading-text,
.principle-heading-link:focus .principle-heading-text {
text-decoration: underline;
#principles a {
color: #333;
}
 
.priciple-heading-number-bubble {
flex-shrink: 0;
display: inline-flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 3em;
height: 3em;
margin-right: .75em;
background-color: #c6cacf;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
border-radius: 50%;
color: #ffffff;
font-size: 3.5rem;
font-weight: 700;
text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.5);
text-decoration: none;
transition:
transform .2s ease,
box-shadow .2s ease;
#principles ul {
list-style: none;
padding-left: 20px;
font-size: 24px;
margin-top: 40px;
}
 
.priciple-heading-number-bubble:before {
content: 'Principle';
display: block;
color: #f0f2f5;
font-size: .35em;
font-weight: bold;
text-transform: uppercase;
text-align: center;
#principles li {
/*margin-bottom: -10px;*/
}
 
.principle-heading-emphasis {
#principles ul span {
color: #ef5b35;
font-weight: bold;
}
 
.read-on-link {
display: inline-block;
margin-top: 1em;
Loading
Loading
@@ -180,30 +148,24 @@ a {
}
 
 
.primary-footer {
padding-top: 0.3em;
background-color: #d05131;
color: #e4e7ed;
text-align: center;
.footer {
margin: 3em 0 5em;
}
.primary-footer a {
color: inherit;
border-bottom: 1px solid;
.look, .likely {
float: left;
margin-bottom: 15px;
}
 
.primary-footer a:hover,
.primary-footer a:focus {
color: #c6cacf;
text-decoration: none;
.look {
margin-left: 12px;
}
 
.primary-footer-contributing-note {
margin-top: 2em;
padding-top: .5em;
padding-bottom: .5em;
footer .likely .likely__counter {
display: none;
}
 
background-color: #c34d2f;
.contribute {
clear: both;
font-size: 14px;
}
Loading
Loading
@@ -3,86 +3,60 @@ layout: page
body_class: index
---
<section id='principles'>
<h2>Conversational Development Principles</h2>
<h2>Principles</h2>
<p>
Software development consists of conversations around different things:
<ul>
<li>What can be improved?</li>
<li>How to implement it?</li>
<li>Does it work properly?</li>
<li>Did it bring the expected value?</li>
</ul>
When all of these conversations are taken into account, reasoning about software development simplifies a lot, and can be summarized in the following four principles.
Software development consists of conversations around what can be improved,
how to implement it, did it work and bring the expected value.
</p>
<p>
Moreover, most of engineering best practices arise naturally as an effect of Conversational Development principles application.
<p>
Experience has show us that these conversations can be summarized into four principles
to simplify the software deveopment life cycle.
</p>
<h3 class='priciple-heading'>
<a class='principle-heading-link' href='/shorten-cycle'>
<span class='priciple-heading-number-bubble' style="background-image: url('/images/main-s.png')">1</span>
<span class='principle-heading-text'>
<span class='principle-heading-emphasis'>Shorten</span>
the conversation cycle →
</span>
</a>
</h3>
<h3 class='priciple-heading'>
<a class='principle-heading-link' href='/thread-conversations'>
<span class='priciple-heading-number-bubble' style="background-image: url('/images/main-t.png')">2</span>
<span class='principle-heading-text'>
<span class='principle-heading-emphasis'>Thread</span>
the conversations through all stages →
</span>
</a>
</h3>
<h3 class='priciple-heading'>
<a class='principle-heading-link' href='/invite-everyone'>
<span class='priciple-heading-number-bubble' style="background-image: url('/images/invite.png')">3</span>
<span class='principle-heading-text'>
<span class='principle-heading-emphasis'>Invite</span>
everyone to the conversation →
</span>
</a>
</h3>
<h3 class='priciple-heading'>
<a class='principle-heading-link' href='/results-oriented'>
<span class='priciple-heading-number-bubble' style="background-image: url('/images/main-r.png')">4</span>
<span class='principle-heading-text'>
<span class='principle-heading-emphasis'>Result oriented</span>
conversations →
</span>
</a>
</h3>
</section>
<section id='adopt'>
<h2>Adopting Conversational Development</h2>
<p>The first step on the path of adoption will be to realize your current situation. Take a look at the <a href="/maturity-model">Maturity Model</a> to get an idea of your processes maturity, possible problems, and potential for growth.</p>
<ul>
<li>
<a href='/shorten-cycle'>
<img src="/images/main-s.png"/>
1. <span >Shorten</span> the conversation cycle →
</a>
</li>
<li>
<a href='/thread-conversations'>
<img src="/images/main-t.png"/>
2. <span>Thread</span> the conversation through all stages →
</a>
</li>
<li>
<a href='/invite-everyone'>
<img src="/images/main-i.png"/>
3. <span>Invite</span> everyone to the conversation →
</a>
</li>
<li>
<a href='/results-oriented'>
<img src="/images/main-r.png"/>
4. <span>Result</span> oriented conversation →
</a>
</li>
</ul>
</section>
<section id='development-processes'>
<h2>Agile needs to evolve</h2>
<p>
The first attempt to bring structure into software development was <strong>Waterfall</strong>, but it was extremely inflexible and rigid.
</p>
<p>
People replaced Waterfall with <strong>Scrum</strong>. But some problems remained:<br/>
<ul>
<li><strong>Scrum</strong> assumes you can estimate work accurately, which is not true in general.</li>
<li>As a result, it consumes a lot of time trying to plan and negotiate and strains the relationship between developers and managers</li>
</ul>
</p>
<p>
<strong><a href="http://agilemanifesto.org" target="_blank">Agile</a></strong> fixed most of the problems of <strong>Scrum</strong>.
<ul>
<li>But it focuses only on the development process, not on setting requirements and doing deployments.</li>
<li>It doesn't work with large and distributed teams because verbal in-person communication doesn't scale</li>
<li>Somehow best engineering practices ended up being not a part of Agile.</li>
</ul>
</p>
<img style="width:100%" src="/images/evolution.png" />
<p>
<strong>Conversational Development</strong> is an evolution of <strong>Agile</strong> to make it work for the entire process and with large and/or distributed teams.
</p>
<section id='blog'>
<h2>Recent Articles</h2>
{% for post in site.posts limit: 3%}
<article class="{% if forloop.first %}first{% elsif forloop.last %}last{% else %}middle{% endif %}">
<div class="article-head">
<h3 class="title"><a href="{{ post.url }}" class="js-pjax">{{ post.title }}</a></h3>
<p class="date">{{ post.date | date: "%b %d, %Y" }}</p>
</div><!--/.article-head-->
<div class="article-content">
{{ post.excerpt }}
<a href="/{{ post.url }}/" class="full-post-link js-pjax">Read more</a>
</div><!--/.article-content-->
</article>
{% endfor %}
</section>
<section id='how-to-contribute'>
<h2>How to contribute</h2>
<p>It is important to understand that the whole idea of Conversational Development is a working draft. You can participate in many different ways:</p>
Loading
Loading
@@ -94,9 +68,3 @@ body_class: index
<li>Help to spread information about Conversational Development by sharing it on social networks</li>
</ul>
</section>
<style>
section {
margin-top: 50px
}
</style>
Loading
Loading
@@ -2,7 +2,7 @@
layout: page
body_class: invite-everyone invite-everyone_index
---
<h2>Principle #3: Invite everyone to the conversation</h2>
<h2>Principle 3: Invite everyone to the conversation</h2>
<p class='hero'>Description: Instead of locking conversation on per-stage, per team, or per-speciality principle, leave the doors as open as possible.</p>
<div class='row'>
<div class='col-md-6'>
Loading
Loading
Loading
Loading
@@ -60,6 +60,7 @@ body_class: index
<td></td>
<td>Feedback comes from the systems instead of people. Removal of most meetings</td>
</tr>
<!-- todo
<tr>
<th>Problems</th>
<td></td>
Loading
Loading
@@ -76,6 +77,7 @@ body_class: index
<td></td>
<td></td>
</tr>
-->
<tr>
<th>Failure modes</th>
<td>Many projects are cancelled before ever reaching production, Lots of time pinging gatekeepers to sign off, many swimlanes.</td>
Loading
Loading
@@ -84,6 +86,7 @@ body_class: index
<td></td>
<td></td>
</tr>
<!-- todo
<tr>
<th>What materials are needed to progress to the next stage</th>
<td></td>
Loading
Loading
@@ -92,6 +95,7 @@ body_class: index
<td></td>
<td></td>
</tr>
-->
<tr>
<th>Organizations in this stage</th>
<td></td>
Loading
Loading
---
layout: page
body_class: posts
---
{% for post in site.posts %}
<article class="{% if forloop.first %}first{% elsif forloop.last %}last{% else %}middle{% endif %}">
<div class="article-head">
<h2 class="title"><a href="{{ post.url }}" class="js-pjax">{{ post.title }}</a></h2>
<p class="date">{{ post.date | date: "%b %d, %Y" }}</p>
</div><!--/.article-head-->
<div class="article-content">
{{ post.excerpt }}
<a href="/{{ post.url }}/" class="full-post-link js-pjax">Read more</a>
</div><!--/.article-content-->
</article>
{% endfor %}
Loading
Loading
@@ -2,7 +2,7 @@
layout: page
body_class: results-oriented results-oriented_index
---
<h2>Principle #4: Result oriented conversations</h2>
<h2>Principle 4: Result oriented conversations</h2>
<p class='hero'>Stop measuring abstract things like story points or irrelevant things like hours. Instead proactively look for ways to connect your work to business metrics.</p>
<div class='pictures'>
<img style="width:100%" src="/images/R0.png" />
Loading
Loading
@@ -20,4 +20,4 @@ body_class: results-oriented results-oriented_index
</div>
<a class='read-on-link' href='/maturity-model'>
Maturity Model
</a>
\ No newline at end of file
</a>
Loading
Loading
@@ -2,7 +2,7 @@
layout: page
body_class: shorten-cycle shorten-cycle_index
---
<h2>Principle #1: Shorten the conversation cycle</h2>
<h2>Principle 1: Shorten the conversation cycle</h2>
<p class='hero'>
Start measuring conversation cycle duration from the first discussion of a feature in chat to actual release in production. <br/>
If you can measure the length of separate stages - that is even better.
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
layout: page
body_class: thread-conversations thread-conversations_index
---
<h2>Principle #2: Thread the conversations through all stages</h2>
<h2>Principle 2: Thread the conversations through all stages</h2>
<p class='hero'>Instead of having multiple non-connected stage-related conversations have one going through all stages so that people who join later during the work could find the roots and restore the full picture.</p>
<div class='row pictures'>
<div class='col-md-1'></div>
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment