Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2018, 1 de julho
Resumo
∗
victorlbitten@gmail.com
1
Sumário
Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Descrição da empresa e do setor de trabalho . . . . . . . . . . . . . . . . . . 4
2.1 História da empresa e do Climas . . . . . . . . . . . . . . . . . . . . 4
2.2 Atuação da WayCarbon . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Descrição das atividades realizadas . . . . . . . . . . . . . . . . . . . . . . . 5
3.1 Arquitetura do Climas . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Ferramentas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.1 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.2 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.3 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.4 CakePHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2.5 Node.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.6 AngularJS . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.7 HTML 5, CSS 3 e JavaScript . . . . . . . . . . . . . . . . . 9
3.3 Refatoração da página de ações . . . . . . . . . . . . . . . . . . . . . 9
3.4 Refatoração do modal de ações . . . . . . . . . . . . . . . . . . . . . 11
3.5 Refatoração da página de login . . . . . . . . . . . . . . . . . . . . . 13
3.6 Tarefas gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.6.1 Árvores de hierarquias . . . . . . . . . . . . . . . . . . . . . 14
3.6.2 Organogramas . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.6.3 Detalhes de questões . . . . . . . . . . . . . . . . . . . . . . 15
3.6.4 Usuários desativados . . . . . . . . . . . . . . . . . . . . . . 15
4 Contribuição do estágio para formação acadêmica e profissional . . . . . . . 16
5 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1 Introdução
O processo de estágio é prática comum há vários séculos nas instituições de ensino,
servindo ao fim de melhor preparar os aspirantes à profissão em questão, garantindo que
profissionais já habituados àquele labor passem adiante os conhecimentos práticos obtidos
ao longo dos anos. A definição inicial retirada do site Wikipédia lê "A função do estágio é
oferecer, aos aprendizes, o conhecimento prático das funções profissionais. Ele possibilita,
aos estudantes, um contato empírico com as matérias teóricas que lhes são passadas em
sala de aula. Trata-se do entendimento, hoje consolidado pelos educadores, de que a teoria,
sem a prática, é incompleta, prejudicando o acesso imediato ao mercado de trabalho. O
estágio visa a superar este problema"(ESTÁGIO. . . , 2018). Seguindo este conceito e com
a intenção de formar profissionais aptos a atuar bem, a Universidade Federal de Minas
Gerais requer que seus estudantes passem por um período de estágio como pré-requisito
para sua formatura.
No âmbito da Engenharia de Controle e Automação, o estágio apresenta aos alunos
uma oportunidade única de vivenciar os conceitos absorvidos na academia. Isso se dá pelo
fato de esta engenharia possuir uma ampla gama de possibilidades, variando em campos
de atuação diversos, como eletrônica, desenvolvimento de softwares para fins web e outros,
controle e automação industrial, instrumentação industrial e mais. Desta forma, durante o
período de estágio, o aluno é convidado a perceber as especificidades de uma das áreas de
atuação e entender as nuances da relação existente entre elas.
O estágio aqui descrito foi realizado na empresa WayCarbon, uma das líderes em
consultoria estratégica e soluções tecnológicas para mercados de baixo carbono e controle
de sustentabilidade. Sediada no Parque Tecnológico BH-Tech, a empresa viu o mercado
de créditos de carbono, sua principal fonte de renda até 2014, atingir seu apogeu e entrar
em processo de queda. Os diretores, vendo que o mercado já não apresentava o potencial
antes presente, reinventaram a forma de prestar os serviços de consultoria ambiental e
prestaram-se à vanguarda de transformar esses serviços em softwares web, visando um
produto de confiabilidade e disponibilidade altas, além de extremamente versátil e flexível,
capaz de ser empregado com eficiência por diferentes empresas atuando em diferentes áreas.
Antes chamado eClimas, o software atingiu a versão 1.8 e transformou-se no
carro-chefe nos lucros da empresa. Agora em sua segunda versão e renomeado para
Climas, o produto visa corrigir as deficiências de seu predecessor e introduzir novos
conceitos de gerência ambiental aos clientes. O autor atuou, em seu período de estágio,
no desenvolvimento deste programa, que tem suas funcionalidades e funcionamento geral
descritos ao longo do relatório.
3
2 Descrição da empresa e do setor de trabalho
2.1 História da empresa e do Climas
A WayCarbon começa a atuar em 2006, quando quatro alunos da UFMG se propõe
a prestar serviços de consultoria ambiental. Após alguns anos atuando nessa área, percebem
a oportunidade de trabalhar com créditos de carbono, mercado bastante lucrativo até
meados de 2013.
Quando o mercado de créditos de carbono entra em declínio, os diretores decidem-se
por inovar e orientar a prestação de seus serviços a softwares, dando início à produção do
eClimas, produto que oferecia às empresas contratantes funcionalidades de gerenciamento
do impacto ambiental. Além disso, o software permitia que os clientes organizassem
o aparato empresarial para obtenção de certificados internacionais de responsabilidade
ambiental.
À medida que o eClimas se tornava um produto de sucesso, várias vulnerabilidades
e oportunidades de otimização foram identificadas. A partir desse ponto o diretor de
inovação tecnológica da WayCarbon, Breno Rates, decide-se por buscar consultoria com
outras empresas para a construção da versão 2.0 do software. Assim surge o novo produto,
renomeado para Climas, que está ainda em desenvolvimento e foi o principal alvo dos
trabalhos realizados pelo autor em seu período de estágio.
4
3 Descrição das atividades realizadas
O estagiário atuou como parte de uma equipe de oito pessoas no desenvolvimento
do software web Climas. Durante o período de estágio desenvolveu-se rapidamente afinidade
com o frontend e o web design, áreas que tem como objetivo propor a forma como o usuário
irá interagir com o produto, suas ferramentas e dados. Grande parte do tempo de trabalho
foi gasto nestas áreas, mas trabalhos com o backend também foram realizados.
A seguir, uma breve descrição da estrutura do Climas é feita.
5
3.2 Ferramentas utilizadas
3.2.1 MySQL
3.2.2 MongoDB
6
Figura 2 – Logo do banco de dados MongoDB
3.2.3 PHP
3.2.4 CakePHP
Framework que utiliza a linguagem PHP para fornecer modelo rápido de trabalho
sem comprometer a flexibilidade. Utiliza esquema MVC(Model-View-Controller) para
organização de arquivos e arcabouço de comunicação e estruturação de projetos. É possível
criar modelos para o banco de dados e estender a abstração inicial de controlador. Permite
que partes repetitivas do código sejam armazenadas em componentes para agilizar a
produção. Oferece ORM para interação com o banco de dados.
Dentro do Climas, o CakePHP é utilizado como framework backend para gerencia-
mento do banco relacional, MySQL.
7
Figura 4 – Logo do framework CakePHP
3.2.5 Node.js
3.2.6 AngularJS
AngularJS é um framework frontend mantido pela Google que tem como objetivo
facilitar a produção de SPA(Single Page Applications). Utiliza estrutura MVVM(model-
view-view-model) e pode ser visto como extensão às tags HTML para interação entre
as views e os modelos. Permite criação de diretivas, blocos de códigos de escopo próprio
que podem ser incluídos em quaisquer partes do código para evitar repetibilidade na
implementação.(ANGULARJS, 2018)
No escopo do Climas é utilizado como framework frotend para gerenciamento das
páginas, fazendo integração com o CakePHP e permitindo comportamento dinâmico à
aplicação.
8
Figura 6 – Logo do framework AngularJS
HTML, CSS e JavaScript são a tríade básica para construção de páginas web
dinâmicas. HTML é a markup language que descreve o conteúdo a ser inserido na página,
bem como características básicas do posicionamento dos elementos. Disponibiliza diversas
tags para inserção do conteúdo. CSS, ou Cascade Style Sheet, é a folha de estilos a ser
aplicada aos elementos HTML. Permite estilização ampla dos elementos. JavaScript é a
linguagem de programação utilizada para dar dinamismo à página, e pode ser utilizada
para integração com o backend.
Figura 7 – Legenda
9
de forma a manipular informações atomicamente.É trabalho constante na empresa ter de
escrever rotas quase idênticas às já existentes, com apenas pequenas modificações, para se
manipular as informações desejadas. Quase um mês de trabalho foi gasto nesta refatoração
para modificar as rotas e separá-las, de forma a não onerar o servidor em manipulações
desnecessárias.
Depois que as rotas estavam refatoradas, o trabalho de refatoração na dinâmica e no
estilo geral da página foi iniciado. Na versão anterior da página, o usuário era bombardeado
com uma quantidade imensa de informações, dificultando o entendimento do conteúdo
exibido. As cores utilizadas possuíam contraste agressivo e serviam pouco à função de
informar ao usuário o que os elementos significavam. O plugin utilizado para implementar
o drag de cartões era pouco responsivo, mal documentado e apresentava bugs constantes.
A responsividade da tela era mal implementada, punindo usuários que utilizassem telas
muito grandes ou muito pequenas. A saber: telas com largura superior a 1680px ou inferior
a 1280px faziam com que as lanes se sobrepusessem. Outro mês de trabalho foi gasto
para corrigir todos esses problemas, e a versão final da tela é como exibido na Figura 8.
Como pode ser visto na Figura 8, a página oferece funcionalidade para adicionar nova ação,
10
ele associada, progressão da checklist ligada ao cartão, bem como avatar dos usuários a
ele relacionados. As datas de entrega podem ser coloridas de três formas: fundo branco
significa que existe ao menos 48h até o vencimento da deadline, fundo amarelo significa que
existe entre 0h e 48h até o vencimento da deadline, e fundo rosa significa que a deadline
já expirou. As checklists possuem formato completo/total, e devem possuir fundo verde
quando todas as tarefas foram finalizadas. O avatar dos usuários exibe a foto do perfil do
usuário no caso de ela existir, ou exibe as iniciais do nome do usuário no caso de ele não
possuir foto.
Toda a gerência das ações(adição, remoção, associação de usuários, pergunta
associada, checklists, etc) é feita através do modal de ações, que é aberto quando o usuário
adiciona nova ação ou clica em um cartão já existente. O modal também foi refatorado, e
este processo é descrito na seção seguinte.
11
Figura 9 – Versão final do modal de ações
Entre todas as modificações feitas no modal de ações, a que tomou mais tempo e
apresentou mais desafios foi a ferramenta de adicionar e remover usuários. Essas dificuldades
se apresentaram em diferentes frentes, a saber: 1) em caráter lógico, uma vez que a lista não
deve exibir todos os funcionários da corporação, mas apenas aqueles que possuam perfis
com determinadas características. Apesar de a lógica com os perfis não ser complexa, a
obtenção desses perfis no banco de dados foi bastante desafiadora de se implementar devido
a erros de normalização das tabelas quando de sua concepção. 2) Foi necessário recriar
a forma como os usuários já adicionados eram exibidos, pois a lista não era responsiva
nem flexível e se comportava mal em telas pequenas. A solução adotada aqui - e também
adotada em diversas outras partes da aplicação posteriormente - foi a tecnologia Flexbox
fornecida pela equipe do CSS. Esta forma de se declarar estilos permite que o caráter
responsivo dos elementos HTML sejam descritos de forma matemática, em relação ao
tamanho da tela utilizada. Desta forma, é possível dispor os itens nativamente flexíveis
e responsivos, quando muitos avatares devem ser exibidos, uma nova linha é adicionada
abaixo da já existente. 3) A caixa de adição de usuários utilizava um plugin dropdown
que não era responsivo, vazava à tela quando listas extensas eram exibidas e forçava o
escopo da caixa de pesquisa no escopo da lista, impedindo o usuário de acessar a pesquisa
enquanto navegava pela lista. Como o plugin era mal documentado, realidade comum em
aplicações pequenas como estas, depois de dois dias de pesquisa sobre como resolver esses
problemas, decidiu-se por recriar completamente a caixa de gerenciamento de usuários.
Desta forma, o estilo da caixa foi adaptado para condizer com o estilo geral do Climas, sua
altura foi limitada através de percentual da altura da tela utilizada, impedindo que a lista
vazasse à tela e scroll estilizado foi adicionado. Um identificador de usuários selecionados
foi criado na forma de um V verde. A cor dos nomes de usuários foi modificada para ser
12
igual à cor da identidade visual do produto, e possui efeito on hover para que o usuário
identifique em que ponto da lista se encontra. A versão final da caixa de gerenciamento de
usuários pode ser conferida na Figura 10.
13
A tela anterior possuía diversos problemas para a experiência do usuário: os botões
para login com contas de terceiros(Google e Microsoft) não eram posicionados perto do
botão de login com conta Climas, dificultando o entendimento do usuário sobre como
executar a operação. Além disso, esses botões não seguiam os padrões requeridos pelas
empresas que oferecem o serviço, utilizando cor leve que não contrastava com o fundo
azul da página, e fazia com que não parecessem botões. A tela não era responsiva -
problema presente na maioria das telas da aplicação - funcionando bem somente para
alguns tamanhos.
A proposta da nova tela é construída em torno de uma caixa branca composta por
duas partes básicas: login com conta Climas e login com contas de terceiros, em proporção
3:2, dividas por um separador vertical que possui cor da identidade visual da empresa. O
roda-pé da caixa apresenta opção de seleção de idioma, que atualmente conta com três
opções: Português, Inglês e Espanhol.
Para que a tela fosse responsiva e mantivesse o comportamento esperado à medida
que as proporções da tela fossem alteadas, lançou-se mão novamente do Flexbox da
CSS. Todos os elementos tem suas proporções definidas em relação às proporções da tela,
mantendo sempre o mesmo aspecto. Os botões de login com contas de terceiros foram
recriados para possuírem formato e cor que seguisse o estilo proposto pelas empresas que
fornecem o serviço.
Há uma estrutura dentro dos dados das empresas no Climas chamada hierarquia.
As hierarquias são basicamente árvores e podem possuir sete níveis. Em empresas grandes,
essas hierarquias atingem números muito altos, e tornam quaisquer operações sobre a
14
árvore extremamente lentas. A ferramenta utilizada para trabalhar com as hierarquias é
um plugin que não possui otimização alguma no algoritmo de busca e manipulação dos
nós da árvore, fazendo com que qualquer operação seja extremamente lenta.
Um dos trabalhos realizados no estágio envolvia exibição das hierarquias e a
construção de ferramenta de busca nos nós. Quando o usuário abre o painel de hierarquias,
todos os nós estão aninhados, e a renderização ocorre rapidamente. Entretanto, à medida
que o usuário insere qualquer caractere no campo de busca, o processo de scan na árvore é
iniciado. Como as hierarquias são extensas, esse processo é lento e tortuoso, punindo o
usuário e tornando a utilização da ferramenta quase inviável. Algumas melhorias foram
feitas através de uma matriz de adjacências, tornando a busca mais rápida. Ainda assim, o
processo ainda é demorado, pois o plugin não é otimizado. Melhorá-lo parecia uma tarefa
demorada e complicada, e a orientação do coordenador foi de deixar essa ferramenta em
pendência.
3.6.2 Organogramas
15
apagá-los do banco de dados e refatoração de todo o processo de desativação do usuário
teve de ser feita.
5 Conclusão
O período acadêmico foi muito importante pra mim e me ensinou muitas coisas,
mas, indubitavelmente, meu período de estágio foi o mais valioso até agora. Minha relação
com as pessoas da empresa me ensinou muito sobre como ser um bom profissional é
recompensador, sobre como participar ativamente de um projeto conjunto pode ser bom.
O engrandecimento pessoal através do trabalho era algo em que não acreditava fortemente,
e hoje me é um conceito claro, uma prática diária.
16
Referências
17