Evolução na profissão
Minha carreira profissional começou já no ensino médio onde tive meu primeiro contato com a programação.
No segundo ano, ja decidido a me aprofundar na programação, comecei meu primeiro estagio onde consegui absorver e aprender muita coisa.
Durante o estagio melhorei minha logica de programação e tive uma base de desenvolvimento web.
Descrição da atividade atual
Minhas atividades durante o dia são divididas em:
1- Ajudar e organizar minha equipe.
2- Ajudar o time como um todo.
3- Executar minhas tarefas de código.
Geralmente costumo organizar as tarefas da minha equipe, depois apoiar o time com algumas tarefas e por ultimo executo minhas tarefas individuais.
Durante o dia também tenho participação nas reuniões de definição de projetos e Sprints.
Requisitos mínimos para exercer a profissão
O principal para exercer a profissão é ter vontade de aprender pois essa é uma área muito vasta e que muda mundo e muito rápido.
Ter uma boa lógica de programação. No geral a base da programação é muito importante para trabalhar nessa área não só a logica mas também noções gerais da área.
Saber perguntar (Fazer perguntas boas e necessárias).
Ter uma boa comunicação. Por você normalmente trabalhar em equipes a comunicação é fundamental.
Ferramentas usadas no dia-a-dia
VSCode. Editor de código.
Planner. Para elaborar as sprints..
Zoom. Para reuniões.
Insomnia. Para fazer testes de requisições de API's
Typora. Para executar a documentação do software e do codigo.
AWS services. Servidor.
MySql. Banco de dados.
Tecnologias envolvidas
Linguagens: Lara(framework PHP). Atualmente está sendo a mais usada na parte de back na minha empresa.
Na parte do front: Java script, HTML, CSS, Bootstrap.
Na profissão e trabalho com gerenciamento de banco de dados, manutenção dos servidores, deploy para os servidores, programação para web, integração dos programas com as API's
A metodologia ágil que usamos na empresa é o agile que é uma derivada do Scrum.
Ética profissional
Essa é uma profissão que exige ética o tempo inteiro, principalmente por trabalhar muito com dados pessoais e muitas informações em geral.
Um caso que aconteceu recentemente foi uma pessoa que saiu da empresa, mas fez uma copia da planilha ,foi para uma outra empresa rival e mostrou para eles todos os dados de clientes, formas de calculo. Por isso que a empresa decidiu passar para plataforma para o funcionário não ter acesso tão fácil a esses dados.
Exemplo de resultado tangível
Plataformas:
Irriger connect. Por ser uma empresa multinacional essa plataforma tem 6 linguagens e é a plataforma principal da empresa. Trabalho principalmente na correção de bugs da plataforma.
Telo5(projeto que peguei do 0). Projeto que estou trabalhando atualmente e sua versão mobile.
Valley365. Trabalho mais na correção de bugs pois já estava pronto quando entrei na empresa.
Upload da apresentação
- https://youtu.be/mROR0iLjkjU
Pesquisa
API (application programing interface) é um conjunto de normas que permite a comunicação entre aplicativos/plataformas sem que seja necessário saber sobre a implementação do app que tem uma API.
Uma API permite que um software use certos recursos do software que tem a API com mais facilidade sem que seja necessária um conhecimento vasto sobre a implementação do mesmo.
O google maps por exemplo tem uma API muito usada por outros softwares, esta API permite que o software receba varias informações que existem no Maps(localizações, rotas e etc...) e use essas informações para melhorar a sua aplicação. Tudo isso sem ter que saber sobre a implementação em si do Google Maps, tudo isso por meio de uma API.
Um exemplo de integrações usando API's é o whatsapp que utiliza a lista de contatos do telefone. E outro exemplo comum é a integração do instagram com o facebook que permite por exemplo que uma foto seja postada nos dois app's simultaneamente.
Pode-se separar API's em 4 tipos:
-Publicas ou Abertas: Estão disponíveis para desenvolvedores e outros usuários de forma publica e tem poucas restrições.
-Privadas ou Internas: São ocultadas de usuários externos e usadas somente para sistemas internos de uma empresa. Elas são usadas internamente em uma empresa, entre equipes, para melhorar a produtividade.
-API's de parceiros: API's expostas para parceiros da empresa.
-API's compostas: API's que combinam vários dados de outras API's.
Em resumo uma API é como um garçom, ela recebe pedidos, vai até o programa, pega o que foi solicitado e entrega para quem pediu. Basicamente um facilitador que ajuda na comunicação entre aplicações.
Atualmente as API's são muito utilizadas e extremamente úteis para desenvolvedores, saber trabalhar com elas é muito útil e atualmente esta sendo necessário pois elas estão em todos os lugares.
Dúvidas
- 01. [Luiz Cláudio] Trabalha com IoT ou GPS? Se sim, quais as integrações vc faz?
- Sim. Ela se chama INS, ele consegue mapear as areas onde esta "setado", ele usa satélites que transmitem sinais com informações e o receptor desse sinais consegue computar a posição e a velocidade de algum "objeto", ela é muito usada em movimentações autônomas.*
- 02. [Luiz Cláudio] Em que sentido o curso técnico te ajudou?
- Me ajudou a ter um planejamento de carreira, ter uma base de metodologias ágeis e me inseriu no mundo da programação e me aprofundar nele.*
- 03. [Luiz Cláudio] Vc pode dar as características e dificuldades de uma start-up (financeira, nro de pessoas, financiamento, ...)?
- Um ambiente geralmente mais descontraído comparado com um ambiente corporativo, tem um numero reduzido de funcionários onde geralmente todos tem que fazer "tudo" ou seja são funcionários multifuncionais.*
- 04. [Luiz Cláudio] Qual a atribuição do Tech Lead?
- Monitorar e apoiar uma equipe, realizar uma organização e distribuição de tarefas e atuar no desenvolvimentos de correções e implementações de código em programação. São atribuições de cunho de gestão de projetos e desenvolvimento de software.*
- 05. [Luiz Cláudio] Vc faz duas dailys por dia? É produtivo?
- Sim. São duas dailys produtivas. uma geralmente de alinhamento de equipe e outra de definição.*
- 06. [Luiz Cláudio] Projeto, configuração e manutenção de BD são suas atribuições? Vc responde bem nessa parte?
- Sim. Tanto como Techlead e como Dev Backend, na quipe onde eu trabalho não tem um DBA(Desenvolvedor de banco de dados).Sim nunca tive problemas com desenvolvimento e administração de banco.*
- 07. [Luiz Cláudio] Pode dar um exemplo de operação (uma função) no Git?
- "git push -é uma função que realiza o envio de arquivos do meu repositório local para o repositório em nuvem-." *
- 08. [Luiz Cláudio] Pode explicar melhor a utilização do Insommia?
- Eu utilizo para realizar teste de desenvolvimento de API's.
Geralmente faço requisições para uma API (usando o protocolo http) e passo uma rota que eu crio para tratar o recebimento e o envio dos dados da API e de acordo com a requisição tenho uma resposta do software.*
- 09. [Luiz Cláudio] Qual padrão vc usa para documentação dos programas?
- É utilizado geralmente um diagrama de classes(diagrama UML) isso se tratando de documentações para o time de dev's.
Documentações para o usuário são geralmente mais informais com linguagens usadas mais no dia-a-dia visando um melhor entendimento do usuário final da aplicação.*
- 10. [Luiz Cláudio] Como você interage com o Dev front-end?
- Tento entender a logica do layout e como o desenvolvedor front espera receber os dados tratados no backend. Recebo essas informações através das reuniões, conversas do dia-a-dia e até mesmo de duvidas que são reportadas pra mim.*
- 11. [Luiz Cláudio] Você participa do desenvolvimento de uma aplicação que pode ser manutenida por um dev em outro país?
- Não. Pois usamos um stack's diferentes no Brasil e o que é desenvolvido por nos no Brasil apenas nos corrigimos e alteramos porem esta previsto a integração das equipes de desenvolvimento do Brasil e de fora.*
- 12. [Luiz Cláudio] Vc trabalha numa equipe com horários flexíveis? Funciona bem?
- Sim. Funciona muito bem pois deixa o funcionário mais tranquilo e mantem um nível de entrega da equipe e do funcionário individual. *
- 13. [Luiz Cláudio] Qual a diferença entre tipagem forte e tipagem dinâmica?
- Quando se tem uma tecnologia de tipagem forte ela não aceita que você substitua no processo de desenvolvimento o tipo de uma variável, ex: "variável x tipo int" ela não poderá receber valores de cunho diferente de int. A tipagem forte é boa pois ajuda e modulariza bem o código de uma aplicação, tudo fica bem separado diminuindo bem a chance de erro
A tipagem dinâmica ela aceita a substituição no processo de desenvolvimento porem também aceita que você informe o tipo daquela variável. Ex: "variável x=0(observando a variável x sabemos que ela é uma variável int porem ela não tem tipo definido, mas durante o desenvolvimento essa variável x poderá ser uma variável do tipo bool aceitando 0 ou 1). A tipagem dinâmica é um tipo de desenvolvimento que requer atenção e muito cuidado com as variáveis a começar pelo nome saber nomear uma variável de acordo com sua função é essencial, pois uma mesma variável poderá fazer mais de uma função, porem se você tem uma variável bem nomeada ela fara aquilo que esta descrito em seu nome." *
- 14. [Maria Fernanda] o que seria interessante estudar pra poder atuar nessa área de correção de bugs?
- TDD(Desenvolvimento orientado a testes), conceito de testes unitários e conhecer, de acordo com onde você trabalha, algum framework de teste referente a tecnologia que é desenvolvida na empresa, conceitos de engenharia de software e saber colher requisitos de projetos.*
- 15. [Luiz Cláudio] Como funcionam as requisições assíncronas?
- É tudo aquilo que é feito "por trás dos panos" sem que seja obrigatório recarregar uma pagina, Ex: em uma tela onde um botão tem a função de retornar uma soma, por padrão quando um botão é acionado, ele recarrega uma pagina, mas com uma função assíncrona é possível o carregamento da pagina realizar o calculo e já retorna-lo para o usuário sem que o mesmo perceba. É um tipo de requisição muito usada pelo fato de deixar o fluxo de uso do usuário bem fluido.*
- 16. [Davy Bittencourt] Vi que vcs utilizam a AWS, consegue dizer pra gente algum cenário onde precisou usar a nuvem pra melhorar a escalabilidade da API?
- Tem uma API que antes era tratada toda dentro de um banco de dados, como era um BD muito extenso as consultas demoravam muito, decidimos hospedar em nuvem esse banco e tratar com cron job os dados após transformarmos os dados em JSON, isso deixou as consultas mais rápidas e anulou a reclamação dos usuários finais de demora.*
- 17. [Luiz Cláudio] Por que usar o Bitbucket ou Git?
- Bitbucket assim como github é uma ferramenta de hospedagem de versionamento de projeto. O git é o software que versiona a minha aplicação que será hospedada, você deve usar pela facilidade e escalabilidade de código, pois você consegue voltar para qualquer versão anterior de sua aplicação e resgatar seja lá o que você quiser e também outros desenvolvedores consegue trabalhar junto com você em diferentes versões e deferentes pontos.*
- 18. [Davi Lacerda] Como vc gerencia seu tempo para faculdade, trabalho e outras atividades?
- Durante o dia eu priorizo as atividades do trabalho e durante a noite foco na faculdade e aos fins de semana descanso. E não deixo atividades acumularem.*
- 19. [Davi Lacerda] Como um dev back-end pensa sobre um programa de bug bounty?
- Infelizmente não existe o sistema perfeito, impenetrável e super seguro, pois tudo é feito por seres humanos, ou seja, bugs serão recorrentes. Programas de bug bounty são interessantes pois através deles se consegue informações sobre a qualidade do desenvolvimento e também relatórios de bugs recorrentes e onde esses bugs aparecem, pois o foco é literalmente buscar qualquer tipo de bug que possa aparecer na aplicação.*
- 20. [Bruno Freitas] O dev. back-end trabalha necessariamente em projetos que utilizam a web, seja como armazenamento em nuvem, ou simplesmente como requisito necessário para o funcionamento do projeto?
- O desenvolvedor backend atua em projetos onde os requisitos do projeto vão alem de requisitos de layout e design(o frontend ele pode acontecer sozinho pois é tudo aquilo que o usuário enxerga, ou seja aplicações que não tenham necessidade de armazenamento de informações ou dados. Já o backend precisa do front para acontecer e também precisa dos requisitos do front alinhados com os requisitos do back, Ex: "quando apertar um botão quero uma tela que me retorne as informações de venda do ultimo mês" esse é um tipo de requisito onde você tem o front que vai criar o bota e a tela e você tem o back que vai tratar os dados para o retorno da informação de venda do ultimo mês). *
- 21. [Eduardo Alvares] Qual seria uma características ou formação que seria de grande destaque para um Dev Back-end?
- Um dev Back-end não carece de uma formação especifica porem carece de uma boa logica de programação, saber criar e gerir banco de dados, realizar consultas ao banco de dados, saber receber tratar e enviar dados, ter conhecimento de API's, conhecer tipos de dados, protocolos de internet e saber trabalhar em equipe.*
- 22. [Maria Fernanda Nunes] Qual a tarefa mais interessante ou desafiadora que você tenha feito recentemente?
- Tarefa mais interessante: Gestão de projetos e pessoas.
Tarefa mais desafiadora: Desenvolvimento da plataforma TELO5. *
- 23. [Yuri Christian Marques] Qual a linguagem mais produtiva no mercado atual para os Devs Back End?
- Não existe linguagem melhor que a outra, existe aquela linguagem que você vai se dar melhor ou a que será requisitada pelo mercado.
Atualmente se tratando de produtividade, velocidade de tratamento das informações, existem diversas linguagens, Ex: Go lang, Framework, Node js, PHP, Python, Ruby e C#.*