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,46 +2,43 @@
2 \label{sec:process} 2 \label{sec:process}
3 3
4 The SPB team was composed of a variety of professionals with different levels 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 in the project included programming and DevOps tasks. 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 In short, our work process was based on open and collaborative software 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 \begin{enumerate} 43 \begin{enumerate}
47 \item Classes have high priority for undergraduate students; 44 \item Classes have high priority for undergraduate students;
@@ -49,83 +46,72 @@ basic rules guiding the project organization: @@ -49,83 +46,72 @@ basic rules guiding the project organization:
49 \item We had one morning or afternoon per week when 46 \item We had one morning or afternoon per week when
50 \emph{everyone}, but the remote members, 47 \emph{everyone}, but the remote members,
51 should be together physically in the laboratory; 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 alongside the students for a few days. 50 alongside the students for a few days.
54 \end{enumerate} 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 Our team had many people working together, and most of the seniors worked in 83 Our team had many people working together, and most of the seniors worked in
90 different cities remotely. Also, we tried to keep our work completely clear to 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 handle these cases, we used a set of communication and management tools. 86 handle these cases, we used a set of communication and management tools.
93 87
94 For communication between members in different places we used: video 88 For communication between members in different places we used: video
95 conferencing with shared terminal tools, IRC, and mailing lists. For example, 89 conferencing with shared terminal tools, IRC, and mailing lists. For example,
96 when one student had to work in pair with a senior, normally, they used video 90 when one student had to work in pair with a senior, normally, they used video
97 conferencing tool for talking and shared a terminal session (both typing and 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 \begin{figure}[hbt] 116 \begin{figure}[hbt]
131 \centering 117 \centering
@@ -134,48 +120,56 @@ diagram that represents our meeting organization. @@ -134,48 +120,56 @@ diagram that represents our meeting organization.
134 \label{fig:meeting} 120 \label{fig:meeting}
135 \end{figure} 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 planning phase with all teams together. In this part, each team worked together 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 especially Gitlab. Basically, we had: 155 especially Gitlab. Basically, we had:
163 156
164 \begin{enumerate} 157 \begin{enumerate}
165 \item Project repository: we have one organization with many repositories; 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 strategical meeting; 160 strategical meeting;
  161 + \item Milestones: each milestone was used to register a user history (feature);
169 \item Issues: each sprint planning generated issues, which we associated to 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 Finally, each developer assigned the issue to herself. 164 Finally, each developer assigned the issue to herself.
172 \end{enumerate} 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