43
UNIVERSIDADE FEDERAL DO ABC BACHARELADO EM CI ˆ ENCIA DA COMPUTAC ¸ ˜ AO EST ´ AGIO SUPERVISIONADO III RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jes´ us Pascual Mena-Chalco Santo Andr´ e – SP 2017

RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

UNIVERSIDADE FEDERAL DO ABC

BACHARELADO EM CIENCIA DA COMPUTACAO

ESTAGIO SUPERVISIONADO III

RAFAEL AUGUSTO PISSARDO

Orientador: Prof. Dr. Jesus Pascual Mena-Chalco

Santo Andre – SP

2017

Page 2: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

RAFAEL AUGUSTO PISSARDO

PROGRAMADOR JR II NA MJV SOLUCOES EM TECNOLOGIA E ESTAGIO E

TRAINEE EM DESENVOLVIMENTO DE SISTEMAS NA CODUS TECNOLOGIA

Relatorio de estagio apresentado a banca do Ba-

charelado em Ciencia da Computacao da Universi-

dade Federal do ABC como requisito parcial para

a obtencao do tıtulo de Bacharel em Ciencia da

Computacao.

Orientador: Prof. Dr. Jesus Pascual Mena-Chalco

Santo Andre – SP

2017

Page 3: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

DEDICATORIA

A minha companheira de todas as horas, aos meus irmaos,e principalmente, minha mae que me

apoiaram desde sempre, incondicionalmente.

1

Page 4: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

AGRADECIMENTOS

Ofereco meus sinceros agradecimentos:

Ao professor orientador Jesus, a minha famılia.

A todos da MJV pela oportunidade unica proporcionada.

A todos da Codus pelo treinamento e pela oportunidade de trabalhar com pessoas extremamente

capacitadas.

2

Page 5: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

”Todo progresso economico e social, em

ultima analise, depende de novas ideias que

contestem a introspeccao e a inercia do

status quo”

Dodgson and Gann [3]

Page 6: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Resumo

Este relatorio tem como objetivo principal descrever as atividades realizadas como Programador

Jr II na MJV Solucoes e Tecnologia, alem de Estagiario e, posteriormente, Trainee em Desenvolvi-

mento de Software na Codus Tecnologia. Tais atividades foram exercidas durante o Bacharelado

em Ciencias da Computacao na Universidade Federal do ABC, entre 2015 e 2017. O relatorio

traz o desenvolvimento e aprendizagem de novos conhecimentos em ambas equipes, bem como

os detalhes profissionais proporcionados.

Palavras-Chave: Mjv, IoT, Agil, Desenvolvimento, Prototipagem, Codus, Ruby, Rails, Clean

Code.

4

Page 7: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Abstract

This report has as main objective to describe as activities carried out as Programmer Jr. II

in MJV Solutions and Technology, in addition to intern and later Trainee in Software Develop-

ment at Codus Tecnologia. These activities were carried out during the Bachelor’s Degree in

Computer Science at the Federal University of ABC between 2015 and 2017. The report brings

the development and learning of new knowledge in both teams, as well as the technical details

provided.

Palavras-Chave: Mjv, IoT, Agile, Development, Prototyping, Codus, Ruby, Rails, Clean Code.

5

Page 8: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Sumario

1 Introducao 8

1.1 Instituicao concedente: MJV Solucoes e Tecnologia . . . . . . . . . . . . . . . . . . 8

1.1.1 Objetivos a serem alcancados . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.1.2 Caracterizacao e analise da MJV . . . . . . . . . . . . . . . . . . . . . . . . 8

1.1.3 Caracterısticas da area onde o estagio foi realizado . . . . . . . . . . . . . . 9

1.2 Instituicao concedente: Codus Desenvolvimento de Sistemas Computacionais Ltda. . 11

1.2.1 Objetivos a serem alcancados . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2.2 Caracterizacao e analise da Codus Tecnologia . . . . . . . . . . . . . . . . . 11

1.2.3 Caracterısticas da area onde o estagio foi realizado . . . . . . . . . . . . . . 12

2 Atividades na MJV 14

2.1 Atividades Desenvolvidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2 Buddies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3 Ferramenta para Auxiliar Criacao de Personas . . . . . . . . . . . . . . . . . . . . . 15

3 Atividades na Codus 18

3.1 Estagio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1.1 Introducao as Atividades Propostas e Ferramenta de Controle das Atividades 18

3.1.2 Estudo HTML + CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1.3 Estudo JavaScript +JQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.4 Leitura do Livro: Clean Code[5] . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.5 Implementacao de um jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.6 Leitura do Livro: Programming Ruby 1.9 and 2.0 [9] . . . . . . . . . . . . . 20

3.1.7 Leitura do Livro: The Rspec Book: Behaviour Driven Development with

Rspec, Cucumber, and Friends [2] . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.8 Leitura do Livro: Agile Web Development with Rails 4 [8] . . . . . . . . . . 21

3.1.9 Diario de Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 Trainee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2.1 Primeiro Grande Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2.2 O projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2.3 Modularizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2.4 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.5 Diario de Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4 Apresentacao aos Alunos 38

5 Disciplinas necessarias para o estagio 38

6 Consideracoes finais 39

6.1 Contribuicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.2 Dificuldades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6

Page 9: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Lista de Figuras

1 Logo da MJV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Logo da Codus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Mapa do escritorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Telas do Prototipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5 Grafo Gerado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

6 Tabela Ordenada por Centralidade de Intermediacao. . . . . . . . . . . . . . . . . . 17

7 Primeiro exercıcio feito na Codus. . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

8 Caludadora construıda com JavaScript, HTML e CSS. . . . . . . . . . . . . . . . . . 19

9 Telas do jogo desenvolvido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

10 Modularizacao de um botao utilizado inumeras vezes. . . . . . . . . . . . . . . . . . 30

11 Tela com modularizacao aplicada. . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

12 Slides da aula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

7

Page 10: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

1 Introducao

Nessa secao, apresenta-se a caracterizacao geral do estagio, das empresas e das atividades es-

pecıficas realizadas. O Relatorio Parcial de Estagio I, iniciado na MJV Solucoes e Tecnologia, teve

inicio em 2016, porem, o vınculo empregatıcio dava-se desde 2015. O vınculo teve como principal

objetivo, desde o princıpio, o suporte e a construcao do Laboratorio Digital, ou Laboratorio de Inter-

net das Coisas. O Laboratorio foi composto por dois funcionarios (Programadores Jr II), alunos da

Universidade Federal do ABC. Uma sala com componentes basicos para eletronica e uma impressora

3D foram as primeiras ferramentas disponıveis, crescendo de acordo com a necessidade. O Relatorio

Parcial de Estagio II, teve inıcio em Setembro de 2016, quando fui chamado para ser membro do

programa de estagio da Codus. O conteudo principal do relatorio foi o Treinamento dado a todos os

estagiarios que entram na Empresa. Ao total, o Treinamento durou cerca de 45 dias. Finalmente,o

Relatorio Final de Estagio III, teve inicio apos a efetivacao como Trainee em Desenvolvimento de

Software em Fevereiro de 2017. A efetivacao deu-se apos 5 meses como estagiario na Empresa, e

alocado em projeto.

1.1 Instituicao concedente: MJV Solucoes e Tecnologia

Endereco: Rua Helena 280, 3o Andar - Vila Olımpia.

CEP: 04552-050

Cidade: Sao Paulo

Estado: SP

CNPJ: 06.944.264/0001-80

Representado por: Rafael Lopes Ribeiro Cargo: Head de Inovacao Estrategica

Supervisor de Estagio: Rafael Lopes Ribeiro

Horario do Estagio: 09h as 16h

Total semanal: 30 horas.

Atividades:

• Participacao na construcao do Laboratorio Digital

• Responsavel pela manutencao dos equipamentos do Laboratorio

• Desenvolvimento agil de prototipos para solucoes de problemas apresentados

1.1.1 Objetivos a serem alcancados

Durante o perıodo de estagio, o colaborador devera desenvolver e possivelmente implementar

conceitos e prototipos desenvolvidos no Laboratorio de Inovacao Digital, alem de, ocasionalmente,

interagir com as equipes de Designers de Servico envolvidas nos projetos para atualizacao de in-

formacoes. Alem disso, o colaborador, devera mostrar flexibilidade a mudancas de rumos e de

projetos.

1.1.2 Caracterizacao e analise da MJV

A MJV Tecnologia e Inovacao e uma empresa fundada ha 18 anos. Tem o escritorio principal,

localizado no Rio de Janeiro, e suas filias, em Sao Paulo, Londres e, a mais recente, em Atlanta.

8

Page 11: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Conhecida e premiada por desenvolvimento com Design Thinking, a MJV e uma empresa inovadora

que aposta em novos talentos e mentes jovens. Com clima descontraıdo a disposicao dos escritorios

permite que todos os colaboradores tenham acesso as mais diversas areas da empresa. Assim, um

programador tem acesso aos projetos de design e vice-versa. Por isso, a Empresa conta com uma

equipe multidisciplinar e mais de 300 funcionarios. Na Figura 1, apresenta-se o logo da MJV.

As principais areas de destaques sao:

• Design Thinking

• Gameficacao

• Bigdata

• Metodologia Lean

• Estrategia Digital

• Internet of Things

Alguns clientes que a MJV atende:

• Bradesco

• Coca-Cola

• Claro

• Schneider

• Ipiranga

Figura 1: Logo da MJV.

1.1.3 Caracterısticas da area onde o estagio foi realizado

Os trabalhos foram realizados no Laboratorio Digital (Lab) da MJV, em Sao Paulo, como Pro-

gramador Jr II. O Lab e o setor da empresa que mais integra todas as demais areas, sendo assim,

nao ha um responsavel unico. Cada projeto e demandado por um Diretor responsavel, que classifica

as necessidades e qualidades do Lab.

9

Page 12: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

O Lab fica na sala 301 do escritorio da Mjv, Vila Olımpia. Ha outro Lab, maior, no Rio de

Janeiro. O Lab do Rio, conta com 5 colaboradores. Em Sao Paulo, o Lab conta, apenas com dois

Programadores Jr II e mais 2 pessoas de apoio. Um colaborador e desenvolvedor back e front e outro

cuida da parte de Infraestrutura da Mjv. Portanto, ambos somam ao trabalho do Lab.

O proposito, primordial, do Lab e fornecer prototipos e solucoes rapidas com o princıpio de uma

’Garagem Maker’ ou um Maker Space. Sendo assim, a empresa realiza constantemente Hackathons.

Ambiente descontraıdo e, um tanto quanto, informal, todos os colaboradores da Empresa tem acesso

e conhecem o Lab. Por vezes algumas ideias sao levantadas e verifica-se a viabilidade pelos membros

do Laboratorio.

10

Page 13: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

1.2 Instituicao concedente: Codus Desenvolvimento de Sistemas Computacionais

Ltda.

Endereco: Avenida Paulista 575, conjunto 1211 - Bela Vista.

CEP: 01311-911

Cidade: Sao Paulo

Estado: SP

CNPJ: 15.440.554/0001-87

Representado por: Bruno Pereira Bueno Cargo: Socio Administrativo

Supervisor de Estagio: Bruno Pereira Bueno

Horario do Estagio: 09h as 16h

Total semanal: 30 horas.

Horario do Trainee: 08h as 17h

Total semanal: 40 horas.

Atividades:

• Estudo e participacao em treinamento de tecnologias de desenvolvimento Web

• Modelagem e implementacao de Banco de Dados

• Desenvolvimento de sistema web utilizando Framework Rails (Ruby)

• Analise de Sistemas

• Planejamento de Interfaces

1.2.1 Objetivos a serem alcancados

Desenvolvimento e crescimento do estagiario, envolvendo o desenvolvimento de sistemas, a capa-

cidade de gerar codigos utilizando boas praticas de programacao e profundo conhecimento em Ruby

e no Framework Rails. Capacidade em auxiliar o crescimento da equipe.

1.2.2 Caracterizacao e analise da Codus Tecnologia

A Codus Tecnologia foi fundada no final de 2011 pelos engenheiros de computacao Bruno Pe-

reira Bueno e Vinicius Alves Oyama, ambos formados na Escola Politecnica da USP apos anos de

experiencia em empresas como IBM, Taqtile, Software Express e Infosimples.

A Codus ja executou com sucesso diversos projetos envolvendo Startups, aplicativos mobile e

sistema de controle interno para grandes empresas, sempre com a visao de integrar cada vez mais

a tecnologia com conhecimento em negocios continua provando ser muito bem sucedida, recebendo

sempre bons feedbacks de clientes e parceiros.

Hoje a equipe conta com dezoito pessoas (entre efetivos e estagiarios), formadas nas melhores

Universidades do paıs e que sao excelentes no que fazem.

A Codus e responsavel pelo desenvolvimento dos sistemas de empresas como:

• Sistema Naja

• Galeria Espaco Arte

11

Page 14: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Econovia

• Meta Aulas

• aLavadeira

Nesses projetos, a Codus contou com sua equipe de engenheiros de computacao e desenvol-

vedores especialistas no desenvolvimento agil de sistemas web e mobile. Durante o estagio, ficou

claro que alem de produtos de excelente qualidade, a Codus, tambem, tem preocupacao com seus

colaboradores. Eventos mensais sao realizados com o intuito de unir os funcionarios, bem como ha

uma visıvel humanizacao do relacionamento de todos na empresa, independentemente do cargo. Tal

processo, propicia um ambiente de desenvolvimento agradavel e, o mais importante, oportunidade

de crescimento pessoal e profissional.

Outro detalhe, nıtido durante o estagio, e que os compromissos estudantis tem prioridade na

formacao do colaborador. Caso haja necessidade de aulas durante a tarde ou qualquer outro detalhe

que remeta aos estudos do colaborador, a Codus sempre esta disposta encontrar a melhor opcao para

ambos os lados. Na Figura 2, encontra-se o logo da Codus.

Figura 2: Logo da Codus.

1.2.3 Caracterısticas da area onde o estagio foi realizado

O estagio foi realizado no escritorio da Codus, na Avenida Paulista. O estagiario teve contato

direto, frequente e ilimitado a todos os membros da equipe, seja ele Diretor, Designer, Programador

ou estagiario. O ambiente da Codus e descontraıdo e com possibilidade de trabalho em diversos

ambientes. A Figura 3, mostra o mapa do escritorio.

12

Page 15: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Figura 3: Mapa do escritorio.

A Sala de ADM e a sala onde trabalham o RH e os Diretores da Codus.

A Sala de Dev e a sala de desenvolvimento. A sala mais silenciosa do escritorio.

A copa e livre a todos os membros.

Na sala Precisa acontecem algumas reunioes rapidas e descontraıdas bem como ha espaco para

trabalhos que exigem menos concentracao.

A Sala de Reuniao e utilizada com agendamento, e e onde a maioria dos encontros para o

treinamento ocorrem.

A Taverna dos Codinhos e o ambiente mais descontraıdo da Empresa. Nela ha puffs, mesa para

refeicoes, televisao entre outros detalhes. Quando a sala de reuniao esta ocupada, a Taverna e a

escolha para encontros e discussoes.

13

Page 16: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

2 Atividades na MJV

2.1 Atividades Desenvolvidas

Durante o trabalho dentro do Lab, dois projetos foram desenvolvidos. Alguns sao projeto realiza-

dos anteriormente e que foram retirados da gaveta, por motivos financeiros ou interesses de clientes

pelo projeto.

2.2 Buddies

O projeto denominado “Buddies”, surgiu a partir de uma Hackathon interna, entre os colabora-

dores (Designers, Arquitetos, Programadores, etc) cujo o objeto era captar novas ideias, filtra-las e

repassa-las ao Lab para que tomassem vida.

O nome Buddies vem do ingles, “Amigao”. Um dos grupos percebeu o setor em potencial dos

andadores e donos de cachorros na cidade de Sao Paulo. A ideia, simplificada, era realizar um “Uber”

para cachorros.

Primeiramente, entao, pensou-se nas regras de negocio:

• Quais sao os tipos de usuarios? (Andadores, Donos, Administrador)

• Qual funcao cada usuario tem acesso?

• Qual a responsabilidade de cada usuario?

• Como sera o Aplicativo? (WebApp, Nativo, Mobile, Desktop)

• Como precificar?

Em reuniao com o Diretor do Projeto (Rafael Ribeiro) os Programadores membros do Lab e um

desenvolvedor de apoio, ficou decidido que por ser uma prova de conceito e, portanto, os resultados

iniciais deveriam ser visualizados de forma rapida, que a ferramenta de desenvolvimento utilizada

sera o Cake PHP. Nele, de forma rapida, somos capazes de criar e gerenciar as relacoes de banco,

sem maiores problemas.

No Cake dois tipos de arquivos sao os mais usados. Sao eles: Arquivos .ctp e os Controllers.

Nos .ctp, a principal funcao e o front-end. E no Controller, e o back-end. O Lab, portanto, foca

mais na parte de back. E a parte de front e adicionada, tambem, pelo Lab, porem apos passar pelas

mao de um Designer.

As relacoes e funcoes foram criadas de acordo com as regras de negocio, anteriormente estabe-

lecidas, e conforme o aplicativo foi tomando forma, tais regras de negocio, tambem, foram sofrendo

mutacoes. O aplicativo, basicamente, acontece em volta da API V3 do Google Maps. E pelo Maps

que o usuario localiza uma matilha, localiza sua posicao global, interage com outros usuarios etc.

Todo o codigo escrito para o Maps, foi escrita em JavaScript dentro do CakePhp. Sendo assim, existe

uma camada que recebe dados dos Controllers e executa variaveis de acordo com suas resposta.

A versao beta do prototipo foi realizada exclusivamente pelo Lab em tres semanas. Apos a

conclusao, testes internos foram realizados com colabores da Mjv SP, detectaram um problema

quando o sistema era aberto em Iphones. Tal erro, forcou o Lab recorrer a programadores mais

experientes da Empresa para sanar o problema.

14

Page 17: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Por fim, a versao, hoje, em teste interno e exibida (nao totalmente), mostrada na Figura 4.

Figura 4: Telas do Prototipo.

O Buddies ainda esta em fase de teste interna. Cada usuario tem um formulario para preencher,

que e conferido diariamente. Todas as sugestoes de mudancas, se simples e sensatas, sao realizadas

no mesmo dia pelo Lab. Caso contrario ou problema e levado ao Diretor do Projeto, ou armazenado

para discutir quando o aplicativo estiver mais maduro.

2.3 Ferramenta para Auxiliar Criacao de Personas

Em quase todos os projetos desenvolvidos na Mjv, ha uma camada importante de Design, mais

especificamente o Design Thinking. Com isso um problema foi levado ao Lab:

”Como reduzir o tempo gasto com leituras de entrevistas para caracterizacao de persona?”

Em um projeto que envolva personas, sao realizadas dezenas de entrevistas, com o maximo

de detalhamento possıvel sobre a pessoa entrevistada. Tal processo gera centenas de impressoes e

anotacoes bem como exige muito tempo dos designers avaliarem e separarem cada detalhe.

Pensando nesses fatos, basicamente, um sistema foi construıdo. Primeiramente, para efeito de

validacao de conceito, modelou-se um banco simples. Duas tabelas (nomes fictıcios, para efeito de

didatico):

• Texto Completo (id, Ctext, created)

• Texto Quebrado (id, Ptext, created)

A base em Cake Php foi levantada na plataforma em nuvem do Cloud9 e funciona em sincronia

com o Google Form. Com isso, a primeira etapa de coleta de dados estava quase completa.

15

Page 18: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

O Designer disponibilizara um formulario do Google para o cliente/usuario responder, e sua

resposta sera submetida como arquivo .txt na plataforma do Cloud9. O arquivo .txt fica, entao

disponıvel para analise em nuvem.

Criou-se um codigo, que acessa o arquivo .txt especıfico do usuario desejado e faz dois proces-

samentos. Primeiramente, replica-se o texto completo para a tabela ’Texto Completo’, quebra-se o

texto, palavra por palavra (separadas por espaco) e sobe cada palavra, com um ID diferente, para

a tabela Texto Quebrado. Porem, um detalhe importante deve ser ressaltado. Determinamos que

ha palavras muito desejadas para analise (peso forte) e palavras que nao geram valor algum para a

analise. Assim, criamos dois vetores de palavras:

proibidas = [’,’, ’da’, ’das’, ’de’, ’do’, ’dos’, ’na’, ’no’, ’nos’, ’nas’, ’em’, ’onde’, ’aonde’, ’a’, ’o’,

’aos’, ’os’, ’as’, ’ao’, ’a’, ’e’, ’ou’, ’e’, ’cada’, ’por’, ’pelo’, ’pela’, ’pelos’, ’pelas’, ’para’, ’deles’, ’dele’,

’dela’, ’delas’, ’entao’, ’minha’, ’me’, ’enfim’, ’tambem’, ’tb’, ’q’, ’vc’, ’pq’, ’c’, ’n’, ’s’, ’qd’, ’mt’,

’depois’, ’antes’, ’assim’, ’etc’, ’isso’, ’tem’, ’essa’, ’esse’, ’pro’, ’pra’, ’com’, ’mas’, ’um’, ’uma’, ’la’,

’que’, ’aqui’, ’mais’, ’mas’, ’se’, ’ha’, ’deixe’, ’ate’, ’ate’, ’houve’, ’so’, ’vai’, ’cair’, ’ja’, ’ja’, ’vem’,

’disso’, ’,’, ’.’, ’;’, ’:’, ’(’, ’)’, ’[’ ,’]’ ];

qualitativas = [’bom’, ’ruim’, ’sim’, ’nao’, ’muito’, ’pouco’, ’bastante’, ’sempre’, ’nunca’, ’tudo’,

’fundamental’, ’importante’, ’principalmente’, ’parece’, ’raramente’, ’necessario’, ’precisa’, ’deve’];

As palavras proibidas, sao aquelas que nao agregam valor ao sistema e podem ser excluıdas da

analise. As palavras qualitativas sao aquelas que sao consideradas de extrema importancia para a

analise e, portanto, queremos que ele tenha uma influencia maior sobre as suas conexoes.

Conforme o texto e quebrado, tais palavras sao verificadas. Caso a palavra seja do tipo proibida,

ela nao e adicionada a tabela do banco. Caso for qualitativa, ela e duplicada da seguinte forma:

Frase inicial: ”Nao gostei desta marca e nunca mais usarei roupas dela”

Frase tratada: ”Nao gostei nao desta marca nunca usarei nunca roupas”

Observe que, reforcamos as palavras que querıamos, nas palavras relevantes ao sistema. ”gos-

tei”ficou isolado com o nao, e ”usarei ficou isolado com o nunca. Este princıpio de analise ja consegue

mostrar algum direcionamento no processo de criacao de personas, mas ainda nao e o suficiente.

Apos essa analise, totalmente independente de qualquer usuario, cria-se dois links para que o

Designer receba dois arquivos distintos. Um chamado nodes.csv e outro chamado edges.csv.

Esses dois arquivos contem todas as informacoes para gerarmos um grafo ordenado do sistema de

palavras. Ao digitar a URL com o nome do entrevistado analisado, o sistema baixa, automaticamente,

para o computador do Designer os arquivos referentes aquele processo.

Com esses dois arquivos e o software Gephi, a analise dinamica do sistema completo pode ser

feita. Bem como analise de centralidade e grau do grafo. Exibidos nas Figuras 5 e 6, respectivamente.

16

Page 19: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Figura 5: Grafo Gerado.

Figura 6: Tabela Ordenada por Centralidade de Intermediacao.

Analisando, estaticamente, o grafo, e sabendo que quanto mais em destaque a palavra maior

a Centralidade de Intermediacao. A set of measures of centrality based upon betweenness). Cabe

ao Designer, verificar dinamicamente, utilizando o Gephi, as ligacoes ordenadas, para facilitar a

determinacao de personas.

A Centralidade de Intermediacao foi escolhida devido ao trabalho de Freeman [4] sobre a influencia

de usuarios em outros usuarios em uma rede social. Este processo assemelha-se muito a rede gerada,

ou seja, busca-se a influencia em que uma palavra tem sobre a outra em um discurso direcionado.

Concluindo, no projeto utilizado para uma marca de joias e com clientes da classe alta percebeu-

se um padrao tanto na centralidade quanto no grau das palavras: ”eu”e ”compro”. Demonstrando

um certo egocentrismo e consumismo dos usuarios avaliados.

O sistema esta em fase de testes e, por enquanto, nao e utilizado para determinacao exclusiva

de personas. Ha uma busca pelas personas da forma classica (utilizada pelos Designers) e ao mesmo

tempo a comparacao com os resultados obtidos utilizando esta ferramenta.

17

Page 20: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

3 Atividades na Codus

3.1 Estagio

3.1.1 Introducao as Atividades Propostas e Ferramenta de Controle das Atividades

A Codus fornece, para cada novo estagiario da equipe, um treinamento que dura em torno de

um mes e meio. Nesse treinamento, o novo membro fortalece e aprende alguns itens fundamentais

para o bom aproveitamento durante a realizacao dos futuros projetos dentro da Empresa.

Dentre eles:

• Nocoes avancadas em HTML, CSS, JavaScript e JQuery.

• Boas praticas de programacao e Clean Code.

• Linguagem Ruby.

O controle de todas as atividades realizadas no treinamento e nos projetos da Codus, e feito

por uma ferramenta desenvolvida pela propria empresa, denominada TimeSheet. Cada membro da

equipe controla e escreve seus horarios no sistema. Alem do fator para controle de horario o sistema,

tambem, capta o humor de cada membro diariamente e repassa os dados aos outros usuarios. Todos

da equipe tem total conhecimento de que o sistema nao foi feito para controle individual, mas sim

para repassar aos clientes detalhes do desenvolvimento do projeto.

O escopo do treinamento, tambem, inclui um momento denominado ”Hora da Duvida”. Duas

vezes por dia, a equipe se reune com os membros responsaveis pela tarefa (este membro, tambem,

passou pelo treinamento ao ingressar na Codus) e discutem duvidas pertinentes ao conteudo em

estudo.

3.1.2 Estudo HTML + CSS

Durante a primeira semana de treinamento, do dia 15/08 ao dia 19/08 o grupo estudou e

aprofundou os conhecimentos em HTML e CSS. Baseados no site W3, todo o conteudo foi revisado

e discutido. Como em todos os modulos, ha um desafio. Nesse modulo, o desafio foi montar em um

dia e meio um website para um suposto restaurante japones, denominado Sushi Ya!. Este WebSite

deveria ter quatro regioes obrigatorias: Home, Cardapio, Contato e Sobre Nos. O Sistema final e

exibido na Figura 7

Figura 7: Primeiro exercıcio feito na Codus.

18

Page 21: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

3.1.3 Estudo JavaScript +JQuery

Apos a conclusao dos Estudos, discussoes e aprofundamentos em HTML e CSS o treinamento

abordou as ferramentas de JavaScript e JQuery. Apos a leitura teorica o desafio era construir uma

calculadora. Inicialmente programada sem o JQuery, a calculadora deveria ter algumas funcionali-

dades. Cada um era responsavel por toda a parte visual e inteligencia. Como sempre, a filosofia da

Codus era predominante: Deverıamos colocar Carinho no projeto. Mesmo que o codigo nao estivesse

perfeito ou com alguns bugs, a maxima de todos os projeto e Carinho. Abaixo a Figura 8 mostra a

calculadora desenvolvida.

Figura 8: Caludadora construıda com JavaScript, HTML e CSS.

Apos a implementacao com JavaScript, fomos desafiados a utilizar o maximo possıvel de JQuery

no sistema. Contudo, o design geral da calculadora se manteve. Apenas a logica de programacao

sofreu variacoes significativas.

3.1.4 Leitura do Livro: Clean Code[5]

Como futuro desenvolvedor de projetos em equipe, cada estagiario foi apresentado a um dos

livros bases da Codus. O Clean Code e um livro com regras basicas, porem nao universais de como

um codigo deve ser escrito para que a equipe siga um padrao e de forma que seu codigo fique legıvel

para a equipe.

Antes da leitura do livro, os codigos gerados anteriormente foram analisados e discutidos em

varias reunioes. Nesses encontros os codigos foram severamente criticados e a importancia do livro

tornou-se clara. Alguns vıcios, como declarar variaveis como x, y, z ou a, b, c, foram explicados e

desencorajados. Os capıtulos lidos foram: 1 ao 5, 7 e 10.

3.1.5 Implementacao de um jogo

Apos a leitura do Clean Code, a equipe determinou a criacao de um jogo com a implementacao

de tudo visto ate aquele momento. O jogo escolhido foi o classico Snake e deveria obedecer as

seguintes regras:

1. Igual ao Snake game classico.

2. Sistema de pontos para o jogador conforme come a comida.

3. Cada vez que come a cobra cresce.

4. Deve colidir com o proprio corpo (game over).

19

Page 22: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

5. Ao bater na borda pode dar game over ou aparecer do outro lado.

6. Cada vez que come a cobra fica mais rapida.

Primeiramente foi proposto que uma solucao fosse pensada e transcrita. Apos a criacao da

estrategia de desenvolvimento, reunioes foram realizadas com os gestores para determinar os possıveis

problemas e os pontos fortes da solucao. Apos discutidos, o grupo teve a autorizacao para iniciar a

programacao, individualmente. A Figura 9, exibe como o jogo ficou, finalizado, em tres diferentes

telas.

Figura 9: Telas do jogo desenvolvido.

Durante o desenvolvimento reunioes e revisoes foram discutidas. A ultima reuniao direcionada a

este projeto, todos os participantes apresentaram e explicaram seu codigo. Alguns aspectos foram

fundamentais, na avaliacao, como: Carinho, Clean Code, e direcionamento do sistema para um

futuro suporte multi jogadores.

3.1.6 Leitura do Livro: Programming Ruby 1.9 and 2.0 [9]

A linguagem predominante nos sistemas desenvolvidos pela Codus e o Ruby e sua versao The

Rails. Portanto, nada mais coerente que seu estudo fosse parte do treinamento. O livro indicado

para leitura foi o Programming Ruby capıtulos 1 ao 11 e o capıtulo 16. Apos a leitura dos capitulos,

alguns exercıcios foram propostos e atualizados no repositorio (commit) no git lab da Codus. Sao

eles:

1. Um algoritmo que identifique que uma frase ou palavra e um palındromo.

2. Um algoritmo que identifique e retorne quantas vezes uma mesma palavra aparece em uma

frase.

3. Um algoritmo que simule o jogo Pedra, Papel ou Tesoura em duas etapas. Disputas em pares,

com o retorno do vencedor, e disputas em torneio, com o retorno do vencedor, apenas.

4. Um algoritmo que identifique os anagramas dentro de um array na entrada.

5. Um algoritmo que gere os anagramas das palavras de entrada, de acordo com um dicionario

pre-estabelecido pelo Ruby.

6. Um algoritmo com utilizacao basica de Programacao Orientada a Objetos, com pequenas

manipulacoes e retornos.

20

Page 23: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

3.1.7 Leitura do Livro: The Rspec Book: Behaviour Driven Development with Rspec,

Cucumber, and Friends [2]

Rspec e uma ferramenta utilizada para teste. A importancia da leitura deste livro ficou bem clara

quando entende-se a filosofia por tras do livro. A conceito que envolve o Test Driven Development

(TDD) trouxe a todos os membros da equipe uma nova forma de pensar e desenvolver codigo.

Em poucas linhas, o TDD faz com o desenvolvedor em conjunto com outros desenvolvedores,

criem antes do codigo principal, um codigo de teste. Ou seja, e escrito um codigo que contera as

regras de negocio do sistema. E conforme o codigo do sistema e gerado, ele e testado, etapa por

etapa. O TDD sugere, tambem, que o desenvolvedor que fara os teste e escrevera os codigos de

testes nao seja o mesmo que desenvolvera o sistema.

O livro, tambem, aborda a utilizacao da ferramenta Cucumber, porem, ela nao foi abordada

durante o treinamento.

Para cada exercıcio realizado na etapa de aprendizado do Ruby, foi escrito um codigo para testa-lo

de acordo com a ferramenta Rspec. Neste caso a filosofia do TDD nao foi aplicada, afinal os codigos

ja estavam prontos e eram bem simples.

3.1.8 Leitura do Livro: Agile Web Development with Rails 4 [8]

A leitura deste livro, significa o iniciacao dos membros no desenvolvimento de projetos, efetiva-

mente. O Rails, e um framework de Ruby para desenvolvimento agil de sistemas para web. Como o

CakePhp era um conhecimento previamente adquirido, nao foi uma tarefa difıcil entender e programar

com o Rails.

A principal vantagem, sobre outros frameworks ja trabalhados, e que o banco de dados e sua

modelagem sao pertencentes ao aplicativo gerado. No CakePhp, por exemplo, todos os dados

contidos em banco sao armazenados de forma apartada do sistema. Ou seja em caso de migracao

do sistema para servidores diferentes, o banco deveria ser migrado junto ao sistema desenvolvido,

gerando dois trabalhos. Com o Rails, todo o conteudo do sistema, engloba o banco e seus dados.

Alem disso a estrutura em Model, View, Controller (MVC) torna todo desenvolvimento facil e

dinamico.

3.1.9 Diario de Atividades

Nessa secao, define-se as diferentes atividades realizadas em cada um dos dias de estagio.

Dia 15/08

• Apresentacao formal a equipe

• Leitura inicial sobre HTML e CSS

• Duracao: 7:08 horas

Dia 16/08

• Exercıcios em HTML e CSS

21

Page 24: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Duracao: 2:00 horas

Dia 17/08

• Inıcio do da criacao do site do Sushi Ya! (Restaurante Real) em 3 versoes

• Duracao: 7:52 horas

Dia 18/08

• Inıcio dos estudos sobre JavaScript

• Workshop sobre HTMl e CSS. Exemplos revisados e exemplos mostrados com base nas duvidas

levadas durante a criacao do Sushi Ya!

• Duracao 6:32 horas

Dia 19/08

• Continuacao dos estudos teoricos e testes rapidos com variacoes pontuais

• Hora da Duvida: Discussao de duvidas

• Duracao 5:38 horas

Dia 22/08

• Continuacao do estudo sobre JavaScript

• Implementacao da calculadora, apos leitura do conteudo teorico

• Dois momentos para Hora da Duvida.

• Duracao: 6:26 horas

Dia 23/08

• Finalizando a Calculadora e ajustando pequenos detalhes

• Estudo de JQuery

• Dois momentos para Hora da Duvida: Revisao da Calculadora. Reuniao muito produtiva,

discussao dos codigos, bem como, dicas, fundamentais, para melhorar o codigo

• Duracao: 6:14 horas

Dia 24/08

• Continuacao dos estudos sobre JQuery

• Reimplementacao da calculadora utilizando JQuery

• Hora da Duvida

• Duracao: 5:51 horas

22

Page 25: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Dia 25/08

• Reimplementacao da calculadora utilizando JQuery

• Hora da Duvida: Direcionamento para novas tarefas

• Duracao: 5:50 horas

Dia 26/08

• Termino da reimplementacao da calculadora com JQuery e ultimos itens do estudo de JQuery

• Introducao ao Clean Code

• Hora da Duvida

• Duracao: 6:20 horas

Dia 29/08

• Leitura do livro Clean Code

• Hora da Duvida

• Duracao: 6:01 horas

Dia 30/08

• Continuacao da leitura sobre Clean Code

• Introducao Ruby

• Hora da Duvida

• Workshop sobre Orientacao ao Objeto

• Duracao: 5:29 horas

Dia 31/08

• Estudo de Ruby

• Hora da Duvida

• Duracao: 6:32 horas

Dia 01/09

• Estudo de Ruby

• Direcionamento para a implementacao do jogo Snake

• Duracao: 7:00 horas

Dia 02/09

23

Page 26: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Implementacao do jogo Snake

• Hora da Duvida

• Duracao: 6:31 horas

Dia 05/09

• Finalizacao e ajustes do jogo Snake

• Hora da Duvida

• Worshop sobre Git e GitLab

• Duracao: 3:21 horas

Dia 06/09

• Finalizacao e entrega final do jogo Snake

• Estudo de Ruby

• Workshop sobre Git e GitLab (ultimos detalhes)

• Hora da Duvida

• Duracao: 5:46 horas

Dia 07/09

• Feriado. Nao houve expediente.

Dia 08/09

• Estudo teorico de Ruby

• Hora da Duvida

• Duracao: 6:15 horas

Dia 09/09

• Estudo teorico de Ruby

• Hora da Duvida

• Duracao: 6:21 horas

Dia 12/09

• Finalizando os estudos teoricos de Ruby

• Leitura do ”Ruby Style Guide”

• Duracao: 5:58 horas

24

Page 27: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Dia 13/09

• Finalizando os estudos teoricos de Ruby

• Hora da Duvida

• Praticando em Ruby: uma nova linguagem, um novo conceito

• Reuniao Geral na Sala de Dev

• Duracao: 6:20 horas

Dia 14/09

• Praticando em Ruby: uma nova linguagem, um novo conceito. Finalizando os exercıcios

propostos

• Estudo teorico sobre Banco de Dados

• Workshop de JavaScript Parte I

• Duracao: 6:34 horas

Dia 15/09

• Continuacao dos estudos teoricos sobre Banco de Dados

• Hora da Duvida

• Iniciando os estudos teoricos sobre RSpec

• Workshop de JavaScript Parte II

• Workshop de Ruby Parte I

• Duracao: 6:01 horas

Dia 16/09

• Continuacao dos estudos teoricos sobre Rspec

• Duracao: 5:43 horas

Dia 19/09

• Continuacao dos estudos teoricos sobre Rspec

• Workshop de Ruby Parte II

• Duracao: 5:21 horas

Dia 20/09

• Implementacao do Rspec nos algortimos desenvolvidos em Ruby

• Estudo teorico em Rails

25

Page 28: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Hora da Duvida

• Duracao: 5:55 horas

Dia 21/09

• Estudo teorico em Rails

• Reuniao de FeedBack com o Vinicius. Apontamento e discussao de qualidades e futuras

melhoras para o estagio. Reuniao individual.

• Duracao: 6:20 horas

Dia 22/09

• Continuacao dos estudos em Rails

• Duracao: 5:47 horas

Dia 23/09

• Continuacao dos estudos em Rails

• Duracao: 6:37 horas

Dia 26/09

• Continuacao dos estudos em Rails

• WorkShop ministrado pelo Vinicius sobre Cliente-Servidor

• Duracao: 6:27 horas

Dia 27/09

• Continuacao dos estudos em Rails

• Hora da duvida

• Duracao: 5:59 horas

Dia 28/09

• Continuacao dos estudos em Rails

• Hora da duvida

• Duracao: 5:54 horas

Dia 29/09

• Inıcio da construcao do sistema em Rails. Passo 1: Desenvolvimento de mesa. Levantamento

de requisitos

• Reuniao com o Vinicius, individual, para alinhamento e definicoes basicas da Loja em Rails

26

Page 29: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Duracao: 6:04 horas

Dia 30/09

• Continuacao da construcao do sistema em Rails

• Duracao: 6:45 horas

Dia 03/10

• Continuacao da construcao do sistema em Rails

• Ultima parte do Workshop de Cliente-Servidor

• Duracao: 6:15 horas

Dia 04/10

• Continuacao da construcao do sistema em Rails

• Workshop sobre Grid com Bootstrap

• Duracao: 6:58 horas

Dia 05/10

• Continuacao da construcao do sistema em Rails

• Duracao: 5:58 horas

Dia 06/10

• Finalizacao do sistema em Rails

• Estudando o Slim

• Duracao: 5:28 horas

Dia 07/10

• Revisando o codigo do sistema em Rails

• Estudo de Bootstrap, Slim, Sass

• Estudo orientado com o Henrique para aLavadeira

• Duracao: 5:54 horas

Dia 10/10

• Estudo de Bootstrap, Slim, Sass

• Estudo orientado com o Henrique para aLavadeira

• Duracao: 5:58 horas

Dia 11/10

• Explorando o Material Design

• Estudo orientado com o Henrique para aLavadeira

• Duracao: 6:04 horas

27

Page 30: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

3.2 Trainee

3.2.1 Primeiro Grande Projeto

A fase Trainee deste relatorio, tem inıcio dia 01 de Fevereiro de 2017. Durante o perıodo entre o

termino do treinamento e a efetivacao como Trainee em Desenvolvimento de Software, um projeto

teve inıcio e a oportunidade programa-lo do inıcio foi dada. A Equipe era composta, inicialmente,

por dois Desenvolvedores, um Team Leader e duas Analistas de Sistemas. Durante o projeto, o Team

Leader foi substituıdo por demandas em outras atividades na Codus, uma Analista migrou para outro

projeto de forma amortizada e um dos desenvolvedores foi alocado em outro projeto.

3.2.2 O projeto

O cliente era a W1 - Finance. Uma empresa Europeia que auxilia tomadas de decisao financeira

por meio de entrevistas e analises pontuais para cada cliente.

A proposta interna da W1 e uma equipe em formato de piramide. Nessa piramide esta a regra

de distribuicao de comissoes e pontos de producao interno. O desejo da W1 e automatizar e desbu-

rocratizar, ate certo ponto, esses processos internos. Antes do inıcio do projeto, a W1 sofria perdas

com erros em calculos e processos. Portanto, um dos principais objetivos do projeto e eliminar falhas

humanas atraves de processos automatizados e, ainda assim, dinamicos.

Alguns pontos sao de extrema importancia para o projeto:

• Sistema de login com restricoes de usuarios

• Sistema individual para Administradores e Consultores

• Sistema de pagamento online confiavel

• Conceitos de previsao de pagamentos e pontos de producao

• Sistema de hierarquia interna da W1

• Sistema de envio de emails

Todos os calculos automatizados pelo sistema deveria garantir integridade dos dados e garantir

que a ideia fundamental de hierarquia e a distribuicao das comissoes seriam realizadas da forma mais

correta possıvel.

Gemas como Devise (Gerenciamento de Credencial), Monetize (Calculos e conversoes monetarias)

e ASSM (Maquinas de Estado) foram utilizadas para garantir a maior integridade do projeto.

Hoje, todos os calculos internos da W1 sao feitos a mao, ou por um sistema precario, antigo

e bilıngue. Ou seja, nao houve um padrao no desenvolvimento de sistema atual, tao pouco o

desenvolvimento de ferramentas que possibilitem a usabilidade em todos os processos realizados na

empresa. A equipe formada pela Codus, teve como principal objetivo entregar um projeto pensado

em cada necessidade dos usuarios. Fundamentalmente, tambem, a equipe se preocupou com tres

pilares, basicos, de seguranca e de desenvolvimento:

• Integridade

28

Page 31: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Disponibilidade

• Sigilo

Um exemplo disto e o processo de previsao de comissoes. Cada Consultor gera Propostas de

Produtos a seus clientes. Tais Propostas tem um valor fixo, em reais, que varia de acordo com cada

servico contratado. Apos o cliente assinar a proposta, o Consultor deve enviar os documentos ao

Escritorio para o qual responde. O Escritorio, por sua vez, recebe, avalia e devolve ao Consultor

(contrato recusado), ou envia para a parceira (contrato aceito). Entenda-se por parceira a Porto

Seguro, por exemplo. Assim que enviado a parceira, a equipe criou um algoritmo que calcula

quanto o Consultor devera receber daquela Proposta, em quantas parcelas e em quais dias. Hoje,

para o Consultor, tal ferramenta e de extrema importancia, afinal, os Consultores nao tem vınculo

empregatıcio com a W1, e necessitam gerar um orcamento mensal.

Um detalhe importante desta ferramenta e que, com as comissoes previstas calculadas, pode-se

dizer se a parcela recebida no mes corrente e adiantada, atrasada ou em dia. Ou seja, novamente, o

Consultor podera verificar seu orcamento no final do mes, bem como prever quais comissoes e seus

valores ele pode esperar receber.

O quesito seguranca, e um dos maiores focos do projeto. A preocupacao envolve nao apenas

o sigilo dos dados, mas a integridade dos dados e das ferramentas. E de suma importancia que

Consultores possam editar, ver ou gerar processos, de clientes cadastrados em seu nome. Bem como

receber corretamente os Pontos de Producao, sem que possa de qualquer forma, manipular os dados.

3.2.3 Modularizacao

Um topico fundamental para a descricao do projeto e o objetivo de componentizar os elementos

durante o desenvolvimento. Por exemplo, o projeto deve ter caracterısticas unicas que formam sua

identidade visual. Sendo assim, um botao de ’salvar’, deve sempre ser igual, bem como ’voltar’, e

outras acoes.

No inıcio cada desenvolvedor realizada a tarefa conforme bem entendia, seguindo as normativas

e padroes do projeto. Porem, duas ou tres semanas de projeto, percebeu-se que valeria a pena gastar

um tempo modularizando os botoes em um componente denominado ui button. Tal componente

receberia o texto do botao, algum possıvel ıcone, a acao que ele devera realizar, seu tipo (positivo,

negativo, neutro positivo, neutro negativo). Caso necessario, outros parametros html poderiam ser

encapsulados em enviados ao botao.

A modularizacao e de extrema importancia neste projeto. Ela possibilita criarmos uma identidade

visual padronizada e de facil mudanca, caso necessario. Suponha que por algum motivo a W1 decide

que todos os botao que tomem acoes positivas, como ’salvar’, ’aceitar’, entre outros, deve ser azul e

nao mais verde. Com este processo de padronizacao, deve-se modificar apenas a classe invocada no

componente ’ui button’. Ou seja, alem de economizar tempo, o conceito de modularizacao durante

o desenvolvimento garante um baixo custo na manutencao futura. Um exemplo que teve grande

impacto no projeto e o exibido na Figura 10.

O codigo apresentado acima na Figura 10 permitiu que telas fossem geradas sem preocupacao

com estilo ou comportamentos dos botoes. Todos os desenvolvedores do projeto, gerarem um codigo

claro e padronizado.

29

Page 32: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Figura 10: Modularizacao de um botao utilizado inumeras vezes.

Figura 11: Tela com modularizacao aplicada.

3.2.4 Testes

Durante o projeto, os testes tiveram vital importancia para o sucesso dos entregaveis em cada

sprint. Ate o momento, o sistema conta com 298 arquivos de testes. Com o desenvolvimento, ficou

nıtido que os testes evitam, se feitos de forma correta, apontam alguns erros pontuais, conhecidos

pelos desenvolvedores. Porem, por mais que o desenvolvedor tente, nao e possıvel abordar todos

os possıveis pontos de falhas para todos os testes. Mesmo que testemos os servicos, workers,

telas, botoes entre outros, e apenas com o uso contınuo da ferramenta em que situacoes locais e

independentes vao refletir em algo especıfico do sistema.

30

Page 33: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

3.2.5 Diario de Atividades

Nessa secao, as diferentes atividades realizadas em cada um dos dias de estagio.

Dia 22/02

• Pensando no algoritmo de Comissoes

• Ajustes o Commission Preview

• Duracao: 7:37 horas

Dia 23/02

• Programando

• Reuniao Diaria

• Duracao: 7:28 horas

Dia 24/02

• Ajustes testes

• Ajustes ProductProposals

• #3147 Testes de Product Proposal. Programando.

• Duracao 6:53 horas

Dia 02/03

• Ajustes card #3146

• Programando

• Ajustes Prev and Next metodos

• Card: Como BP quero acessar a secao ABC da Analise

• Duracao: 7:32 horas

Dia 03/03

• Card: Como BP quero acessar a secao Trabalho da Analise

• Testes

• Customer - Improvements. Programando

• Duracao: 8:57 horas

Dia 06/03

31

Page 34: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Ajustes codigo

• Reuniao

• Juntando os processos

• Programando

• Duracao: 6:41 horas

Dia 07/03

• Programando

• Duracao: 7:50 horas

Dia 08/03

• Programando

• Duracao: 7:29 horas

Dia 09/03

• Ultimos ajustes

• Programando

• Ajustes Offices, programando.

• Ajustes Clients

• Testes

• Duracao: 8:40 horas

Dia 10/03

• Programando

• Programando o novo fluxo de Analise

• Duracao: 7:11 horas

Dia 13/03

• Ajustes

• Duracao: 5:13 horas

Dia 14/03

• Adicionando dados ao Health

• Ajustes em Comisoes

32

Page 35: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Criando Metas

• Duracao: 6:46 horas

Dia 15/03

• Assitindo a apresentacao do Celso sobre Solid

• Criando Metas

• Duracao: 5:27 horas

Dia 16/03

• Programando

• Duracao: 6:41 horas

Dia 17/03

• Programando

• Duracao: 7:25 horas

Dia 20/03

• Programando

• Duracao: 7:09 horas

Dia 21/03

• Programando Testes do Economy Center

• Duracao: 7:44 horas

Dia 22/03

• Programando

• Workshop com o Celso

• Duracao: 8:18 horas

Dia 23/03

• Testes

• Programando

• Ajustes em Analysis

• Ajustes Invoice

• Duracao: 7:54 horas

33

Page 36: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Dia 24/03

• Ajustes Canvas

• Ajustes Invoice

• Ajustes Analysis

• Duracao: 6:19 horas

Dia 27/03

• Ajustes analysis. Programando Leads

• Reuniao Geral

• Ligando Client ao Parceiro

• Ajustes Client Profile

• Duracao: 6:47 horas

Dia 28/03

• Adicionando Calendar Event Address

• Programando

• Feedback com o Vinicius

• Duracao: 6:56 horas

Dia 29/03

• Teste

• Workshop Solid

• Duracao: 7:13 horas

Dia 30/03

• Ajustes notifications

• Ajustes

• Programando

• Duracao: 8:16 horas

Dia 31/03

• Reuniao

• Programando

34

Page 37: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Duracao: 7:00 horas

Dia 03/04

• Programando

• Codus Show

• Ajustes

• Duracao: 7:02 horas

Dia 04/04

• Ajustando Tests

• Programando

• Duracao: 7:28 horas

Dia 05/04

• Programando e Ajustes

• Duracao: 8:01 horas

Dia 06/04

• Programando e Ajustes

• Reuniao

• Duracao: 6:58 horas

Dia 07/04

• Programando

• Reuniao

• Duracao: 6:47 horas

Dia 10/04

• Programando

• Reuniao Semanal

• Reuniao

• Estudo

• Duracao: 6:13 horas

Dia 11/04

35

Page 38: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Programando e Ajustes

• Programando

• Duracao: 6:24 horas

Dia 12/04

• Programando e Ajustes

• Duracao: 6:40 horas

Dia 13/04

• Programando e Ajustes

• Duracao: 7:48 horas

Dia 17/04

• Programando e Ajustes

• Planejamento de Sprint

• Reuniao Semanal

• Duracao: 6:02 horas

Dia 18/04

• Programando e Ajustes

• Duracao: 7:05 horas

Dia 19/04

• Programando e Ajustes

• Workshop de SOLID

• Duracao: 7:07 horas

Dia 20/04

• Programando e Ajustes

• Duracao: 6:50 horas

Dia 24/04

• Programando e Ajustes

• Reuniao

• Reuniao Semanal

36

Page 39: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

• Duracao: 6:53 horas

Dia 25/04

• Programando e Ajustes

• Duracao: 7:41 horas

Dia 26/04

• Programando e Ajustes

• Worksho Extensoes do Chrome

• Duracao: 8:22 horas

Dia 27/04

• Programando e Ajustes

• Duracao: 8:57 horas

Dia 28/04

• Programando e Ajustes

• Reuniao

• Duracao: 8:23 horas

Dia 02/05

• Programando e Ajustes

• Migracao para novo Projeto

• Duracao: 4:23 horas

37

Page 40: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

4 Apresentacao aos Alunos

Em Novembro de 2016, o Professor Doutor Jesus P. Mena-Chalco, convidou-me para conversar,

com seus alunos, sobre dicas e o mercado de trabalho, tendo base as duas empresas citadas neste

relatorio.

Por motivos maiores, a aula foi ministrada em doze de Abril de 2017. O Professor Doutor, dispo-

nibilizou uma grande parte de sua aula de Algoritmo e Estrutura de Dados I, para a apresentacao e

discussao com seus alunos. Este pode ser o impacto mais esperado dentro da comunidade academica,

afinal, pude compartilhar um pouco de minhas experiencias fora do mundo academico e alerta-los que

a Universidade e fundamental, sim, mas nao e o ponto final. Ha muito para aprender e desenvolver

no mercado de trabalho.

Alguns alunos me procuraram ao final da aula perguntando mais sobre a Codus, com duvidas sobre

qual caminho seguir em sua carreira. Alguns currıculos foram encaminhados ao Recurso Humano da

Codus, como indicacao. Outros alunos me pediram dicas sobre os Trabalhos de Conclusao de Curso,

ou disseram estar infelizes no respectivo estagio e queriam dicas sobre como procurar novas areas.

Portanto, a partir do momento que um evento externo, necessario para a formacao dentro da

Universidade, tras mudancas e discussoes de pensamentos dentro da propria Universidade, podemos

concluir que o estagio realizou seu papel.

Na Figura 12, tem-se tres dos vinte e quatro slides apresentados na aula

Figura 12: Slides da aula.

Em suma, a discussao teve muitos pontos positivos e pode encerrar esse ciclo de mais um estagio

em Ciencia da Computacao pela Universidade Federal do ABC acrescentando um pouco mais de valor

ao conhecimento desses alunos que estao no inıcio, ou que ainda nao comecaram a vida profissional.

5 Disciplinas necessarias para o estagio

Para a execucao de tarefas em ambas as equipes, foram tomadas como base de conhecimento,

principalmente, as materias contidas na Tabela 1

38

Page 41: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Processamento da Informacao • Desenvolvimento de algoritmos• Logica de programacao

Programacao Orientada ao Objeto • Ruby e uma linguagem orientada ao objeto. Tal materia foifundamental para o desenvolvimento do estagio

Computadores, Etica e Sociedade • Capacidade de tratar os problemas e direciona-los aos clientes

Algoritmos e Estrutura de Dados • Organizacao de dados para buscas e ordenacoes eficientes• Ter opiniao formada e criticidade ao escolher certos tipos

de algoritmos• Questionamento sobre as linguagens e quais algoritmos seusmetodos utilizam

Banco de Dados • Modelos de banco de dados• Linguagem SQL• Conhecimento MySql, PostgreSql, SQLite

Compiladores • Entendimento de como as gramaticas e os diversos sistemasde programacao funcionam

Linguagens Formais e Automato • Construcao e entendimento sobre maquinas de estados fa-cilita o desenvolvimento de sistemas• O Ruby utiliza os fundamentos de Expressoes Regulares

em sua logica. Tal conceito foi fundamental e diferencial noaprendizado a nova linguagem.

Tabela 1: Materias relacionadas ao estagio.

6 Consideracoes finais

Essa secao tem como objetivo mostrar as contribuicoes do estagio para a empresa, para o es-

tagiario e as maiores dificuldades encontradas durante o perıodo retratado.

6.1 Contribuicoes

As atividades realizadas durante o perıodo de trabalho em ambas as empresas, permitiu que uma

carreira e um foco profissional fosse tomado. Bem como auxiliou no acompanhamento das disciplinas

e no melhor entendimento do conteudo exposto pelos Professores.

Um ponto crucial destacavel neste perıodo foi o fato de nao apenas aprender, ou reforcar, algumas

linguagens e seu contexto, mas tambem e mais importante, como programar de forma limpa, coerente

e eficaz. Alem disso o aprendizado e a dinamica de um projeto [7] [1] [6] e do desenvolvimento de

um software sera de suma importancia, nao apenas para a carreira como Bacharel em Ciencia da

Computacao, mas como futuro Engenheiro de Automacao, Instrumentacao e Robotica. Ou seja,

esse perıodo, somou e gerou caracterısticas irreversıvel na forma de trabalho e relacoes pessoas no

mercado profissional.

6.2 Dificuldades

A maior dificuldade foi absorver todo o conceito novo sobre como programar. Durante o curso de

Ciencia da Computacao o foco nao e boas praticas em programacao e, sim, as logicas de programacao,

metodos e algoritmos. Portanto, ao trabalhar em equipe, deve-se programar com certos padroes bem

como visar sempre a qualidade do produto final.

39

Page 42: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

O aprendizado para superar e corresponder as pressoes e expectativas de terceiros, como clientes

e superiores, foi de suma importancia. Um carater maduro foi criado com decisoes e atitudes

necessarias no dia a dia. Tal situacao reflete no cotidiano academico, profissional e pessoal.

Referencias

[1] David Airey. Logo Design Love: A Guide to Creating Iconic Brand Identities. Peachpit Press,

2009.

[2] Dave Chelimsky. The Rspec Book:Behaviour Driven Development with Rspec, Cucumber, and

Friends. Pragmatic Bookshelf, 2010.

[3] Mark Dodgson and David Gann. Innovation. L&PM Pocket Encyclopaedia, 2010.

[4] Linton C. Freeman. A Set of Measures of Centrality Based on Betweenness. American Sociological

Association, 1977.

[5] Robert Cecil Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall,

2008.

[6] David A. Patterson and John LeRoy Hennessy. Computer organization and design - The hard-

ware/software interface. Morgan Kaufmann, 1994.

[7] Paolo Perrotta. Metaprogramming Ruby. Pragmatic Bookshelf, 2010.

[8] Sam Ruby, Dave Thomas, and David Hansson. Agile Web Development with Rails 4. Pragmatic

Bookshelf, 2013.

[9] Dave Thomas, Chad Fowler, and Andy Hunt. Programming Ruby 1.9 and 2.0. Pragmatic

Bookshelf, 2013.

40

Page 43: RAFAEL AUGUSTO PISSARDO Orientador: Prof. Dr. Jesus ...professor.ufabc.edu.br/~jesus.mena/misc/modelos... · This report has as main objective to describe as activities carried out

Bruno Pereira Bueno

Socio Administrativo

Jesus Pascual Mena-Chalco

Professor Doutor Orientador

19 de Marco de 2017

41