summaryrefslogtreecommitdiff
path: root/reveal.js/flow.html
blob: c5b2ef32795784fe269ea32db048e823d454b1f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>QA flow</title>
    <meta name="author" content="Simeon Simeonov">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="stylesheet" href="dist/reset.css">
    <link rel="stylesheet" href="dist/reveal.css">

    <link rel="stylesheet" href="dist/theme/serif.css" id="theme">

    <!-- Theme used for syntax highlighting of code -->
    <link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme">
  </head>
  <body>
    <div class="reveal">

      <!-- Any section element inside of this container is displayed as a slide -->
      <div class="slides">
        <section>
          <h1>QA flow</h1>
          <h3>Idas and thoughts</h3>
          </br>
          <p>
            <small>Simeon Simeonov</small>
          </p>
        </section>

        <section>
          <section id="fragments">
            <h2>Agenda</h2>
            </br>
            <ul>
              <span class="fragment"><li>The problem with the current QA flow</li></span>
              <span class="fragment"><li>Alternatives</li></span>
              <span class="fragment"><li>Suggestions</li></span>
              <span class="fragment"><li>Q&A and discussion</li></span>
            </ul>
          </section>
        </section>


        <section>
          <section>
            <h4>The problem with the current QA flow</h4>
            <p><em>“Technical debt is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.”</em> - Wikipedia</p>
            </br>
            <p><em>“Accumulation of technical debt is not always a choice.”</em> - Simeon Simeonov, 21st century developer</p>
          </section>

          <section>
            <h4>The problem with the current QA flow (2)</h4>
            </br>
            <ul>
              <li>Based on pull-requests (tactical)</li>
              <li>Poor or lack of technical (strategic) design</li>
              <li>Lack of supervision</li>
            </ul>
          </section>

          <section>
            <h4>The problem with the current QA flow (3)</h4>
            </br>
            <p>Typical challenges</p>
            <ul>
              <li>What entities do we need and how will we name them? (module, package, a script...)</li>
              <li>Where will the code reside?</li>
              <li>What is the best way to interract? (Object-oriented design in the case of Python)</li>
              <li>Is this the best way (even in pragmatic terms)?</li>
              <li>Any known best practices?</li>
            </ul>
          </section>

        </section>


        <section>
          <section>
            <h3>Alternatives</h3>
            </br>
            <p>What do others do?</p>
          </section>

          <section>
            <h3>Alternatives (2)</h3>
            </br>
            <p>Google, Microsoft...</p>
            <ul>
              <li>Detailed technical design is expensive and requires hierarchial structure</li>
              <li>They do not exploit our logistical advantage of being in one place</li>
            </ul>
          </section>

          <section>
            <h3>Alternatives (3)</h3>
            </br>
            <p>Linux...</p>
            <ul>
              <li>Brutal and hierarchial structure with a lot of overhead</li>
              <li>They do not exploit our logistical advantage of being in one place</li>
            </ul>
          </section>

        </section>


        <section>

          <section>
            <h3>Suggestions</h3>
            </br>
            <ul>
              <li>Automate most of the current QA tasks through better test coverage, static checking and linting</li>
              <li>Modify the QA flow</li>
              <li>Consider a more detailed technical specification(s)</li>
            </ul>
          </section>

          <section>
            <h3>Automation</h3>
            </br>
            <ul>
              <li>better test coverage - as much as possible, something is better than nothing</li>
              <li>own flake / pylint modules, as well as disabling the annoying ones as part of CI</li>
            </ul>
          </section>

          <section>
            <h3>New QA flow</h3>
            </br>
            <ol>
              <li>Decide whether the task is "strategical" during planning and mark it accordingly in Jira</li>
              <li>Assign supervising developer once the task is picked</li>
              <li>Commence the design phase(*)</li>
              <li>Approval by the supervising developer should be required</li>
            </ol>
          </section>

          <section>
            <h3>New QA flow (2)</h3>
            </br>
            <p>Design phase</p>
            <ol>
              <li>Identify all entities, entry points and parameters (in case of CLI)</li>
              <li>Decide on names, naming conventions and where different enteties will reside</li>
              <li>Decide on code entities and define the public interface (OO design)</li>
            </ol>
          </section>
          
          <section>
            <h3>A more detailed technical specification?</h3>
            </br>
            <p>May be feasible when developing new systems and micro-services</p>
          </section>

        </section>


        <section>
          <h1>Q&A</h1>
        </section>


      </div>
    </div>

	<script src="dist/reveal.js"></script>
	<script src="plugin/zoom/zoom.js"></script>
	<script src="plugin/notes/notes.js"></script>
	<script src="plugin/search/search.js"></script>
	<script src="plugin/markdown/markdown.js"></script>
	<script src="plugin/highlight/highlight.js"></script>
	<script>

	  // Also available as an ES module, see:
	  // https://revealjs.netlify.app/initialization/
	  Reveal.initialize({
		controls: true,
		progress: true,
		center: true,
		hash: true,

		// Learn about plugins: https://revealjs.netlify.app/plugins/
		plugins: [ RevealZoom, RevealNotes, RevealSearch, RevealMarkdown, RevealHighlight ]
	  });
      
	</script>

  </body>
</html>