Commit ae483700f44886e41de81a5a42317d00a41bbddf

Authored by Paulo Meireles
1 parent c54bac8b

[opensym] reviewing the 'process' section

Showing 1 changed file with 129 additions and 135 deletions   Show diff stats
opensym2017/content/08-process.tex
... ... @@ -2,46 +2,43 @@
2 2 \label{sec:process}
3 3  
4 4 The SPB team was composed of a variety of professionals with different levels
5   -and skills, where most of them were undergraduate students of
6   -software engineering. Since students could
7   -not dedicate many hours per week to the project, they had the
8   -flexibility to negotiate their work schedule during the semester in
9   -order to not harm their classes and coursework. Their work routine
  5 +and skills, where most of them were undergraduate students of software
  6 +engineering. Since students could not dedicate many hours per week to the
  7 +project, they had the flexibility to negotiate their work schedule during the
  8 +semester in order to not harm their classes and coursework. Their work routine
10 9 in the project included programming and DevOps tasks.
11 10  
12   -The project required a vast experience and background that
13   -usually undergraduate students do not have. For this reason, a few senior
14   -developers have joined the project to help with the more difficult issues
15   -and to transfer knowledge to the students. Their main task was to provide
16   -solutions for complex problems, working as developers. As
17   -these professionals are very skillful and the project could not fund full-time
18   -work for all of them, some of them worked partially on the project. In addition,
19   -they lived in different Brazilian states, which led much of the
20   -communication to be online.
  11 +The project required a vast experience and background that usually
  12 +undergraduate students do not have. For this reason, a few senior developers
  13 +have joined the project to help with the more difficult issues and to transfer
  14 +knowledge to the students. Their main task was to provide solutions for complex
  15 +problems, working as developers. As these professionals are very skillful and
  16 +the project could not fund full-time work for all of them, they worked
  17 +partially on the project. In addition, they lived in either different Brazilian
  18 +states or other countries, which led much of the communication to be online.
21 19  
22 20 In short, our work process was based on open and collaborative software
23   -development practices. The development process was based on the
24   -adaptation of different agile and FLOSS communities practices, with a
25   -high degree of automation resulting from DevOps practices. Thus, the work
26   -process was executed in a cadenced and continuous way.
27   -
28   -Finally, the last group of actors of this project was composed of employees
29   -of the Brazilian Ministry of Planning,
30   -Development, and Management (MP is the Brazilian acronym). All the project
31   -decisions, validations, and scope definitions were made by them. In this way, we
32   -incrementally developed a software product with releases aligned to
33   -strategic business objectives. As one can see, the project had a wide range
34   -of different stakeholders that had to be organized and synchronized.
35   -
36   -\subsection{Team organization}
37   -
38   -Approximately 70\% of the development team was composed of software
39   -engineering undergraduate students from UnB and they worked physically
40   -in the same laboratory. Each student had their own schedule based on
41   -her classes, what complicates the implementation of pair programming.
42   -The senior developers tried to synchronize their schedule with
43   -students schedules. To cope with this scenario, we had a few
44   -basic rules guiding the project organization:
  21 +development practices. The development process was based on the adaptation of
  22 +different agile and FLOSS communities practices, with a high degree of
  23 +automation resulting from DevOps practices. Thus, the work process was executed
  24 +in a cadenced and continuous way.
  25 +
  26 +Finally, the last group of actors of this project was composed of employees of
  27 +the Brazilian Ministry of Planning, Development, and Management (MP is the
  28 +Brazilian acronym). All the project decisions, validations, and scope
  29 +definitions were made by them. In this way, we incrementally developed a
  30 +software product with releases aligned to strategic business objectives. As one
  31 +can see, the project had a wide range of different stakeholders that had to be
  32 +organized and synchronized.
  33 +
  34 +\subsection{Team Organization}
  35 +
  36 +Approximately 70\% of the development team was composed of software engineering
  37 +undergraduate students from UnB and they worked physically in the same
  38 +laboratory. Each student had their own schedule based on her classes, what
  39 +complicates the implementation of pair programming. The senior developers
  40 +tried to synchronize their schedule with students schedules. To cope with this
  41 +scenario, we had a few basic rules guiding the project organization:
45 42  
46 43 \begin{enumerate}
47 44 \item Classes have high priority for undergraduate students;
... ... @@ -49,83 +46,72 @@ basic rules guiding the project organization:
49 46 \item We had one morning or afternoon per week when
50 47 \emph{everyone}, but the remote members,
51 48 should be together physically in the laboratory;
52   - \item Every 3 to 4 months the senior developers would travel to work
  49 + \item Every 2 to 3 months the senior developers would travel to work
53 50 alongside the students for a few days.
54 51 \end{enumerate}
55 52  
56   -With the aforementioned rules we divided all the project into four
57   -different teams: Colab, Noosfero, Design, and DevOps. One student of each team was the
58   -coach, responsible for reducing the communication problem with other
59   -teams and helping the members to organize themselves in the best way for
60   -everyone (always respecting their work time). The coach
61   -had also the extra duty of registering
62   -the current tasks developed in the sprint.
63   -One important thing to notice is the mutability
64   -of the team and the coach. During the project many students changed
65   -their teams to try different areas.
66   -
67   -One characteristic of the teams was the presence of (at least) one
68   -senior per team. This was essential, because hard decisions and complex
69   -problems were usually referred to them. So, it was not the coach role
70   -to deal with complicated technical decisions, what encouraged
71   -students to be coaches. Lastly, the senior developers worked directly
72   -with the students, and this was important to give to students the
73   -opportunity to interact with a savvy professional in their areas and to
74   -keep the knowledge flowing in the project.
75   -
76   -Finally, we had to add two more elements to the team organization that
77   -were essential for the project harmony: the meta-coach and professors.
78   -The former was a software engineer recently graduated that wanted
79   -to keep working on the project. The latter were professors that
80   -orchestrated all the interactions between all members of the project.
81   -The meta-coach usually worked in one specific team and had the extra
82   -task of knowing the current status of all teams. Professors and the
83   -meta-coach worked together to reduce the communication problem among
84   -teams. Lastly, all the paperwork tasks, such as reporting on the
85   -project progress to the Ministry, was handled by professors.
86   -
87   -\subsection{Communication and management}
  53 +With the aforementioned rules, we divided all the project into four different
  54 +teams: Colab, Noosfero, Design, and DevOps. One student of each team was the
  55 +coach, responsible for reducing the communication problem with other teams and
  56 +helping the members to organize themselves in the best way for everyone (always
  57 +respecting their work time). The coach had also the extra duty of registering
  58 +the current tasks developed in the sprint. One important thing to notice is
  59 +the mutability of the team and the coach. During the project many students
  60 +changed their teams to try different areas.
  61 +
  62 +One characteristic of the teams was the presence of (at least) one senior per
  63 +team. This was essential, because hard decisions and complex problems were
  64 +usually referred to them. Thus, it was not the coach role to deal with
  65 +complicated technical decisions, what encouraged students to be coaches.
  66 +Lastly, the senior developers worked directly with the students, and this was
  67 +important to give to students the opportunity to interact with a savvy
  68 +professional in their areas and to keep the knowledge flowing in the project.
  69 +
  70 +Finally, we had to add two more elements to the team organization that were
  71 +essential for the project harmony: the meta-coach and professors. The former
  72 +was a software engineer recently graduated that wanted to keep working on the
  73 +project. The latter were professors that orchestrated all the interactions
  74 +between all members of the project. The meta-coach usually worked in one
  75 +specific team and had the extra task of knowing the current status of all
  76 +teams. Professors and the meta-coach worked together to reduce the
  77 +communication problem among teams. Lastly, all the paperwork tasks, such as
  78 +reporting on the project progress to the Brazilian Government, was handled by
  79 +professors.
  80 +
  81 +\subsection{Communication and Management}
88 82  
89 83 Our team had many people working together, and most of the seniors worked in
90 84 different cities remotely. Also, we tried to keep our work completely clear to
91   -the Brazilian government and citizens interested in following the project. To
  85 +the Brazilian Government and citizens interested in following the project. To
92 86 handle these cases, we used a set of communication and management tools.
93 87  
94 88 For communication between members in different places we used: video
95 89 conferencing with shared terminal tools, IRC, and mailing lists. For example,
96 90 when one student had to work in pair with a senior, normally, they used video
97 91 conferencing tool for talking and shared a terminal session (both typing and
98   -seeing each other screen in real time). For questions and fast discussion, we used
99   -IRC. For general notification, we used the mailing lists.
100   -
101   -For managing the project we used the SPB Portal itself; first to validate it by
102   -ourselves, and also because it had all the required tools. We basically created
103   -one wiki page per release in the SPB Gitlab instance with a mapping between
104   -strategical, tactical, and operational views. We had one
105   -milestone per user history (feature) and one or more issues for addressing
106   -each feature. With this approach we achieved two important goals: keeping all
107   -the management as close as possible to the source code and tracking every
108   -feature developed during the project. Our decision to
109   -use the Wiki initially was empirical, but later reinforced by a research conducted
110   -by Joseph Chao showing the advantage of using Wikis~\cite{chao2007student,
111   -opensourcestyle}.
112   -
113   -\subsection{High-level project management and reporting}
114   -
115   -The Brazilian government used to work with software development in a
116   -very traditional way. They would frequently focus on documents and not
117   -on what was, in our opinion, what really matters: working software. This
118   -dissonance caused us a communication noise with MP, because they would
119   -often question our work style. It was especially hard to convince them
120   -to accept the idea of open scope and agile development, but after months
121   -of labor and showing results they stopped resisting.
122   -
123   -We defined some level of meeting granularity to avoid generating too
124   -much overhead to the developers. We had a strategical and a validating
125   -meeting with MP (the former once in a month and the latter each 15th
126   -day), a release planning with the entire team (one per month), and finally
127   -a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a
128   -diagram that represents our meeting organization.
  92 +seeing each other screen in real time). For questions and fast discussion, we
  93 +used IRC. For general notification, we used the mailing lists.
  94 +
  95 +For managing the project, we used the SPB Portal itself; first to validate it
  96 +by ourselves, and also because it had all the required tools. We basically
  97 +created one Wiki page per release in the SPB Gitlab instance with a mapping
  98 +between strategical, tactical, and operational views. We had one milestone per
  99 +user history (feature) and one or more issues for addressing each feature. With
  100 +this approach we achieved two important goals: keeping all the management as
  101 +close as possible to the source code and tracking every feature developed
  102 +during the project. Our decision to use the Wiki initially was empirical, but
  103 +later reinforced by a research conducted by Joseph Chao showing the advantage
  104 +of using Wikis~\cite{chao2007student, opensourcestyle}.
  105 +
  106 +\subsection{High-level Project Management and Reporting}
  107 +
  108 +The Brazilian Government used to work with software development in a very
  109 +traditional way. They would frequently focus on documents and not on what was,
  110 +in our opinion, what really matters: working software. This dissonance caused
  111 +us a communication noise with the Government, because they would often question
  112 +our work style. It was especially hard to convince them to accept the idea of
  113 +open scope and agile development, but after months of labor and showing results
  114 +they stopped resisting.
129 115  
130 116 \begin{figure}[hbt]
131 117 \centering
... ... @@ -134,48 +120,56 @@ diagram that represents our meeting organization.
134 120 \label{fig:meeting}
135 121 \end{figure}
136 122  
137   -In the strategical meeting we usually defined the priorities and new
138   -features with the Brazilian government. Normally the professors, the
139   -coach of each team, the meta-coach, and some employees of the MP would
140   -participate in this meeting. We usually discussed what the team already
141   -produced since our last meeting, and established the new features for
142   -the next release. Notice that just part of the team would join this
143   -meeting to avoid generating unnecessary overhead to developers, but
144   -all the students interested to participate were allowed to join, since many
145   -students wanted this experience during the project.
146   -
147   -After the strategical meeting with Brazilian government agents, we had a
  123 +We defined some level of meeting granularity to avoid generating too much
  124 +overhead to the developers. We had a strategical and a validating meeting with
  125 +the Brazilian Government (the former once in a month and the latter each 15th
  126 +day), a release planning with the entire team (one per month), and finally a
  127 +sprint planning (one each 15th day). Figure \ref{fig:meeting} is a diagram
  128 +that represents our meeting organization.
  129 +
  130 +In the strategical meeting we usually defined the priorities and new features
  131 +with the Brazilian Government. Normally the professors, the coach of each team,
  132 +the meta-coach, and some employees of the Federal Government would participate
  133 +in this meeting. We usually discussed what the team already produced since our
  134 +last meeting, and established the new features for the next release. Notice
  135 +that just part of the team would join this meeting to avoid generating
  136 +unnecessary overhead to developers, but all the students interested to
  137 +participate were allowed to join, since many students wanted this experience
  138 +during the project.
  139 +
  140 +After the strategical meeting with Brazilian Government agents, we had a
148 141 planning phase with all teams together. In this part, each team worked together
149   -to convert the MP wishes into smaller parts which were represented by the epics of
150   -the release. Each coach was responsible for conducting the planning and
151   -recording it on the project wiki (the wiki provided by Gitlab). With this
152   -epic, each 14th day the team have documented their sprint schedule (with small
153   -achievements mapped to issues).
154   -
155   -To keep the Brazilian government always updated, we invited them to work
156   -with us to validate the new features in progress. Normally we had a
157   -meeting each 15th day. Basically, this was our work flow. We always kept
158   -everything extremely open to the MP (our way of working, and the one
159   -often used by open source projects) and to the team.
160   -
161   -To keep the track of all of these things we used the SPB itself,
  142 +to convert the Government wishes into smaller parts which were represented by
  143 +the epics of the release. Each coach was responsible for conducting the
  144 +planning and recording it on the project Wiki. With this epic, each 15th day
  145 +the team have documented their sprint schedule (with small achievements mapped
  146 +to issues).
  147 +
  148 +To keep the Brazilian Government always updated, we invited them to work with
  149 +us to validate the new features in progress. Normally we had a meeting each
  150 +15th day. Basically, this was our work flow. We always kept everything
  151 +extremely open to the Government (our way of working, and the one often used by
  152 +FLOSS projects) and to the team.
  153 +
  154 +To keep the track of all of these things we used the SPB Portal itself,
162 155 especially Gitlab. Basically, we had:
163 156  
164 157 \begin{enumerate}
165 158 \item Project repository: we have one organization with many repositories;
166   - \item Milestones: each milestone was used to register a release;
167   - \item Wiki: each release has one wiki page with the compilation of the
  159 + \item Wiki: each release has one Wiki page with the compilation of the
168 160 strategical meeting;
  161 + \item Milestones: each milestone was used to register a user history (feature);
169 162 \item Issues: each sprint planning generated issues, which we associated to
170   - the related milestone and registered on the related wiki page.
  163 + the related milestone (feature as user history) and registered on the related Wiki page.
171 164 Finally, each developer assigned the issue to herself.
172 165 \end{enumerate}
173 166  
174   -Notice that this workflow gave us and the Brazilian government agents full
175   -traceability from a high level view of each feature to the lowest level (code).
176   -It is important to highlight that we converged to this workflow after many
177   -experiments. For example, we used a tool named Redmine for organizing our tasks
178   -during some sprints. However, this tool revealed to be inefficient for our case since
179   -the government agents lost part of the project traceability. We realized that
180   -centralize all the work in the SPB portal was the best option for our case.
  167 +Notice that this workflow gave us and the Brazilian Government agents full
  168 +traceability from a high level view of each feature to the lowest level (source
  169 +code). It is important to highlight that we converged to this workflow after
  170 +many experiments. For example, we used a tool named Redmine for organizing our
  171 +tasks during some sprints. However, this tool revealed to be inefficient for
  172 +our case since the government agents lost part of the project traceability. We
  173 +realized that centralize all the work in the SPB Portal was the best option for
  174 +our case.
181 175  
... ...