| Linha 131: | Linha 131: | ||
* 04.O que é um ''framework''? Dê alguns exemplos e a utilização de cada um? | * 04.O que é um ''framework''? Dê alguns exemplos e a utilização de cada um? | ||
** Ele executa diversas funções que podem ser usadas pelo desenvolvedor. Um framework | ** Ele executa diversas funções que podem ser usadas pelo desenvolvedor. Um framework é uma plataforma que disponibiliza um conjunto de bibliotecas com elementos base e código disponível para serem integrados num projeto. Existem diversos tipos dele, como: Phalcon que é considerado um dos frameworks PHP mais rápidos da atualidade, já que consegue processar de forma mais rápida as solicitações PHP e que tem extensão escrita em C, CakePHP que foca em simplificar o processo de desenvolvimento em PHP para programadores de qualquer nível, Codelgniter que tem como destaque a sua simplicidade já que não é necessário utilizar linhas de código. | ||
é uma plataforma que disponibiliza um conjunto de bibliotecas com elementos base e | |||
código disponível para serem integrados num projeto. Existem diversos tipos dele, | |||
como: Phalcon que é considerado um dos frameworks PHP mais rápidos da atualidade, | |||
já que consegue processar de forma mais rápida as solicitações PHP e que tem extensão | |||
escrita em C, CakePHP que foca em simplificar o processo de desenvolvimento em | |||
PHP para programadores de qualquer nível, Codelgniter que tem como destaque a sua | |||
simplicidade já que não é necessário utilizar linhas de código. | |||
<br> | <br> | ||
| Linha 154: | Linha 147: | ||
* 08. Para que serve o Scrum? Utiliza alguma cerimônia? Qual e como? | * 08. Para que serve o Scrum? Utiliza alguma cerimônia? Qual e como? | ||
**Scrum é uma metodologia para o planejamento de um processo de software. Essa | **Scrum é uma metodologia para o planejamento de um processo de software. Essa metodologia funciona primeiramente montando- se pequenos times, posto isso o | ||
metodologia funciona primeiramente montando- se pequenos times, posto isso o | trabalho é dividido em ciclos chamados sprints. As funções a serem realizadas são armazenadas numa lista chamada Product Backlog; em cada planejamento de uma | ||
trabalho é dividido em ciclos chamados sprints. As funções a serem realizadas são | sprint é necessário uma pessoa que conheça as regras do mercado e que possa priorizar os itens do Product Backlog, sendo assim a equipe seleciona as atividades que ela será capaz de implementar durante o sprint se inicia. Com isso, por meio de reuniões diárias as tarefas são revisadas e alinhadas. | ||
armazenadas numa lista chamada Product Backlog; em cada planejamento de uma | |||
sprint é necessário uma pessoa que conheça as regras do mercado e que possa priorizar | |||
os itens do Product Backlog, sendo assim a equipe seleciona as atividades que ela será | |||
capaz de implementar durante o sprint se inicia. Com isso, por meio de reuniões diárias | |||
as tarefas são revisadas e alinhadas. | |||
<br> | <br> | ||
Edição das 00h05min de 10 de outubro de 2018
Evolução na profissão
O desenvolvedor back-end precisa ser bom em raciocínio lógico e ter conhecimento das ferramentas que utilizará. Raciocínio lógico é estimulado, para tal fim as maratonas de programações ajudam muito, pois é preciso solucionar problemas, para isso, é exigido que o programador pense, teste o código, analisa onde errou e tente arrumar o problema, assim, contribui para a formação do back-end, pois antes de começar um projeto, você deve pensar em como irá realizar, durante o projeto, no meio dos testes, se surgirem problemas, é necessário corrigi-los, e nesse momento, ser humilde para aceitar ajuda de outras pessoas.
Além disso, a maioria das faculdades se preocupam mais com o ensino do raciocínio, pois é algo fundamental dentro de uma empresa. Quanto ao ensino das ferramentas e linguagens de programação, é melhor abordado em cursos técnicos e nos estágios, pois como para cada paradigma existem várias linguagens de programação, fica a critério do consumidor escolher qual será usada no projeto.
Quanto ao programador back-end, Luiz Gustavo, participou de várias maratonas, participou do projeto Ciência sem fronteira, tendo mais contato com o back-end, fez estágio e agora trabalha na ZUP. Toda essa carreira possibilitou que ele aumentasse seu conhecimento tanto no raciocínio logico quanto nas ferramentas que ele utiliza, e sempre ele está estudando, pois a cada momento surgem ferramentas e linguagens de programação novas, com o intuito de facilitar determinados trabalhos, podendo ser crucial no desenvolvimento de um projeto
Descrição da atividade atual
Normalmente os desenvolvedores realizam uma daily, que é uma reunião em que cada programador do projeto deve falar se tem alguma dificuldade e o seu progresso, deixando todos os envolvidos fiquem informados do andamento do projeto e, se necessário, possam auxiliar os demais. Após essa reunião, o desenvolvedor precisa ver o que ele precisa desenvolver, para isso, normalmente, é utilizado softwares para essa distribuição, como o Jira, que permite que o desenvolvedor organize as tarefas já feitas, em andamento e para fazer. Após decidir qual tarefa ele irá realizar primeiro, pensar como irá realizar, o dev começa a, de fato, programar, e conforme programando, ele realiza os testes unitários para ver se está tudo OK.
Após tudo pronto, testado, o dev realiza o teste integrado, que é para analisar se a aplicação como um todo está funcionando como desejado, se necessário, após esse teste, caso exista erros, o programador precisa solucioná-los, e depois de solucionados, o projeto passa pelo teste novamente.
Ao entregar o projeto final ao comprador, ainda tem o prazo de manutenção, que é quando o programa é liberado para ser usado, e se ocorrer algum problema ao fazer o uso o dev back-end é constatado e o mesmo precisa procurar uma solução.
Requisitos mínimos para exercer a profissão
- Domínio de sistemas operacionais Linux e/ou baseados em Unix, incluindo SOs
(Sistemas Operacionais) específicos para servidores;
- Um bom conhecimento das IDE onde ele irá desenvolver os projetos;
- Conhecimento em linguagens usadas para ambiente web, como Python, PHP,
Javascript, entre outras;
- Integração com APIs (Application Programming Interface ou Interface de
Programação de Aplicativos) e ambientes em nuvem;
- Criação de banco de dados bem como o gerenciamento e integração com outras
aplicações;
- Ficar atento às mudanças das linguagens e o surgimentos de novas ferramentas e
se adaptá-las devidamente;
- Conseguir utilizar de uma forma eficaz a POO (Programação Orientada a
Objetos);
- E por fim, um bom currículo ajuda, porém os contratantes observam se o
profissional é bom e se interessa em solucionar problemas.
Ferramentas usadas no dia-a-dia
É indiscutível que algumas ferramentas que facilitam e que são indispensáveis para um desenvolvedor Backend no seu dia a dia.
Entre as importantes ferramentas utilizadas uma das principais é a IDE (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento), seu uso é inevitável já que é onde o profissional desenvolve o seu código, além disso, geralmente ela facilita bastante o trabalho do programador, agilizando o desenvolvimento executando funções como dar sugestões de código, indentação automática e entre outros. O profissional apresentado faz uso do Netbeans que é um software livre multiplataforma frequentemente utilizado para projetos em Java. Outra IDE bem eficiente e comum no mercado de trabalho, porém paga, utilizada por ele é o Intellij.
Ademais, entre as ferramentas usadas está o software livre Hibernate que é o Framework Java mais utilizado no mercado e faz o mapeamento das classes Java para as tabelas de banco de dados; sua principal função é fazer esse mapeamento, economizando esforço e preocupações a tal tarefa. Outros softwares manipulados por ele nesse campo de banco de dados são o Oracle e o Mysql onde ambos são sistemas de gerenciamento em banco de dados.
E por fim, uma ferramenta bastante comum utilizada por ele e todos os níveis de desenvolvedores é o Github que é um site onde eles podem hospedar os seus projetos ,que ficam armazenados na nuvem, em que também é possível interagir com outros programadores e seus projetos além de poder pegar e modificar os seus códigos.
Tecnologias envolvidas
O desenvolvedor back-end atua em uma fronte lógica e específica da criação do software. Sendo assim, utiliza diversas tecnologias para de forma mais eficiente criar programas que atendam ao usuário e a empresa. Banco de dados, linguagens de programação e criptografia por exemplo são tecnologias das quais ele utiliza. Não são as únicas já que a cada dia que passa surgem novas tecnologias, por conseguinte, uma outra "tecnologia" do profissional é sempre estudar e estar atualizado.
Devido a necessidade de armazenar informações em forma de dados, os bancos de dados foram criados, e quem os aplica são os Dev. Backends. São divididos em dois tipos:
- Bancos de dados Relacionais (SQL):
Previamente seu tamanho já é definido pelo programador, tem um esquema de tabelas para armazenar os dados e isso trás mais consistência nos dados. Logo, pontos fortes dos BDR's são sua confiabilidade e maturidade.
- Bancos de dados Não-relacionais(NoSQL):
Não precisam ser previamente projetados, devido a isso esses modelos tem uma exacerbada escalabilidade. Outro ponto a ser citado é sua flexibilidade de estruturação, que facilita a inserção e acesso aos dados, além da possibilidade de manipulação dos dados por API's. No entanto, o NoSQL não e maduro e confiável a nível do SQL.
Logo, quando se precisa de confiabilidade na aplicação se usa o SQR, e quando se quer eficiência mas perdendo um pouco de segurança se opta pelo NoSQL.
Outras tecnologias também utilizadas pelos Dev.Back-Ends são as linguagens de programação e criptografias.
Go,Cloujure,C#,PHP,Java,Python,Ruby são exemplos das linguagens mais usadas. Desde paradigmas funcionais, até linguagens multi paradigmas como ruby. O domínio de algumas delas são essenciais para esse profissional.
Devido a existência de informações sigilosas também foram criadas formas de fazer criptografia para os dados armazenados no computador. O conhecimento de algumas formas pode ser um diferencial para o programador, entender como uma chave funciona e a quantidade de possíveis chaves daquele tamanho remetem a necessidade de optar por mais segurança ou não no desenvolvimento.
Exemplos de algumas criptografias que deparamos no dia-a-dia:
- Ponta-a-ponta, usada no whatsApp, gera chaves para cada conversa e apenas as pessoas presentes na conversa tem acesso a essas informações.
- O protocolo https também funciona com criptografia para o acesso seguro de dados entre o servidor e o usuário via internet.
Portando, fica evidente, que o profissional de Desenvolvimento Back-End deve estar sempre muito bem atualizado e armado com um arsenal de tecnologias as quais o levem a desenvolver softwares de qualidade, seguros e eficientes.
Ética profissional
É evidente que a tecnologia cresce muito, e além de afetar diversas outras áreas, a sua responsabilidade perante a desastres que podem vir a ocorrer aumenta drasticamente. Logo, deve se observar que a ética na profissão de TI começa a tomar expressiva importância, tendo como ideia de que qualquer tecnologia pode ser usada para o mal. Sendo assim, como um código de ética para o desenvolvimento de software é inexistente, sua implementação se torna necessária, assim como ocorreu em outras profissões como a medicina.
Perante os motivos aos quais se deve a implementação desse código de ética, se encontram os seguintes pontos.
- Desenvolver programas para uma determinada instituição, que, fere os princípios da lei em função de trazer benefícios à mesma.
Ex: Um programa que faz a "soma errada" e faça com que a empresa sonegue os impostos.
- Existem muitos outros pontos, como roubo de informações, cópias ilegais, pois os desenvolvedores back-end têm acesso aos cadastros dos usuários, podendo conter dado de cartões bancários.
Dessa forma, é necessário que os programadores sejam éticos, já que eles têm acesso a informações importantes das pessoas.
Exemplo de resultado tangível
- O programador Luiz Gustavo, participa de um projeto que para a abertura de contas bancárias onlines.
Upload da apresentação
- Colocar aqui o link ou o arquivo da apresentação
Dúvidas
- 01. Como é que o trabalho desenvolvido pelo Dev Back-end se "encaixa" no trabalho a ser desenvolvido pelo Dev Front-End?
- O front-end liga o back-end com o usuário, por meio da interface dos aplicativos, ele pegando os dados necessário e transfere para o desenvolvedor back, que tem como responsabilidade processar esses dados que serão retornados para o usuário por meio do front ou enviados para o banco de dados.
- 02. Descreva os principais ambientes utilizados pelo Dev Back-End para desenvolver um trabalho (Pode ser relativo a um projeto específico).
- Normalmente o dev-back trabalha com 4 ambientes, esses ambientes são responsáveis por rodar a aplicação na etapa que o projeto está. As etapas são: local – para testes da própria feature, desenvolvimento – para juntar várias features e sprint, homologação – para validar e certificar as features e produção – para ser usado por clientes reais.
- 03. Quais são as skills de quem trabalha nesta área?
- As skills de quem trabalha nessa área é o raciocínio lógico e a facilidade para solucionar problemas, e essas skill podem ser adquiridas com maratonas de programação.
- 04.O que é um framework? Dê alguns exemplos e a utilização de cada um?
- Ele executa diversas funções que podem ser usadas pelo desenvolvedor. Um framework é uma plataforma que disponibiliza um conjunto de bibliotecas com elementos base e código disponível para serem integrados num projeto. Existem diversos tipos dele, como: Phalcon que é considerado um dos frameworks PHP mais rápidos da atualidade, já que consegue processar de forma mais rápida as solicitações PHP e que tem extensão escrita em C, CakePHP que foca em simplificar o processo de desenvolvimento em PHP para programadores de qualquer nível, Codelgniter que tem como destaque a sua simplicidade já que não é necessário utilizar linhas de código.
- 05. Escalabilidade e Disaster Recovery: O que são estas grandes preocupações no mundo Dev Back-End?. Dar exemplos.
- 06. Qual a diferença entre Teste unitário e Teste Integrado? Utiliza alguma ferramenta nestes casos?
- Teste unitário – teste feito em uma função, num método específico. Teste integrado é um teste realizado na aplicação real, testa todas as funções juntas, normalmente utiliza-se cucumber ou postamn para esses testes
- 07. Como funciona o JSON? Dê alguns exemplos
- O conceito de JSON "Javascript Object Notation " é um formato mais leve para transferência e intercâmbio de dados, similar ao XML, porém, superior, já que é mais leve. Curiosamente ele pode ser usado em qualquer linguagem, já que ele vem substituindo o método XML. Sua maior utilidade é retornar os dados vindos de um servidor utilizando requisições AJAX para atualizar em tempo real.
- 08. Para que serve o Scrum? Utiliza alguma cerimônia? Qual e como?
- Scrum é uma metodologia para o planejamento de um processo de software. Essa metodologia funciona primeiramente montando- se pequenos times, posto isso o
trabalho é dividido em ciclos chamados sprints. As funções a serem realizadas são armazenadas numa lista chamada Product Backlog; em cada planejamento de uma
sprint é necessário uma pessoa que conheça as regras do mercado e que possa priorizar os itens do Product Backlog, sendo assim a equipe seleciona as atividades que ela será capaz de implementar durante o sprint se inicia. Com isso, por meio de reuniões diárias as tarefas são revisadas e alinhadas.
- 09. De que forma o trabalho do Dev Back-End se integra com o DBA?
- O back-end faz a ligação do banco de dados com o front-end, os dados que foram pegos e processados, se necessário, são armazenados no banco de dados, e o back-end tem a responsabilidade de salvar essas informações no banco de dados que foi escolhido para o projeto
- 10. Cite algum caso de idoneidade (ou falta) que tenha conhecimento de um profissional ligado a Back-end.
- Existem diversos casos no qual a idoneidade pode ser citada. Por exemplo, dizem que na época da inflação alta um banco “se esquecia” de pagar os juros de “overnight” uma vez por mês. Ou que uma construtora de prédios residenciais escolhia todo o mês o índice de correção mais caro dentre os vários disponíveis (IGPM, INCC, IPC etc.) e o aplicava a todos os contratos, independentemente de que índice estava estipulado no contrato. Ou que certos softwares de emissão de notas fiscais faziam a “soma errada” de forma a sonegar impostos. Todas essas ações que estão na responsabilidade do back-end de desenvolver ou dar manutenção, logo, por vontade da empresa a ética desse profissional pode ser corrompida em função de um lucro maior para a mesma.