Qual a rotina de um programador ?
Nesse artigo, a intensão é pesquisar sobre o processo de construção de um site por um programador, mais especificamente, um desenvolvedor front-end web e assim, conhecer o processo e dia a dia dessa carreira.
Segundo o portal Apex Ensino, do primeiro despertar a seguir a carreira de programação de software é importante conhecer sobre a rotina de um programador.
O desenvolvimento de um software respeita um processo para a criação. Existe uma necessidade de comunicação entre os membros da equipe de desenvolvimento para que o resultado seja o planejado.
O trabalho de um programador iniciante geralmente é acompanhado por um coordenador. Executa funções que tenham complexidade de acordo com as suas competências. Seu gestor é quem irá, aos poucos, aumentar o nível de complexidade dos projetos a serem desenvolvidos pelo novo profissional.
De uma forma geral, o processo de desenvolvimento da equipe que desenvolve para necessidades internas da empresa:
– o cliente tem uma necessidade específica e faz contato com a empresa que desenvolve o sistema.
– o profissional responsável se reuni com o cliente e utiliza ferramentas e metodologias para extrair o máximo de informações e entender a necessidade da realizada onde essa aplicação será utilizada.
– o profissional responsável elabora diagramas, mockups e faz protótipos que serão validados em testes por outros profissionais, e testes em uso em ambiente real, mas ainda como um ambiente observado.
Conforme o tamanho da empresa, as tarefas são realizadas por equipes específicas ou um profissional executa uma ou mais tarefas.
Atuar como freelancer desenvolvedor de software é importante destacar que aconselhado ter experiência e segurança para desempenhar a atividade e entregar um excelente trabalho.
A escola de treinamento Alura Cursos Online, traz alguns relatos sobre a rotina de programadores em São Paulo. Nesse vídeo, foi mais sobre o ambiente de uma empresa que desenvolve aplicações e sobre o universo de exatas que rodeia a programação.
Em outro vídeo, também a programadora Giovana Delfino destaque a programação é a carreira que lhe permite programar o computador a realizar tarefas conforme desejar, é facilitar a vida das pessoas.
Outro vídeo, também da Alura, esclarece que o desenvolvimento front-end é a carreira que faz páginas para web, os sites. Tecnologias como HTML, CSS, JS e os frameworks e bibliotecas de estilização que são apenas a ponta desse iceberg de possibilidades que é possível construir.
O vídeo um emprego front-end reforça a importância de dominar os fundamentos da web e então, realizar desafio práticos para colocar a prova o conteúdo estudado.
O Lucas Montano relata sua rotina como programador, mais especificamente como Senior Engineer na Holanda. O ambiente de trabalho, consegue estudar e o tempo que passa programando.
Lucas inicia ressaltando que a rotina exposta é de um dia médio. Sendo que há dias com piores produtividades e outros, que supera expectativas com entregas incríveis.
O dia dele começa as 06:00, possui uns hacks para a manhã conforme o dia da semana, como ajudar a esposa com o almoço, preparar conteúdo para o canal do Youtube.
As 09:00 sai de casa para ir ao trabalho. Vai para o serviço de bicicleta. Chegando no trabalho, se prepara para uma “Stand Up meeting”, uma reunião do Scrum que acontece com integrantes em pé para alinhar o que foi feito ontem, o que tem concluído, se há necessidade de passar algo para alguém, e se há algum problema que precisa de ajuda, tem duração média de dez minutos.
As 09:40, volta para sua mesa de trabalho com uma caneca de café, e realiza tarefas como, responder e-mail, ajudar outros no trabalho.
Let’s code ! As 10:15 inicia a trabalhar com código, então programar. Focado nessa tarefa de programar até as 11:30, quando inicia o code review e pull request para a branch principal dos projetos.
Ao meio dia para essa tarefa com código, quando vai almoçar, na própria empresa.
O horário de almoço é dividido em se alimentar e depois se distrair com jogos ou sinuca.
As 13:00, inicia a revisão dos pull request, avalia o kanban board do projeto e confere se há algum pedido de ajuda.
As 13:30, Let’s Code Again! Manter focado em programar os próprios tickets. Essa tarefa vai até as 15:00, quando faz outro break de quinze minutos para buscar um café e distrair.
Agora até o final do dia de trabalho, não há distrações. Foco total em solucionar os problemas e situações críticas. Das 15:15 as 17:15 é focado nas próprias atividades. Já ajudou os outros, já desbloqueou tarefas para outras pessoas continuarem.
Quando é 17:15, realiza o push de todos as suas modificações e garante que subiu e verifica possíveis inconsistências.
Então, de 17:15 as 17:30 faz o fechamento do que foi realizado no dia, deixa os detalhes para serem passados na reunião do dia seguinte. E 17:30 vai embora, pontualmente.
Fora do trabalho, ainda no mesmo dia, ou cria conteúdo para o canal ou vai para o cross fit.
Esse vídeo do Lucas é interessante para percebermos que há uma dedicação para codar, mas programador é além disso. Ele ressalva por que são quatro horas de programação o que gera um resultado muito bom. O restante do tempo é para ajudar seus colegas e refletir sobre as soluções adotadas e assim, manter a qualidade do código.
O código que está no pull request aberto deve ser a preocupação, segundo o Lucas, e não abrir uma nova tarefa. O foco deve ser em fazer o merge desse código na branch principal do projeto.
Essas quatro horas de programação envolve também pesquisa, discussões técnicas com o time ou aperfeiçoar algum conteúdo, ler documentação de ferramentas utilizadas.
Até agora, consegui reunir informações interessantes da rotina de um programador, mas ainda não alcancei o esclarecimento da dúvida de qual a rotina de construção de uma aplicação como um todo, mesmo que seja em um cenário perfeito. Vamos mais.
O Canal Programador Br do Youtube trás a diferenciação das rotinas conforme o cenário que o profissional está inserido, ou em uma agência, ou em uma empresa consolidada, ou em uma startup, ou um freelancer.
Devido a possibilidade de atuar em diferentes cenários, ser um programador e logo, sua rotina pode ser bem distintas conforme o universo.
Desenvolver jogos, criar sistema de controle de objetos físicos, programar sistemas já criados, desenvolver sites dentro de uma agência ou um desenvolvedor de sites como freelancer.
O programador dentro de uma agência receberá um modelo do design e seu objetivo será desenvolver um site com aquele visual e determinado comportamento. Na agência há profissionais que analisaram o negócio, traduzirão da forma e a maneira necessário para ser implementada conforme o programador deverá executar.
Já o programador freelancer deverá conhecer o negócio, conversar com o cliente, ter condições de sugerir soluções melhores ou alternativas. Nesse caso, será um consultor de negócios que ao final terá a entrega de um produto que é site.
Em uma empresa menor, a rotina irá se aproximar do freelancer, atuando como uma analista e desenvolvedor.
Esse vídeo aproximou-se um pouco mais do que quero esclarecer. Se trabalhar em uma empresa maior como programador, tenderei a ter mais contato com o código, e receber as solicitações mais especificadas. Se for o caso de trabalhar em uma empresa menor, uma startup ou ocupar uma posição de gestão, terei que realizar atividades de negócio e conhecer o cenário onde aplicação irá rodar antes de ir ao código e até mesmo gerir a equipe de desenvolvimento.
Encontrei um artigo interessante O dia a dia do programador — Tiago Gouvêa que aborda o tema com mais detalhes nessa ótica de como é o dia de um programador.
O artigo não é recente mas aborda a rotina profissional dos desafios diários que ainda são os mesmos. A primeira parte que já me chama a atenção a que ressalta que antigamente, havia um profissional para executar cada parte do processo de desenvolvimento de uma aplicação e que hoje, um profissional executa tarefas de mais de um processo, banco de dados, documentação entre outras. E então ele chega ao ponto que eu queria, as partes de desenvolvimento de uma aplicação, vamos lá.
Análise, Desenvolvimento, Correções, Deploys, Servidores, Debug, Suporte, Estudar, Aprender domínios.
Essas são as partes que o Tiago destacou. Vamos ver o que disse ser cada uma delas porque, conforme foi dito, antes de iniciar qualquer coisa é preciso saber o que deve ser feito.
Na ANÁLISE — “Faz parte do dia a dia conversar com os usuários ou com o cliente, e descrever (mesmo que minimamente) os detalhes do projeto. Qual o objetivo do projeto? Quais dados serão necessários para alcançar esse objetivo? É um aplicativo? Site? Sistema web? Quem irá utilizar? Como serão exibidas as informações? Quais processos são automatizados?
Em empresas, isso pode ser feito mais formalmente, gerando documentos com os quais o cliente assina e concorda, e que serão anexados ao contrato, como pode ser uma etapa simplificada em um modelo ágil de desenvolvimento, onde um requisito será chamado de intenção.”
Em DESENVOLVIMENTO — “É meter a mão na massa. É a maior parte de qualquer projeto de software, porque é onde a coisa realmente acontecem.
Normalmente o desenvolvedor pega uma tarefa para fazer, e então, precisa criar o produto final. Isso pode se dividir em dezenas de tipos de tarefas, tais como interface, front-end, criação da base de dados, implementação de testes e por ai vai.”
Na etapa das CORREÇÕES — “Nem sempre tudo vai como planejado, e quando alguma coisa para de funcionar, quem tem que resolver é você.
Você sabe se é usuário ou não quando começa a ter que descobrir o que causa um erro, e evitar que ele aconteça novamente. Porque, quando se é usuário, um erro que acontece significa apenas que você deve clicar em “ok”, fechar, entrar novamente e torcer pra funcionar.
Quando é um desenvolvedor você terá que se lascar para entender o que causou tal falha, e, acredite, podem ser milhões de coisas diferentes … desde um erro em seu código, como um problema com o sistema operacional, uso de memória, atualização de softwares de terceiros ... alguns erros quando acontecem você já sabe exatamente o que causou, mesmo sem ver ainda o código.
Já outros, você passa horas tentando resolver e não consegue, não é brincadeira. Acontece também de resolver um problema sem saber exatamente o que fez, mas é bem raro.
No desenvolvimento de software, os bugs são coisas comuns. Faz parte disso. Cada software é 99,999% diferente de qualquer outro porque o código é resultado do raciocínio de quem faz. Então é quase impossível haver semelhanças na forma como uma e outra pessoa faz. Dai, erros acontecem, porque não tem como se prever todas as situações.”
Pronto. Já conversamos com o cliente para levantar os detalhes e requisitos que formulam o desafio dessa aplicação. Foi realizada as análise baseado nas metodologias e ferramentas que essa etapa exige e então, iniciado o desenvolvimento da aplicação. E agora, a revisão do código é para realizar a tarefa necessária, corretamente e, se possível, da melhor forma possível e com qualidade.
Partindo da situação que o código foi revisado e está funcionando normalmente, vamos a próxima etapa.
Fazer o Deploy da aplicação — “Tudo pronto. Hora de liberar a aplicação para o cliente usar, enviar ao servidor, instalar nos computadores ou coisa do tipo.
É hora de tirar da máquina do desenvolvedor e deixar o usuário começar a utilizar. Aqui também muita coisa pode dar errado. Antigamente, um software era feito para funcionar no DOS, depois no Windows … depois podia ser Windows, Linux ou iOS … hoje são centenas de opções, incluindo servidores, dispositivos móveis (smartphones/tables), televisores e outros tantos. É bem comum seu software ter que funcionar em vários ambientes, ou ter integração entre um e outro (API).
Depois de publicado, existem outros deploys, cada nova versão precisa ser enviada para os usuários e o processo é mais ou menos o mesmo, com um grande detalhe, agora não pode falhar porque existem pessoas utilizando.
Se você sobe uma versão e tudo para de funcionar, é um caos, e você terá que lidar com isso. Em muitas empresas as pessoas que podem publicar os produtos são poucas, porque é preciso ter uma visão bem clara de como a coisa toda funciona.
Por exemplo, você atualiza o sistema Web e quando vai abrir, a pagina fica em branco. Sem nenhum carácter sequer. Um programador experiente sabe que podem ser dezenas de coisas, mas já tem uma sequência de verificação, depuração, que em poucos minutos dirá para ele onde a coisa quebrou.”
Na etapa de estruturar o Servidor — “ Como eu disse, existem centenas de ambientes hoje … quando falamos de servidores a coisa é bem mais complexa. Os bons desenvolvedores sabem lidar com servidores, acessam o shell (terminal) e executam comandos, instalam serviços, configuram seu funcionamento, verificam falhas, monitoram o desempenho e ainda precisam garantir que tudo isso é seguro.
Você pode pensar que isso é papel da infra, e realmente é. Mas o desenvolvedor precisa saber onde seu software irá rodar, quais as peculiaridades daquele ambiente, daquele tipo de servidor e sistema operacional. Isso diferencia os simples programadores dos programadores ninjas.”
Nesse momento, temos a aplicação funcionando corretamente, o ambiente do servidor configurado e também funcionando corretamente, e o cliente usando em produção, atendendo o pedido e mais que isso, resolvendo o problema com qualidade.
Continuando, temos mais etapas.
Mesmo depois de tudo estar funcionando, podemos nos deparar com erros. Isso por que aconteceu algo que não tinha acontecido até o momento, da forma e com o cenário dessa maneira, especificamente. Então, vamos a etapa de debugar.
O Debug — “Já falei um pouco disso, mas aqui é um nível de detalhe mais perto. Quando você está resolvendo um bug [ erro em software ], você não sai mudando tudo e vê o que acontece … você segue um processo (totalmente seu) de depurar [ debugar ], de ver onde o problema acontece, porque acontece e como fazer para que ele nunca mais aconteça.
Esse é sem dúvida um dos momentos mais curiosos da programação. Muitas vezes, você fica completamente imerso em entender exatamente porque uma falha acontece e na depuração entende, descobre coisas incríveis.
Você aprende muito nesta hora porque acontece do problema ser devido a algo que você não entende muito bem, sendo preciso ir estudar uma biblioteca ou recurso, para só então entender o problema, e depois buscar uma solução.
Não sei se isso parece simples, lendo assim ... mas te garanto. É bem complexo e exige concentração e inteligência.
Um erro em um app, pode ser desde um problema no celular do usuário, uma peculiaridade da versão do sistema operacional que ele está usando, um bloqueio na rede que impede um dado de ser obtido, até algo no servidor que por algum motivo não entrega o dado que deveria, que o aplicativo espera.
Tudo isso pode ser testado no desenvolvimento mas nunca você terá um teste que cubra todas as possibilidades, e quando uma falha acontecer … você terá que depurar.”
O serviço de Suporte — “Alguém precisa fazer, e muitas vezes será você. Lidar com o usuário final pode ser extremamente cansativo. Alguns usuários não sabem utilizar computadores, outros não sabem se expressar, ou não entendem bem o que você quer dizer.
Dai essa interação é, costumeiramente, bem chata. O bom usuário nunca te liga, nunca te manda um email porque ele simplesmente entende o sistema e usa.
Programadores gostam de programar, então lidar com usuários e dar suporte não é algo divertido.”
Essa etapa de atendimento ao cliente é um grande desafio que, normalmente, evitado pelo pessoal de tecnologia, que na maioria das situações, se dá bem com outros da mesma área, quando a interação é com alguém que desconhece esse universo, é uma tarefa evitada, e muitas vezes recusada.
Gosto desse momento de interação. Acredito que minha experiência no início da vida adulta com áreas comerciais e também, com atendimento especializado, me fazem agradar também dessa etapa.
A próxima tarefa que compõe a rotina de um programador é o ingrediente presente em todas as carreiras de alta performance e resultados surpreendentes, tanto de satisfação e produtividade, quanto em remunerações.
O programador ESTUDA todos os dias — “Acredite, você fará isso todo dia sendo um programador. Pra mim, essa é uma das partes boas. Quando posso aprender coisas novas é uma maravilha.
Tento sempre incluir alguma tecnologia nova em cada projeto que inicio, assim me mantenho aprendendo sempre e também fico atualizado. Mas o que acontece é que a todo tempo você precisa entender um pouco mais do que está fazendo, de como tornar mais rápido, mais seguro, mais flexível, mais fácil de entender, de usar, com melhor visualização … e tudo isso se resume em aprender sempre.
Essa é uma das principais características dessa profissão, você nunca para de estudar.”
Voltamos ao o que o Lucas Montano disse no vídeo dele que citei mais para cima desse artigo. Estudar é uma tarefa presente em todos os seus dias, faz parte de sua rotina diária.
A próxima etapa é para reforçar ainda mais a importância de se estudar todos os dias. O programador que trabalhar em uma empresa que desenvolve aplicações Fiscais irá estudar sobre esse universo para saber aplicar essas regras no sistema.
Aprender domínios — “Sabe como funciona uma indústria química? E uma empresa de contabilidade? Questões ficais, já parou para entender? E sobre diagnóstico por imagem?
Nessa vida de programador, frequentemente, você precisa aprender um domínio novo, ou seja, aprender sobre uma área de conhecimento para então desenvolver alguma solução.
Um bom programador domina várias áreas de conhecimento, porque em algum momento já precisou criar alguma solução para aquele segmento.
A facilidade de aprender ai fará a diferença, você precisa estar realmente aberto a conhecer coisas novas.”
Acredito que agora sim, muitas das minhas dúvidas foram esclarecidas. Vou continuar pesquisando alguns detalhes sobre essa rotina de programador e volto aqui para completar, se for o caso.
A empresa GW2D desenvolvimento web escreveu um artigo que conta sete etapas da criação de um site. Por ser uma empresa onde o serviço vendido é criar sites conforme a necessidade de seus clientes, acredito que é um texto interessante a ter minha atenção.
Clientes procuram os serviços da GW2D mas nem imaginam como funciona o processo de criação de seus sites. A empresa disse que gosta de envolvê-los em todas as etapas, uma vez que cada site é personalizado e exclusivo, feito com a cara e a essência de cada um dos clientes.
A primeira etapa é Ouvir o cliente + Briefing — “Sem dúvidas uma das etapas mais importantes para que um site seja bem feito e represente bem a imagem de uma empresa ou marca, é a comunicação.
É muito importante que fique claro entre criador e cliente qual o objetivo por trás do site, qual a história da empresa, concorrentes, referências, e todo um conjunto de informações que devem estar completas para que o produto final seja eficiente quanto aos objetivos e transpareça a imagem da empresa.
Além do briefing em si, que é uma espécie de formulário onde o cliente preenche com as informações relevantes para a criação do seu site, também é essencial que haja uma conversa entre as partes.
Muitas vezes grandes sacadas e ideias podem vir de uma conversa, por isso, é indispensável que a comunicação também seja feita ao vivo ou por telefone.”
Essa primeira etapa é a comunicação que deve estar presente durante todo o processo de criação e até mesmo, após a entrega, deve haver uma comunicação eficiente entre as partes.
A parte dois é Conteúdo (Pesquisa de Mercado + SEO) — “Criar conteúdo para um site não é simplesmente sentar e escrever sobre a empresa e sobre seus produtos e serviço.
Para que o site tenha competitividade e seja mais facilmente encontrado pelo público-alvo, é muito importante que seja feita uma análise de concorrência, uma pesquisa de mercado e a aplicação do famoso SEO.
Através da pesquisa de mercado e do briefing, o conteúdo é inicialmente criado, e depois otimizado através de técnicas e ferramentas de SEO (Search Engine Optimization), que ajudam para que o site seja encontrado através das palavras chaves do segmento em que está inserido.”
Na terceira etapa é quando começa toda a diversão da criação, Layout + Design — “Após criado o conteúdo, é criado o mapa do site, também chamado de Wireframe.
O wireframe é uma espécie de “maquete” virtual do site, ou seja, é um rascunho que desenha onde cada imagem, texto e botão será inserido. Esta etapa é importante, pois é baseado neste wireframe que o designer vai seguir com suas criações.
Usando o wireframe e o template escolhido, o designer entra em ação criando um site personalizado, misturando uma tabela de cores, imagens e textos que sejam coerentes com a essência do cliente”
Lembrando o que foi dito anteriormente nesse artigo, nessa etapa, foi citado diversos nomes, como o criador de conteúdo, o criador do wireframe, o designer para os mockups podem ser feitos por diversos profissionais ou pelo mesmo profissional, dependendo da empresa e cenário que estamos tratando.
Como estamos falando sobre rotina de programador, a próxima etapa é a codificação, onde o que foi criado pelo design em formato de imagem será colocado em prática e dado vida pelo programador. Não serão apenas imagens mas sim, um sistema com ação e resultados.
Etapa de Codificação — “A etapa de programação consiste em codificar as funcionalidades já definidas previamente, sempre baseando-se no wireframe e também no design do site.
Programar consiste em transformar as imagens e layout criados pelo designer em códigos interpretáveis pelos navegadores. Existem dois tipos de linguagens interligadas utilizadas neste universo: a HTML e a CSS.
Muitas vezes os sites são criados em templates previamente codificados, mas sempre é necessário que alterações sejam feitas para incorporar as funcionalidades personalizadas de cada cliente.”
Os códigos não sairão mais de cena da rotina que estamos detalhando.
A quinta etapa é o momento de Programação + Testes — “É nesta etapa que os códigos de CSS e HTML escritos entram em ação de fato, ou seja, são aplicados e criam a dinâmica do website.
São criados e incorporados sistemas e plugins necessários, além de todas as funcionalidades do site, montando a primeira versão oficial do mesmo.
Site pronto, hora de testar. É através dos testes que os programadores conseguem definir se o site está mesmo pronto para publicação ou precisa de ajustes.
Ajustes feitos e site aprovado, hora de publicar.”
Etapa da Publicação — “Conteúdo, layout, design, programação e funcionalidades aprovadas? É chegada a hora de publicar, o que envolve a contratação de um domínio, que é o endereço do seu site (www.dominio.com.br) e também da hospedagem em servidores que tornarão seu site visíveis para os usuários da web.”
Até chegar aqui, estamos com a aplicação no ar e sendo utilizada conforme era a necessidade no início desse processo. Mas foi o que dizemos anteriormente, o trabalho do programador não termina com a entrega da aplicação.
A etapa sete é a de Manutenção — “Após a publicação do site é importante fazer a manutenção periódica do website, a fim de garantir que todos os recursos do mesmo estejam funcionando e também que os conteúdos e imagens sejam atualizadas, sempre mantendo o foco no interesse do seu público alvo no seu universo, e acompanhando as tendências e mudanças do seu segmento e também da criação de sites”.
Um site torna digital uma empresa, um profissional e permite ganhar o mundo. Pronto. Agora sim. Tirei minhas dúvidas. Meu próximo passo será detalhar essas etapas nesse processo de construção de aplicações. Espero que tenha gostado. Deixe seu aplauso. Até o próximo artigo e ótimos códigos. douglasabnovato