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,113 +2,112 @@ | ||
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 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 | flexibility to negotiate their work schedule during the semester in | 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 | in the project included programming and DevOps tasks. | 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 | and to transfer knowledge to the students. Their main task was to provide | 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 | communication to be online. | 20 | communication to be online. |
21 | 21 | ||
22 | In short, our work process was based on open and collaborative software | 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 | high degree of automation resulting from DevOps practices. Thus, the work | 25 | high degree of automation resulting from DevOps practices. Thus, the work |
26 | process was executed in a cadenced and continuous way. | 26 | process was executed in a cadenced and continuous way. |
27 | 27 | ||
28 | Finally, the last group of actors of this project was composed of employees | 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 | Development, and Management (MP is the Brazilian acronym). All the project | 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 | \subsection{Team organization} | 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 | engineering undergraduate students from UnB and they worked physically | 39 | engineering undergraduate students from UnB and they worked physically |
40 | in the same laboratory. Each student had their own schedule based on | 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 | \begin{enumerate} | 46 | \begin{enumerate} |
47 | \item Classes have high priority for undergraduate students; | 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 | alongside the students for a few days. | 53 | alongside the students for a few days. |
54 | \end{enumerate} | 54 | \end{enumerate} |
55 | 55 | ||
56 | With the aforementioned rules we divided all the project into four | 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 | One characteristic of the teams was the presence of (at least) one | 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 | 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 | students to be coaches. Lastly, the senior developers worked directly | 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 | keep the knowledge flowing in the project. | 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 | orchestrated all the interactions between all members of the project. | 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 | 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 | \subsection{Communication and management} | 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 | the Brazilian government and citizens interested in following the project. To | 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 | conferencing with shared terminal tools, IRC, and mailing lists. For example, | 95 | conferencing with shared terminal tools, IRC, and mailing lists. For example, |
97 | when one student had to work in pair with a senior, normally, they used video | 96 | when one student had to work in pair with a senior, normally, they used video |
98 | conferencing tool for talking and shared a terminal session (both typing and | 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 | IRC. For general notification, we used the mailing lists. | 99 | IRC. For general notification, we used the mailing lists. |
101 | 100 | ||
102 | For managing the project we used the SPB Portal itself; first to validate it by | 101 | For managing the project we used the SPB Portal itself; first to validate it by |
103 | ourselves, and also because it had all the required tools. We basically created | 102 | ourselves, and also because it had all the required tools. We basically created |
104 | one wiki page per release in the SPB Gitlab instance with a mapping between | 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 | each feature. With this approach we achieved two important goals: keeping all | 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 | feature developed during the project. Our decision to | 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 | opensourcestyle}. | 111 | opensourcestyle}. |
113 | 112 | ||
114 | \subsection{High-level project management and reporting} | 113 | \subsection{High-level project management and reporting} |
@@ -117,14 +116,14 @@ The Brazilian government used to work with software development in a | @@ -117,14 +116,14 @@ The Brazilian government used to work with software development in a | ||
117 | very traditional way. They would frequently focus on documents and not | 116 | very traditional way. They would frequently focus on documents and not |
118 | on what was, in our opinion, what really matters: working software. This | 117 | on what was, in our opinion, what really matters: working software. This |
119 | dissonance caused us a communication noise with MP, because they would | 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 | to accept the idea of open scope and agile development, but after months | 120 | to accept the idea of open scope and agile development, but after months |
122 | of labor and showing results they stopped resisting. | 121 | of labor and showing results they stopped resisting. |
123 | 122 | ||
124 | We defined some level of meeting granularity to avoid generating too | 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 | meeting with MP (the former once in a month and the latter each 15th | 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 | a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a | 127 | a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a |
129 | diagram that represents our meeting organization. | 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,41 +140,42 @@ coach of each team, the meta-coach, and some employees of the MP would | ||
141 | participate in this meeting. We usually discussed what the team already | 140 | participate in this meeting. We usually discussed what the team already |
142 | produced since our last meeting, and established the new features for | 141 | produced since our last meeting, and established the new features for |
143 | the next release. Notice that just part of the team would join this | 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 | After the strategical meeting with Brazilian government agents, we had a | 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 | to convert the MP wishes into smaller parts which were represented by the epics of | 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 | achievements mapped to issues). | 153 | achievements mapped to issues). |
155 | 154 | ||
156 | To keep the Brazilian government always updated, we invited them to work | 155 | To keep the Brazilian government always updated, we invited them to work |
157 | with us to validate the new features in progress. Normally we had a | 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 | everything extremely open to the MP (our way of working, and the one | 158 | everything extremely open to the MP (our way of working, and the one |
160 | often used by open source projects) and to the team. | 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 | especially Gitlab. Basically, we had: | 162 | especially Gitlab. Basically, we had: |
164 | 163 | ||
165 | \begin{enumerate} | 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 | strategical meeting; | 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 | \end{enumerate} | 172 | \end{enumerate} |
174 | 173 | ||
175 | Notice that this workflow gave us and the Brazilian government agents full | 174 | Notice that this workflow gave us and the Brazilian government agents full |
176 | traceability from a high level view of each feature to the lowest level (code). | 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 | experiments. For example, we used a tool named Redmine for organizing our tasks | 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 | the government agents lost part of the project traceability. We realized that | 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 | + |