(32 revisões intermediárias por 5 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= Evolução na profissão =
= Evolução na profissão =
<p>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.</p>
Começou sua interação com a programação no curso de Sistema de Informação no Centro Universitário de Patos de Minas. Após o termino do curso, começou um estágio na Quick Mobile Brasil, e em 2016 foi para a Zup, onde está atualmente.
<br>
<p>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.</p>
<br>
<p>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</p>
 
<br>
<br>


= Descrição da atividade atual =  
= Descrição da atividade atual =  
<p>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.</p>
<br>
<p>
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.</p>
<br>
<p>
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.</p>


Sua atividade atual é baseada em trabalhos com equipes formadas por desenvolvedores não só de back-end, mas também de front-end, no qual o objetivo é fazer aplicativos, sistemas, programas, entre outros.
<br>
<br>


= Requisitos mínimos para exercer a profissão =
= Requisitos mínimos para exercer a profissão =
* Domínio de sistemas operacionais Linux e/ou baseados em Unix, incluindo SOs
A pessoa precisa ser muito boa em lógica, pois isso é utilizado diáriamente, até nos problemas mais simples. Além disso é preciso que a pessoa seja autodidata, pois como a programacao e a computacao estão em constante evolução, é preciso que o mesmo atualize-se sempre.
(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.
<br>


= Ferramentas usadas no dia-a-dia =
= Ferramentas usadas no dia-a-dia =
<p>É indiscutível que algumas ferramentas que facilitam e que são indispensáveis
-  Git, Java, C#, Jenkins.
para um desenvolvedor Backend no seu dia a dia.</p>
<br>
<p>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.</p>
<br>
<p>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.</p>
<br>
<p>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. </p>
<br>


= Tecnologias envolvidas =
= Tecnologias envolvidas =


<p>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. </p>
Uma tecnologia utilizada, é o Docker., que é uma ferramenta que fornece uma camada adicional de abstração e automação de virtualização de nível de sistema no Windows e no Linux.
<br>
<br/>
<p>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: </p>
<br>
*Bancos de dados Relacionais (SQL):
<p>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. </p>
<br>
*Bancos de dados Não-relacionais(NoSQL):
<p>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. </p>
<br>
<p>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. </p>
<br>
<p>Outras tecnologias também utilizadas pelos Dev.Back-Ends são as linguagens de programação e criptografias. </p>
<br>
<p>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. </p>
<br>
<p>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. </p>
<br>
<p>Exemplos de algumas criptografias que deparamos no dia-a-dia: </p>
<br>
*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.
<br>
<p>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. </p>
 
<br>


= Ética profissional =
= Ética profissional =
<p>É 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.</p>
 
<br>
A situação na qual o entrevistado disse ter utilizado ética, se aplica no acontecimento no qual ele e mais um grupo de pessoas não sabiam se a licença do programa utilizado por eles contemplava todo o pessoal envolvido no projeto. Diante disso eles tiveram que entrar em contato com o administrativo e pedir para verificar com a empresa contrata a quantidade de sessões permitidas.
<p>Perante os motivos aos quais se deve a implementação desse código de ética, se encontram os seguintes pontos.</p>
<br>
* 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.
<br>
<p>Dessa forma, é necessário que os programadores sejam éticos, já que eles têm acesso a informações importantes das pessoas.</p>


<br>
<br>


= Exemplo de resultado tangível =
= Exemplo de resultado tangível =
* O programador Luiz Gustavo, participa de um projeto que para a abertura de contas bancárias onlines.
 
Não foi citado um exemplo de resultado tangível, apenas foi citado que o Docker é ocasionalmente utilizado para concluir os trabalhos que são de responsabilidade dele e de sua equipe.
<br>
<br>


= Upload da apresentação =
= Upload da apresentação =
* Colocar aqui o link ou o arquivo da apresentação
* https://prezi.com/view/RAyWnVsDaXdXTXxD8Wr9/
**[[Arquivo:GBC021 - Resumo Profissões - Administrador de Banco de Dados.pdf]]
<br>
<br>


Linha 118: Linha 38:
<br>
<br>


* 01. Como é que o trabalho desenvolvido pelo Dev Back-end se "encaixa" no trabalho a ser desenvolvido pelo Dev Front-End?
* 01. O curso é preparatorio para o mercado de trabalho?
**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.
** R- O curso é preparatório em relação a lógica que você precisa ter para a área da programação.
<br>
 
* 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.
<br>
 
* 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.
<br>
<br>


* 04.O que é um ''framework''? Dê alguns exemplos e a utilização de cada um?
* 02. Como você decidiu entrar nessa área da computação?
** 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.
** R- Entrei nessa área porque sempre gostei de jogos, e também foi algo que me desafiou, e ao mesmo tempo me senti realizado a sempre ir progredindo em problemas que para algumas pessoas pareciam impossíveis.
<br>
<br>


* 05. Escalabilidade e Disaster Recovery: O que são estas grandes preocupações no mundo Dev Back-End?. Dar exemplos.
* 03. Quais funções você exerce na ZUP(detalhes)?
** Disaster Recovery são conjuntos de ações com o intuito de que caso algo aconteça, prejudicando a aplicação, existe uma forma de recuperar a versão anterior, ela pode ser feita pelo GitHub (controle de versões) e pode ser feito por meio de backups, Escalabilidade é de fundamental importância, pois uma aplicação deve ser capaz de suportar uma quantidade de usuários, caso esse número passe, o sistema já reorganiza, permitindo que mais pessoas acessem a aplicação, o banco de dados auxilia na escalabilidade do servidor.
** R- Sou programador Back End, porém conheço a maioria das áreas da ZUP.
<br>
<br>


* 06. Qual a diferença entre Teste unitário e Teste Integrado? Utiliza alguma ferramenta nestes casos?
* 04. Na sua opinião, há diferença na contratação entre um profissional formado em Universidade pública e particular, na área da computação?
** 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
** R- Não, o que diferencia é a vontade que a pessoa tem de ir longe.
<br>
<br>


* 07. Como funciona o JSON? Dê alguns exemplos
* 05. Quais características uma pessoa precisa ter para ser programador de Back-End?
**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, 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.
** R- A pessoa precisa ser muito boa em lógica, pois isso é utilizado diariamente, até nos problemas mais simples. Além disso é preciso que a pessoa seja autodidata, pois como a programação e a computação estão em constante evolução, é preciso que o mesmo atualize-se sempre.
<br>
<br>


* 08. Para que serve o Scrum? Utiliza alguma cerimônia? Qual e como?
* 06. Quais ferramentas você usa no seu dia a dia, tanto para produtividade tanto para a questão da programação/desenvolvimento de sistemas?
**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.
** R- Git, Java, C#, Jenkins.  
<br>
<br>


* 09. De que forma o trabalho do Dev Back-End se integra com o DBA?
* 07. Você poderia citar alguma tecnologia interessante, que ajude no desenvolvimento do sistema, ou entao na produtividade?
**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
** R- Docker.
 
 
<br>
<br>


* 10. Cite algum caso de idoneidade (ou falta) que tenha conhecimento de um profissional ligado a Back-end.
* 08. Como a ética se aplica na sua profissão?
**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.
** R- A ética é necessária por exemplo para reconhecer quando voce está errado, pois muitas vezes o trabalho é realizado em equipes, então a ética é de extrema importância.
<br>
<br>

Edição atual tal como às 22h33min de 2 de julho de 2019

Evolução na profissão

Começou sua interação com a programação no curso de Sistema de Informação no Centro Universitário de Patos de Minas. Após o termino do curso, começou um estágio na Quick Mobile Brasil, e em 2016 foi para a Zup, onde está atualmente.

Descrição da atividade atual

Sua atividade atual é baseada em trabalhos com equipes formadas por desenvolvedores não só de back-end, mas também de front-end, no qual o objetivo é fazer aplicativos, sistemas, programas, entre outros.

Requisitos mínimos para exercer a profissão

A pessoa precisa ser muito boa em lógica, pois isso é utilizado diáriamente, até nos problemas mais simples. Além disso é preciso que a pessoa seja autodidata, pois como a programacao e a computacao estão em constante evolução, é preciso que o mesmo atualize-se sempre.

Ferramentas usadas no dia-a-dia

- Git, Java, C#, Jenkins.

Tecnologias envolvidas

Uma tecnologia utilizada, é o Docker., que é uma ferramenta que fornece uma camada adicional de abstração e automação de virtualização de nível de sistema no Windows e no Linux.

Ética profissional

A situação na qual o entrevistado disse ter utilizado ética, se aplica no acontecimento no qual ele e mais um grupo de pessoas não sabiam se a licença do programa utilizado por eles contemplava todo o pessoal envolvido no projeto. Diante disso eles tiveram que entrar em contato com o administrativo e pedir para verificar com a empresa contrata a quantidade de sessões permitidas.


Exemplo de resultado tangível

Não foi citado um exemplo de resultado tangível, apenas foi citado que o Docker é ocasionalmente utilizado para concluir os trabalhos que são de responsabilidade dele e de sua equipe.

Upload da apresentação


Dúvidas


  • 01. O curso é preparatorio para o mercado de trabalho?
    • R- O curso é preparatório em relação a lógica que você precisa ter para a área da programação.


  • 02. Como você decidiu entrar nessa área da computação?
    • R- Entrei nessa área porque sempre gostei de jogos, e também foi algo que me desafiou, e ao mesmo tempo me senti realizado a sempre ir progredindo em problemas que para algumas pessoas pareciam impossíveis.


  • 03. Quais funções você exerce na ZUP(detalhes)?
    • R- Sou programador Back End, porém conheço a maioria das áreas da ZUP.


  • 04. Na sua opinião, há diferença na contratação entre um profissional formado em Universidade pública e particular, na área da computação?
    • R- Não, o que diferencia é a vontade que a pessoa tem de ir longe.


  • 05. Quais características uma pessoa precisa ter para ser programador de Back-End?
    • R- A pessoa precisa ser muito boa em lógica, pois isso é utilizado diariamente, até nos problemas mais simples. Além disso é preciso que a pessoa seja autodidata, pois como a programação e a computação estão em constante evolução, é preciso que o mesmo atualize-se sempre.


  • 06. Quais ferramentas você usa no seu dia a dia, tanto para produtividade tanto para a questão da programação/desenvolvimento de sistemas?
    • R- Git, Java, C#, Jenkins.


  • 07. Você poderia citar alguma tecnologia interessante, que ajude no desenvolvimento do sistema, ou entao na produtividade?
    • R- Docker.


  • 08. Como a ética se aplica na sua profissão?
    • R- A ética é necessária por exemplo para reconhecer quando voce está errado, pois muitas vezes o trabalho é realizado em equipes, então a ética é de extrema importância.