| Linha 6: | Linha 6: | ||
= Evolução na profissão = | = Evolução na profissão = | ||
* '''Como estudante:''' | |||
'''Estágio na empresa CTBC, projeto de reconhecimento de fala (entre 2001 e 2002):''' | '''Estágio na empresa CTBC, projeto de reconhecimento de fala (entre 2001 e 2002):''' | ||
Edição atual tal como às 17h58min de 21 de outubro de 2017
Dados do profissional
- Nome: Celso Borges de Souza Júnior
- E-mail: celsoborgessouza@gmail.com
- Telefone: (34) 99146-3392
Evolução na profissão
- Como estudante:
Estágio na empresa CTBC, projeto de reconhecimento de fala (entre 2001 e 2002):
Primeiro contato com o ambiente corporativo.
A tecnologia de reconhecimento de fala era muito nova e o projeto era inovador para a época.
Hoje consigo entender o importância de inovar, e que as tecnologias evoluem muito com o tempo, bem como o seu contexto de utilização.
Estágio no Núcleo Avançado de Computação Sônica e Multimídia UFU:
Foi uma oportunidade de trabalhar com Redes e Linux, dois assuntos que me interessavam muito na época que era estudante.
- Como profissional
Empresa sondaimarés (www.sonda.com) no período de Fevereiro de 2004 a Fevereiro de 2006:
Cargo: analista de produção.
A maior responsabilidade era desenvolver scripts de automação.
Importante para entender o funcionamento e criticidade de ambiente de produção.
Em termos de tecnologia percebi a importância de padronização de código.
Empresa SWB (www.swb.com.br) no período de Março de 2006 até Fevereiro de 2007 como Analista de Sistemas:
O cargo de analista/desenvolvedor Java.
Primeiros projetos profissionais da minha carreira utilizando tecnologias do universo Java.
Empresa TQI (www.tqi.com.br) no período de Fevereiro de 2007 até Outubro de 2009 como Analista de sistemas:
O cargo de analista/desenvolvedor.
Nessa época especializei na tecnologia Java, fazendo curso de especialização em desenvolvimento corporativo em Java - UNIFENAS/IGAP/FIEMG e me certificando: SCJA - Sun Certified Associate for Java Plataform e SCJP - Sun Certified Programmer for Java Plataform.
Além de participar de projetos para empresas de Uberlândia, tive a oportunidade de trabalhar em projetos de empresas de fora de Uberlândia como UOL, BUNGE, Vivo.
Os projetos eram de contextos de negócios diferentes e tecnologias diversas, porém o objetivo final sempre era produzir uma solução tecnológica aderente ao negócio do cliente. Dessa forma, além de codificar foi necessário entender e aprender sobre o processo de desenvolvimento de software e boas práticas de gestão de projeto.
Além de me envolver com tecnologias, tive que desenvolver habilidades de criar documentação de requisitos técnicos e funcionais (Diagramas UML, técnicas de elaboração de casos de uso), elaborar e executar plano de testes e trabalhar no contexto de metodologias (RUP, Scrum).
Empresa União Atacado e Distribuidor (www.uniaoatacado.com.br) de Outubro de 2009 até Julho de 2011 como Analista de Sistemas:
Cargo: Analista/desenvolvedor atuando como líder técnico.
Nessa época iniciei o MBA em Gerenciamento de Projetos - FGV, com o objetivo de entender sobre boas práticas de gerenciamento de projetos, tomar decisões e argumentar sobre o controle de escopo, tempo e custo.
Surgiu a oportunidade atuar no planejamento técnico de novos projetos e integração com sistemas legados.
O desafio foi propor, implementar e implantar a solução tecnológica aderente ao negócio. Dentre as dificuldades enfrentadas estavam o fato de contar com uma equipe reduzida e também de ainda não tinha sido realizado projeto nesse modelo com uma equipe interna.
Para atingir o resultado primeiro foi necessário entender o contexto de negócio da empresa, os recursos tecnológicos disponíveis e que seriam possíveis de adquirir, para então definir e implantar uma infraestrutura de desenvolvimento com controle de versão e automação de entregas, repositório de código e artefatos, padronização de arquitetura de desenvolvimento e integração com sistemas legados.
No segundo momento foi definida a forma de comunicação com as pessoas da empresa para entender os objetivos do projeto e escrever os requisitos.
Dessa forma, foi possível escrever os requisitos, codificar, implantar, controlar versões e rastrear novas implementações, manutenção e alterações.
Empresa TQI (www.tqi.com.br) de Julho de 2011 a Novembro de 2014 como Analista de Sistemas:
Cargo: Analista/desenvolvdedor.
Novas oportunidades em projetos de fora de Uberlândia: UOL, Buscapé, Iguatemi Empresas de Shopping Centers.
A realização de codificação e argumentação era feita com mais maturidade.
Empresa Callink (www.callink.com.br) desde Dezembro de 2014 como Arquiteto de Sistemas:
Cargo: Arquiteto de sistemas.
Participação na concepção, implementação, implantação de produtos externos e internos.
Apoio em projetos de operação.
Descrição da atividade atual
- A função do Arquiteto de Software é fazer toda a conexão entre as propriedades externas e internas, baseando-se em padrões, informações, premissas e restrições para montar a comunicação entre os elementos existentes
Requisitos mínimos para exercer a profissão
- Pelo menos ler e escrever em inglês.
- Ser curioso e gostar de entender as coisas.
- Certificações técnicas sempre são bem vindas.
- Conhecimento em ITIL (Information Technology Infrastructure Library) que é o framework para gerenciamento de serviços de TI mais adotado mundialmente.
- Conhecimento em Gestão de TI e Gestão de Projeto.
- Conhecimento em contabilidade (matemática financeira).
- Conhecimento em tecnologia cloud.
Ferramentas usadas no dia-a-dia
- JDK(Java Development Kit), Springframework (um framework não intrusivo, baseado nos padrões de projeto inversão de controle e injeção de dependência.
- Eclipse
- GIT e SVN (ferramentas de versionamento).
- Nexus (ramificação de projetos).
- Maven ( ferramenta de automação de compilação).
- AWS (uma plataforma de serviços de computação em nuvem, que formam uma plataforma de computação na nuvem oferecida pela Amazon.com).
- Crontab (programa do Unix que edita o arquivo onde são especificados os comandos a serem executados e a hora e dia de execução pelo cron, um serviço que executa comandos agendados nos sistemas operacionais do tipo Unix).
- Jira (ferramenta que permite o monitoramento de tarefas e acompanhamento de projetos garantindo o gerenciamento de todas as suas atividades em único lugar).
- SoapUI (ferramenta de testes).
- Postman (ajuda analisar APIs).
- Enterprise Architect (análise de design).
- VMWare, VirtualBox, Vagrant (softwares de máquinas virtuais).
Tecnologias envolvidas
- SQL Server e MySQL (banco de dados).
- SQL Management Studio (ambiente integrado para gerenciar qualquer infraestrutura de SQL).
- Elastic Search (Big Data)
- Shell script, bat (linguagens utilizadas em vários sistemas operacionais).
Ética profissional
- Situação Positiva:
- Liderança de equipe: Gerente blinda a equipe e sempre procurava uma solução para o problema, e não o culpado.
- A equipe era composta por profissionais em início de carreira. Quando ocorria algum problema as pessoas de outras áreas queriam falar direto com membros da equipe, nesses casos o gerente não permitia a cobrança direta, então ele procurava saber o que estava acontecendo com a pessoa que estava reclamando, e dependendo da situação, de forma separada. Era exposta a situação para a equipe, que escutava e propunha uma solução, e então a conversa só terminava depois que a equipe chegava a um consenso.
- Situação Negativa:
- Dar feedback de maneira incorreta: Criticar o trabalho de um companheiro de trabalho em público.
- Não é “saudável” expor um erro ou uma maneira de trabalhar de outra pessoa em público. Dessa forma, pode gerar um constrangimento desnecessário e contaminar o ambiente de trabalho negativamente.
- Os feedback negativos ou críticas devem ser feitos sim, mas pela pessoa certa (nível hierárquico) e em local e momento adequado.
Exemplo de resultado tangível
- Produto: Portal de Cobrança.
- Objetivo: Recuperação de crédito.
- Funcionamento: Sistema faz a seleção de usuários e negociações de dívidas. O usuário recebe uma proposta de negociação de dívidas via e-mail ou sms com as orientações de acesso no portal. O usuário acessa o portal de cobrança a qualquer momento e analisa a melhor opção de parcelamento e data de pagamento da dívida de maneira privada e sem a necessidade de interação com o ser humano.
- Portal de cobrança digital DigiCop: https://www.digicob.com/
- Mais sobre: https://pt.linkedin.com/pulse/digicob-cobrança-digital-dna-redação-digicob
Upload da apresentação
Arquivo:Profissão em Computação e Informática.pdf
Dúvidas
- 01. Qual a diferença entre um Arquiteto e um Engenheiro de Software ? (Explicar cada um)
- R: Depende, cada empresa divide as funções de acordo com a necessidade do projeto. No entanto, no geral o arquiteto de software define os componentes de um sistema, suas propriedades, como será sua comunicação com sistemas exteriores, além de criar a documentação sobre o software. Já o engenheiro de software está diretamente ligado a criação, desenvolvimento, manutenção e organização dos projetos.
- 02. O que é padronização?
- R: A padronização é um meio que as empresas tem de organizar suas atividades gerando como consequente uma otimização de seus processos. A padronização consiste em criar uma serie de procedimentos e normas (padrões) sobre como determinada atividade deve ser executada. Assim facilita o controle da operação e aumenta a qualidade do produto a ser entregue.
- 03. O que é RUP? Cite outra metodologia que compete com o RUP.
- R: RUP é uma metodologia de processos. São documentos que descrevem o software e os projetos a serem executados, anteriormente a seu desenvolvimento. É dividido em quatro fases:
- fase inicial: Quando o desenvolvedor e o cliente discutem como será o sistema ou software a ser desenvolvido;
- fase de elaboração: Fase voltada ao desenvolvimento da documentação, da arquitetura, levantamento de recursos e custos;
- fase de construção: é a fase de desenvolvimento do software em si;
- fase de transição: Ocorre a entrega do software, implementação e o controle de qualidade;
- uma outra metodologia que compete com o RUP é chamada SCRUM.
- 04. O que é SCRUM? Como são feitas as reuniões do Scrum e o que se discute nelas?
- R: Scrum é uma metodologia de processos para otimizar o desempenho de grandes equipes em projetos. No scrum o projeto é dividido em ciclos , os quais possuem seus objetivos chamados sprints. A equipe é dividida em sub equipes , as quais receberam uma certa atividade a ser executada e possuem um líder chamado de scrum master. No inicio de cada dia de trabalho serão realizadas reuniões sobre o que já foi feito, o que será feito, como será feito e a melhor forma de faze-lo.
- 05. Você já participou de um projeto de um sistema, no qual sabia que sua tecnologia estava ultrapassada?
- R: "Sim, é ruim pois tenho que garantir uma boa comunicação para informar que o sistema não se sustenta."
- 06. O que é Jira? Dê um exemplo de uma atividade ou de um print das telas.
- R: De forma simplificada, é uma software que auxilia na organização das atividades da equipe.
- 07. Você usa o Git e o SVN? Porque usá-los?
- R: "Sim uso , pois dependendo do projeto a situação me força a usar um ou outro. A utilização dessas ferramentas é importante, pois possibilita o versionamento do projeto, dessa forma impedindo erros incluídos no código sejam incorrigíveis e facilitando o trabalho em equipe."
- 08. O que é ITIL e porque se recomenda sua utilização?
- R: Information Technology Infrastructure Library ou ITIL é uma biblioteca de infraestrutura em TI que possui as melhores praticas em serviços de TI. Descreve praticas testadas por organizações do mundo todo. A utilização do ITIL é recomendada, pois reduz falhas operacionais, otimiza a correção de bugs, acelera a produção de diagnostico do sistema, etc.
- 09. Para que devemos usar o crontab? Dê um exemplo de atividade onde seu uso é importante.
- R: O crontab deve ser usado para efetuar atividades eventuais e repetitivas.Como exemplo, um backup periódico de algum servidor pode ser automaticamente iniciado com um agendamento no crontab.
- 10. O que é integração contínua? Porque as empresas estão adotando esse modelo de trabalho?
- R: Integração contínua consiste em uma pratica, na qual os desenvolvedores juntam suas alterações de códigos em um repositório central e testes serão efetuados com esses códigos. As empresas vem adotando esse modelo, pois facilita bastante a localização e correção de bugs e como isso acelera a produção de atualizações para os softwares.

