|
|
| (7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) |
| Linha 1: |
Linha 1: |
| = Evolução na profissão = | | = Evolução na profissão = |
| O desenvolvedor Back-end precisa estar atento e ser flexível às constantes mudanças vividas no cenário de desenvolvimento web, para que dessa forma possa atender as necessidades dos usuários, que variam de acordo com as novas tecnologias que surgem a todo momento.
| | <br> |
| | |
| O salário de um desenvolvedor Back-end vai depender do nível do profissional. Conforme os dados das oportunidades divulgadas no trampos.co, pode variar entre R$ 3.500 e R$ 6.500. Já a bolsa para estagiários normalmente é de R$ 1.500. Os salários para profissionais sênior podem chegar a R$ 12.000.<br>
| |
|
| |
|
| = Descrição da atividade atual = | | = Descrição da atividade atual = |
| O Desenvolvedor Back-end é o responsável por dinamizar os sites utilizando linguagens de programação, além de organizar todas as informações invisíveis aos olhos do usuário. Esses profissionais precisam estar aptos para escolher a melhor opção para o desenvolvimento de um projeto, visando bom desempenho e fluxo de dados com o navegador. Por isto, é de suma importância que o programador tenha domínio na linguagem aplicada. O desenvolvedor, entre outras atividades, se preocupa principalmente com segurança, banco de dados e integração de webservices. Em outras palavras, é responsável pelo programa em si, o código e os testes durante o desenvolvimento.
| | <br> |
|
| |
|
| = Requisitos mínimos para exercer a profissão = | | = Requisitos mínimos para exercer a profissão = |
| * Os requisitos mínimos para a prática da profissão procedem do conhecimento do programador em linguagens server-side. Exemplos: Java,Phyton, Ruby etc.
| | <br> |
| * É necessário domínio em pelo menos uma linguagem de programação.
| |
| * Capacidade de se ver como um usuário da aplicação podendo prever eventuais erros e consequentemente permitindo a sua prevenção.
| |
| * Trabalho em equipe, afinal, estará quase sempre acompanhado de outros profissionais das demais áreas do projeto e comunicar-se bem com os mesmos é fundamental.
| |
| * Possuir facilidade na escrita do código tendo como resultado algo simples e otimizado para o ganho de performance além de toda a documentação do mesmo, visando fácil entendimento e compatibilidade entre plataformas (Dispositivos móveis, sites…).
| |
|
| |
|
| = Ferramentas usadas no dia-a-dia = | | = Ferramentas usadas no dia-a-dia = |
| <br>O profissional precisa ter um certo domínio de inglês, afinal as | | <br> |
| linguagens são construídas em tal idioma e portanto, é necessário
| | |
| que o programador tenha boa base acerca do idioma. Deve também ter
| |
| boa lógica de programação e manter-se em constante estudo sobre
| |
| novas linguagens e métodos para suas aplicações, o que consequentemente afetará positivamente seu rendimento. Uma boa
| |
| característica do profissional é ser comunicativo e saber se
| |
| expressar no ambiente de trabalho, e se possível, sem muitos termos
| |
| técnicos facilitando o entendimento de um usuário comum (leigo).
| |
| = Tecnologias envolvidas = | | = Tecnologias envolvidas = |
| As principais ferramentas utilizadas são:
| | <br> |
| * Utilitários para sistemas de banco de dados, como MySQL, Oracle/PostgreSQL;
| |
| * Frameworks: Spring, Hibernate, Hazelcast, Guava;
| |
| * Linguagens de programação: Java, Shell, PL/SQL e JS. (Além das linguagens de marcação como HTML e CSS3.
| |
|
| |
|
| = Exemplo de resultado tangível = | | = Exemplo de resultado tangível = |
| * Reduzir esforço humano para determinado tipo de situação ou tarefa;
| | <br> |
| * Facilitar certos tipos de processos comuns no dia a dia;
| |
| * Inclusão digital (acessibilidade e responsividade);
| |
| * Controle e otimização de sistemas e dados.
| |
|
| |
|
| = Upload da apresentação = | | = Upload da apresentação = |
| http://slides.com/lucasaranha/deck#/9
| | <br> |
| | = Dúvidas = |
| <br> | | <br> |
|
| |
|
| = Dúvidas da apresentação =
| | * 01.O que é um ''framework''? Dê alguns exemplos e a utilização de cada um? |
| '''Freelancer: Que opções poderíamos ter para iniciar desenvolvimento freelancer?''' | | ** |
| | <br> |
|
| |
|
| As opções mais viáveis para o desenvolvimento freelance na área de back-end são as de estruturar banco de dados
| | * 02. O que faz o CheckStyle? Quer dizer que se eu escrever um código muito mal feito isto pode ser descoberto? |
| | ** |
| | <br> |
|
| |
|
| para empresas, restaurantes (com pedidos online) dentre outras alternativas do mercado e-commerce.
| | * 03. Qual linguagem com mais repositórios atualmente? |
| | ** |
|
| |
|
| Caso o desenvolvedor tenha conhecimentos na área de front-end seu leque de opções torna-se ainda maior. A demanda
| | * 04. Escalabilidade e Disaster Recovery: O que são estas grandes preocupações no mundo Dev Back-End?. Dar exemplos. |
| | ** |
| | <br> |
|
| |
|
| por armazenamento de dados, enquanto existir, necessitará de um profissional back end para prosperar o banco de
| | * 05. Qual a diferença entre Teste unitário e Teste da aplicação? |
| | ** |
| | <br> |
|
| |
|
| dados escalável.
| | * 06. Em que consiste o termo DevOps? |
| | ** |
| | <br> |
|
| |
|
| '''Protótipo Cidade Conectada: Explicar melhor o que é isso?'''
| | * 07. O que é Integração Contínua? |
| | ** |
| | <br> |
|
| |
|
| Protótipo Cidade Conectada é um projeto sediado na cidade de Uberlândia(MG), que busca melhorar a qualidade
| | * 08. Quantos ambientes em média temos para desenvolvimento? |
| | | ** |
| de vida nos centros urbanos por meio de inovações tecnológicas. Esse projeto é fruto da parceria entre a Algar
| | <br> |
| | |
| Telecom, PromonLogicallis, Nokia, UFU e Instituto César, que prevê soluções digitais para as áreas de transporte,
| |
| | |
| comunicação, limpeza pública e urbanização. O projeto será implantado inicialmente no Bairro Granja Marileusa
| |
| | |
| '''Serviços do Projeto:'''
| |
| | |
| '''''Easybus:(Parceria com a UFU)'''''
| |
| | |
| O sistema pretende permitir ao usuário identificar a lotação e o fluxo de passageiros dentro dos ônibus em tempo
| |
| | |
| real.
| |
| | |
| '''''Smart Lixeiras: (E-Pontos, parceria com a Global Brigde)'''''
| |
| | |
| Lixeiras eletrônicas equipadas com diversos sensores responsáveis por medir o volume de lixo descartado
| |
| | |
| e o espaço disponível que ainda resta dentro. O usuário que jogar o lixo corretamente adquire pontos que podem
| |
| | |
| ser trocados por prêmios
| |
| | |
| '''''Bueiros inteligentes:(Parceria com a PromonLogicalis)'''''
| |
| | |
| Os bueiros serão instalados com um filtro que consegue medir e enviar a quantidade de volume retido dentro
| |
| | |
| daquele local. Além disso, esses dados poderão ser cruzados com a previsão do tempo, por exemplo, alertando
| |
| | |
| para uma manutenção antes de um período altamente chuvoso e reduzindo a possibilidade de enchentes e
| |
| | |
| alagamentos.
| |
| | |
| '''Escalabilidade e Disaster Recovery: O que são estas grandes preocupações. Dar exemplos.'''
| |
| | |
| Hoje em dia, diante da dependência das empresas com os sistemas automatizados, fica cada vez mais fácil
| |
| | |
| encontrar falhas e problemas no funcionamento dos mesmos. É aí que o “Disaster Recovery” (ou simplesmente
| |
| | |
| Plano de recuperação de Desastres) entra, entretanto, ao contrário do que o próprio nome diz, o plano de
| |
| | |
| recuperação serve para evitar possíveis panes e problemas impedindo o mau funcionamento do sistema ou até
| |
| | |
| mesmo sua paralisação completa.
| |
| | |
| '''“Quando algum desastre como incêndios, inundações ou qualquer outro tipo ocorre, a'''
| |
| | |
| '''primeira medida a ser tomada após o sinistro é a recuperação dos dados. Por isso, para não passar'''
| |
| | |
| '''por nenhuma crise, nem ter altos gastos, o ideal é ter uma equipe preparada para criar um bom plano'''
| |
| | |
| '''de recuperação. O objetivo principal do projeto é estar preparado para proteger a corporação no'''
| |
| | |
| '''caso dos dados e aplicações se tornarem inutilizados. A TI deve criar uma estratégia que possibilite'''
| |
| | |
| '''um certo nível de estabilidade e medidas de recuperação pós-desastre.”'''
| |
| | |
| (<nowiki>http://blogbrasil.westcon.com/como-configurar-um-plano-de-recuperacao-de-desastres-em-ti</nowiki>).
| |
| | |
| Quando falamos da escalabilidade do software em si estamos falando sobre ter um código e uma arquitetura que é
| |
| | |
| fácil de dar manutenção, de aumentar suas funcionalidades, de várias pessoas trabalharem nele.
| |
| | |
| Eventualmente podemos usar o termo para indicar que o software pode ser usado por uma grande quantidade de
| |
| | |
| usuários (clientes). No sentido de pessoas ou empresas.
| |
| | |
| A escalabilidade do uso tem a ver com a capacidade de aumentar o consumo de memória, de processos, atender
| |
| | |
| demandas de alta exigência de processamento e possivelmente concorrência de acesso.
| |
| | |
| Existem inúmeras técnicas para possibilitar melhor escalabilidade de software.
| |
| | |
| Alguns softwares funcionam muito bem com baixa quantidade de dados ou acesso, mas quando isto aumenta, ele
| |
| | |
| passa ter problemas. Não adianta por mais e melhores equipamentos. Seria uma solução paliativa.
| |
| | |
| Algumas coisas crescem linearmente e isto é bom, isto escala bem. Os problemas se dão quando o software cresce
| |
| | |
| e as necessidades crescem exponencialmente. Ou seja, o aumento da necessidade gera um aumento da capacidade
| |
| | |
| de forma proporcionalmente maior. É uma progressão geométrica. Softwares pouco escaláveis são mais vulneráveis
| |
| | |
| à ataques.
| |
| | |
| '''Qual a diferença entre Teste unitário e Teste da aplicação?'''
| |
| | |
| '''''Teste Unitário:''''' É a forma de se testar unidades individuais de código fonte. Unidades podem ser métodos, classes,
| |
| | |
| funcionalidades, módulos, etc. O objetivo dos testes unitários é mostrar que cada unidade atende corretamente
| |
| | |
| sua especificação.
| |
| | |
| '''''Teste de Aplicação'':''' Garante que o sistema funciona como um todo. Este nível de teste está interessado se o
| |
| | |
| sistema funciona como um todo, com todas as unidades trabalhando juntas. Ele é comumente chamado de teste de
| |
| | |
| caixa preta, já que o sistema é testado “com tudo ligado”.
| |
| | |
| '''Em que consiste o termo DevOps?'''
| |
| | |
| DevOps surgiu da necessidade de melhorar a agilidade das entregas no setor de TI. O movimento DevOps foca em
| |
| | |
| aperfeiçoamento da comunicação, colaboração e integração entre desenvolvedores de software e administradores
| |
| | |
| da infraestrutura de TI. Modificando a antiga dinâmica, onde desenvolvedores e gerentes de infraestrutura eram
| |
| | |
| vistos como ilhas isoladas livres de intercomunicação e cooperativismo. O DevOps reconhece esta interdependência
| |
| | |
| entre desenvolvimento de software e infraestrutura, desta forma, contribui de forma efetiva para
| |
| | |
| a organização da produção de softwares e serviços de TI, aumentando expressivamente a eficiência e a rapidez.
| |
| | |
| '''O que é Integração Contínua e qual o papel do Jenkins?'''
| |
| | |
| A integração contínua é uma prática de desenvolvimento de software de DevOps em que os desenvolvedores, com
| |
| | |
| frequência, juntam suas alterações de código em um repositório central. Depois disso, criações e testes são
| |
| | |
| executados. Os principais objetivos da integração contínua são encontrar e investigar bugs mais rapidamente,
| |
| | |
| melhorar a qualidade do software e reduzir o tempo que leva para validar e lançar novas atualizações de software.
| |
| | |
| Geralmente, a integração contínua se refere ao estágio de criação ou integração do processo de lançamento de
| |
| | |
| software. A integração do código deve ocorrer com a maior frequência possível, idealmente a cada alteração
| |
| | |
| efetuada, pois em caso de problema, o conjunto de modificações em que a falha está inserida é menor, facilitando a
| |
| | |
| identificação e correção do(s) erro(s).
| |
| | |
| Jenkins é uma ferramenta de integração contínua, automatizada.
| |
| | |
| O desenvolvedor integra o código alterado e/ou desenvolvido ao projeto principal na mesma frequência com que
| |
| | |
| as funcionalidades são desenvolvidas, sendo feito muitas vezes ao dia ao invés de apenas uma vez. O objetivo
| |
| | |
| principal de utilizar a integração contínua é verificar se as alterações ou novas funcionalidades não criaram novos
| |
| | |
| defeitos no projeto já existente. A prática da integração contínua pode ser feita através de processos manuais ou
| |
| | |
| automatizados.
| |
| | |
| As Vantagens são que os bugs neste formato, não se acumulam, não gerando um problema geral no sistema, pois
| |
| | |
| ao invés de demorar um dia ou uma semana, o erro é detectado em horas. Pois mesmo o desenvolvedor testando
| |
| | |
| na codificação, ao integrar, erros podem surgir e quanto antes os erros forem detectados, antes serão corrigidos.
| |
| | |
| '''Quantos ambientes em média temos para desenvolvimento?'''
| |
| | |
| Os ambientes mais usados para o desenvolvimento back-end são: Distribuições unix (Ubuntu, Debian etc). Além de
| |
| | |
| frameworks, dentre eles, os mais utiizados são: Laravel, Django, Express.js, Phoenix, Flask e Ruby On Rails. (Fonte:
| |
| | |
| <nowiki>https://www.slant.co/topics/362/~best-backend-web-frameworks</nowiki>). | |
| | |
| '''O que faz o CheckStyle? Quer dizer que se eu escrever um código muito mal feito isto pode ser descoberto?'''
| |
| | |
| Nem sempre pensamos na qualidade do nosso código enquanto estamos escrevendo-o. E, vez ou outra, deixamos
| |
| | |
| passar uma classe que tem mais linhas do que deveria, métodos com muitos parâmetros etc.
| |
| | |
| Mas como fazer pra detectar esses problemas? Afinal, é impossível olhar classe a classe ou método a método. É
| |
| | |
| para isso que temos ferramentas, como o CheckStyle, como intuitivamente o nome diz, ela nos ajuda a encontrar
| |
| | |
| eventuais classes problemáticas.
| |
| | |
| Como isso é feito? Essa ferramenta lê seu código e captura tudo aquilo que considera estranho. Logo após isso, a
| |
| | |
| ferramenta nos gera um relatório apontando as inconsistências que saem do padrão dos códigos escritos. Você
| |
| | |
| pode instruir conjunto de regras a fim de otimizar a busca da ferramenta.
| |
| | |
| Então de certa forma, sim, mediante a ferramenta, caso você não tenha tido certo cuidado ao escrever seu código,
| |
| | |
| se atentando a boa sintaxe e coesão então provavelmente serão apontados ‘erros’ no mesmo.
| |
| | |
| '''Qual linguagem com mais repositórios atualmente?'''
| |
| | |
| Atualmente o maior número de repositórios encontrados pertence à linguagem JS (JavaScript). Segue o gráfico que
| |
| | |
| ilustra o crescimento (ou declínio), não só de JS como das demais linguagens.
| |