\section{Lessons Learned and Conclusion} \label{sec:lessons} %%% Acho que podemos organizar em algo assim, explicitando a lição%%% %(Lesson 1 -- Students in real-world project interacting with real customers) The multidisciplinary of our development team - mainly composed of software engineers undergraduate students, senior developers, and designers - makes that naturally fit the project requirements and consequently achieve a high quality. To collaborate to that, there was a stakeholder team of technicians and managers from the Brazilian Government, as well as the management team from the UnB. In particular at the being of the project, the different perceptions of the Brazilian Government stakeholders generated a high complex communication and management environment. Once we were practicing an empirical development approach based on FOSS and agile methods, our development team also interacted directly with the stakeholders to mitigate several moments of management overhead, supporting the UnB professors those were responsible for the project management. The interaction with professionals, that have different expertises, and the participation in all levels of the software development process contributed with a great learning opportunity for the students, which majority have their first professional experience. At the initial phases of the project, by political and personal motivation, the main stakeholders from the Brazilian government imposed the use of Colab to guide the development of the new SPB platform. Our team were totally against the idea because we already knew that Colab was a very experimental project and its adoption could dramatically increase the project complexity. Even though we provided technical reasons to not utilize Colab, MP enforces it to us and we had to manage this problem. As explained in section \ref{sec:architecture} we did a massive change in it, and at the end of the project we completely rewrite Colab and made it stable. It is important to notice that the MP compelled us to accept a technical issue based only on political interests, without considering all the money they would spend with their decision. At the end of the project, we verified that Colab consumed a vast amount of the budget and indeed increased the project complexity. In the end of the project and after our analyses on the decisions made by the MP, we understand that MP's managers are capable of ignoring technical reasons in favor to a political decision. In the process of deploying the SPB platform in the MP structure, we had to interact with the MP's technicians. We did several workshops, training and a meticulous documentation describing all the required procedures to update the platform, however, we realized that the MP's technicians constantly avoid the responsibility. After notice the aforementioned situation, we organized a specific team to start a DevOps activities and interacts with all the UnB teams. After a year of work, we completely automated all the deployment procedure. We simplified all the platform implantation to a few steps: (1) initial configurations (just ssh configuration) and (2) the execution of simple commands to completely update the platform. In the end of the project, we observed that the MP technical invariably depends on our support to update the platform even with all the automation provided by us. From the point of view of management and development processes, we had to develop strategies that would support different organizational cultures. As reported in Section \ref{sec:process}, the MP is organized in a functional hierarchical organizational structure, typically, a traditional development paradigm. The UnB team works based on agile manifest values and FOSS community practices. Therefore, we had to create a translation process to communicate with MP managers who manage their project based on the PMBoK ideas. On the one hand, in the intermediary and final project's phases, we had matured this process, mainly due to the perception of the results by the MP, on the other hand, in the initial phase we had a lot of intervention in our work style, which ended up focusing strategic discussions for operational discussions. The aforementioned situation created an overload to the professors because they were responsible for maintaining the strategic alignment of the MP synchronized with the development team. Another important factor for the students was the composition of the teams with the participation of senior professionals from the FOSS communities. These professionals and professors promoted a work environment where the students could develop their skills in a didactic way without transferring any pressure to the students. Addition, these experienced professionals were responsible for the most relevant technical decisions related to the SPB software product. % * Gestão dos recursos: Fizemos mais por menos (2.6M de 3.2M) --- sem os dados %% (escopo, custo, tempo e qualidade) bem discutidos é difícil sustentar essa %% afirmação, embora eu e Paulo consigamos perceber isso. The experience of the SPB project led UnB to develop a work style which proved to be appropriated to the characteristics of an educational environment and brings the academy closer to the industry. The highest priority from the university's point of view is the students, considering this, the activities of the project were never prioritized to the detriment of the classes and other pedagogical activities. In summary, we had students working at different times, part time, remotely or locally, always respecting their individual conditions, but doing the work in a collective, collaborative and open way. At the end of the project, we realized that the skills developed by the students empowered them with the state in the practice of software engineering. The members of the teams got opportunities to work in public, private, national and international organizations, in addition to those students they preferred entrepreneurship, opening their own companies. %=========== % Conclusion %=========== The portal is available at \url{softwarepublico.gov.br}. All documentation, including detailed architecture and operation manuals are also available\footnote{\url{https://softwarepublico.gov.br/doc/} (in Portuguese only at the moment)}). % All the integrated tools are FOSS and our contributions were published in open repositories, available on the SPB Portal itself. We also contributed these features back to the respective communities: that benefits those communities, as well as us since we can share future development and maintenance effort with other organizations that participate in their projects. %* utilização do projeto para formação de recursos humanos (alunos) %* dados da verificação dos repositório para a análise da qualidade dos código via Mezuro e CodeClimate %* o que achamos que irá acontecer com o SPB no futuro breve (acabar) %* 69 projetos marcados como SPB, de 81 no total na plataforma. %* 47\% é desenvolvido em PHP. % foi constatado que aproximadamente 75\% dos softwares \textbf{não} possuem seus códigos-fonte versionados nesta ferramenta. Realizado algumas pesquisas, foi encontrado o código-fonte em outros serviços (Github, Bitbucket). % Foram adicionados 31 softwares do SPB em ambas as ferramentas (Mezuro e Code Climate), desenvolvidos em PHP e Python. Estas adições resultaram na análise descrita nos próximos parágrafos. No Mezuro, dos 31 softwares adicionados, somente 4 obtiveram sucesso na avaliação. No Code Climate, 16 softwares realizaram a \textit{build} da avaliação com sucesso. Nos que falharam, alguns dos erros foram encontrados em três das \textit{engines}: ora em \textit{duplication}, ora na \textit{phpmd}, ora na \textit{eslint}. % também foram inseridos no Mezuro para avaliação, 5 projetos dos 17 desenvolvidos em Java, com o intuito de ser um contraponto ao Code Climatepor esta não compreender a análise de projetos em Java, C, ou C++. Infelizmente nenhuma das \textit{builds} resultou em resultados concretos. %* Debater economia de recursos em orgão públicos