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