fbpx

vamos conversar?

O Papel do Programador no Time de Produto

Tempo de leitura: 12 minutos

No quarto artigo da série sobre o time de produto, iremos explorar o papel do Programador. Nosso objetivo é focar nas dúvidas que surgem sobre o trabalho desse profissional, as ferramentas utilizadas e os tipos de programação. Para isso, reunimos um time de especialistas que atua no desenvolvimento de produtos e serviços digitais na SoftDesign.

No primeiro artigo desta série, exploramos os perfis, papéis e conhecimentos necessários a um time de produto. Já no segundo, abordamos a importância de Product Owners (PO) na jornada de desenvolvimento, seguido pelo terceiro artigo, que mergulha no universo de Designers. E, para completar a série, ainda falaremos sobre o trabalho desenvolvido por Testers e Product Marketing Managers.

O que um Programador realmente faz?

Uma Pessoa Programadora trabalha, principalmente, escrevendo o código do software – conjunto de instruções que são interpretadas pelo computador. Para escrever tais códigos, é preciso utilizar linguagens e seguir suas regras e estruturas. No geral, esses profissionais conhecem e utilizam, então, mais de uma linguagem específica no seu dia a dia como, por exemplo, Python, Java, C# e JavaScript.

Além de escrever o código que dá origem as telas e regras de negócio dos produtos, um Programador também desempenha tarefas como:

  • Escrever o código de testes unitários – que é um pequeno pedaço de software que testa cada parte do software original;
  • Criar e alterar a estrutura de bases de dados;
  • Configurar ferramentas de apoio – o que geralmente também envolve escrever código;
  • Trabalhar junto com o time para ajudar a pensar as melhores soluções para os desafios do produto.

Então para programar basta aprender uma linguagem?

Não basta somente saber a língua. O Programador também precisa entender o paradigma daquela linguagem, o seu ‘jeito de pensar’. Existem paradigmas funcionais, declarativos, entre outros, e cada um exige habilidades diferentes. Em uma analogia bem simples, podemos dizer que português e espanhol são duas línguas do mesmo paradigma; entretanto, o chinês – que tem estrutura gramatical totalmente diferente e nem sequer tem o conceito de alfabeto – é considerado outro paradigma.

Além de dominar o paradigma e a linguagem, deve-se também dominar as suas bibliotecas e frameworks. As bibliotecas são conjuntos de funções que visam facilitar a codificação, já os frameworks contém uma estrutura inicial que acelera e padroniza o desenvolvimento.

Sendo assim, já sabemos que as Pessoas Programadoras conhecem paradigmas, linguagens e frameworks. Mas, além disso, é preciso também conhecer uma série de ferramentas.

Quais são as ferramentas que um Programador usa?

Muitos acreditam que basta abrir um editor de texto e sair escrevendo. Entretanto, o ambiente de desenvolvimento também tem sua complexidade e, claro, todo um conjunto de ferramentas específicas.

  • IDE (Integrated Development Environment) ou Ambiente de Desenvolvimento Integrado: reúne várias das funções necessárias para o trabalho: editor, compilador, depurador – ferramentas que ajudam a organizar a refatoração e a criação de testes. Exemplos: VS Code, IntelliJ e XCode.
  • Repositório: lugar onde está guardado o código fonte do software. Cada Pessoa Programadora tem uma cópia desse código fonte no seu computador. Durante o processo de desenvolvimento, várias versões são trabalhadas em paralelo, para depois serem reunidas em uma versão estável para produção. Todo o histórico, alterações e versões ficam salvas nesse repositório compartilhado. O mais conhecido atualmente é o Git, que está presente nas ferramentas GitHub, Gitlab e Bitbucket.
  • Virtualização e Containerização: ferramentas que permitem codificar a infraestrutura. Assim, é possível ter o ambiente de produção rodando em nosso computador ou implantar o ambiente de produção rapidamente, com garantia de que está correto.
  • Orquestração ou Pipelines: ferramentas que ajudam a automatizar processos. Uma alteração no software precisa ser enviada para vários ambientes ao longo do ciclo de trabalho. Inicialmente, estão em desenvolvimento, e depois passam para revisão e ambientes como testes, homologação, produção, entre outros. Os processos de implantar e remover devem ser automatizados por meio de ferramentas de Orquestração (Jenkins) ou Pipelines (Gitlab, Azure DevOps).

Para William Guimarães, Programador e Arquiteto da SoftDesign, o uso correto dessas ferramentas é essencial nos dias de hoje. “Antes, era comum ouvir dos Programadores coisas como: ‘isso funciona na minha máquina’ ou ‘não sei como esse erro reapareceu depois de ser corrigido’. Isso era dito quando o sistema rodava normalmente na máquina de desenvolvimento, mas apresentava um comportamento inesperado na produção”.

Quais as diferenças entre um Programador e um Arquiteto?

Geralmente, uma pessoa responsável por arquitetura é alguém que tem larga experiência em Desenvolvimento de Software. Porém, não basta somente acumular vários anos de programação: é necessário estudar e ampliar seu ponto de vista e habilidades.

No caso da Arquitetura de Software, podemos fazer uma analogia com a construção civil. São pessoas arquitetas e engenheiras quem pensam a estrutura, a modelagem, as camadas e conexões. Assim como em um prédio esses profissionais precisam reunir diversos conhecimentos (elétrica, hidráulica, estrutural), o Arquiteto de Software precisa considerar e analisar disponibilidade, segurança, continuidade, tolerância a falhas e muito mais.

Depois que as ‘plantas’ são desenvolvidas por um Arquiteto, um Programador pode então construir tudo que é necessário, de acordo com essa visão estrutural. É claro que no software, a estrutura não é tão concreta quanto em uma ponte ou prédio; por isso, Arquitetos e Programadores estão sempre interagindo nas tomadas de decisão que surgem a cada Sprint.

Quais as diferenças entre um Programador e um Engenheiro DevOps?

Na verdade, DevOps é uma filosofia de trabalho onde Desenvolvedores e pessoas de Operação trabalham mais próximas para evitar gargalos e erros. O objetivo é automatizar o trabalho operacional ao máximo possível. No entanto, atualmente, existe um volume de trabalho tão grande de configuração e automação que surgiu no mercado um novo profissional: a Pessoa Engenheira DevOps.

Tal profissional também escreve código, mas não é o código das telas, regras ou processos do sistema em si. Trata-se do código de automação dos Pipelines: processos de publicação e criação e monitoramento da infraestrutura.

Quais as diferenças entre um Programador e um DBA?

Um DBA ou Administrador de Banco de Dados é um profissional especializado em banco de dados. Quando estamos no início de um projeto, ou trabalhando em um produto pequeno, é normal que as próprias pessoas de programação sejam responsáveis por criar e manter esse banco.

Porém, quando a demanda aumenta, os requisitos ficam mais desafiadores ou o produto torna-se complexo, é importante ter uma pessoa mais especializada que atue na estruturação do banco de dados e na sua manutenção e otimização.

Quais as diferenças entre um Programador e um Desenvolvedor?

Para muitos, esses nomes significam a mesma coisa. Se usarmos a definição que vem do Scrum, podemos dizer que Desenvolvedor é um nome mais genérico para todo mundo que participa de alguma forma do desenvolvimento de uma solução, mesmo que não escreva códigos. Já Programador é uma função específica de quem escreve o código. Em resumo, todo Programador que participa de um time (squad) – e está preocupado com o ciclo de vida da entrega do software além do código – pode também ser considerado um Desenvolvedor.

Como o Programador interage com o resto do time de produto?

Esse papel já não é mais associado a pessoas introspectivas, tímidas e de difícil comunicação. Na verdade, hoje em dia quem programa tem uma participação relevante no time de produto. Por exemplo:

  • Ajuda a Pessoa de Produto a avaliar a viabilidade de ideias ou pensar opções de soluções;
  • Participa ativamente das cerimônias de planejamento do trabalho do time;
  • Colabora com os momentos de interação com stakeholders, como a Review;
  • É protagonista nas reuniões diárias, discutindo impedimentos e planos para atingir os objetivos da Sprint;
  • Apoia a melhoraria de processos, por meio de discussão nas Retrospectivas.

Para Felipe Schultz, Programador da SoftDesign, a colaboração é muito importante. “A participação ativa dos Programadores em todo o ciclo de vida do produto é um dos conceitos-chave da agilidade e traz muito impacto no resultado das entregas”, ressalta.

Bruna Nunes, Programadora da SoftDesign, também acredita na importância da cultura de cocriação. “Um ponto crítico é a colaboração, que precisa acontecer diariamente entre Pessoas Programadoras Front-End e Pessoas Designers. Essa troca é essencial para tomar decisões que equilibrem a usabilidade e a complexidade técnica”.

Por que o ideal é ter mais de um Programador no time?

O código de um produto geralmente é escrito em mais de uma linguagem. Logo, exige o uso de várias ferramentas integradas e a criação do ambiente de trabalho. Raramente uma pessoa sozinha será boa em todas essas frentes. Sendo assim, é melhor unir profissionais que tenham diferentes especialidades. Além disso, o código de um produto de software é naturalmente grande e complexo. Ou seja, ter apenas uma pessoa conhecendo todo o código é um risco estratégico para qualquer produto ou empresa.

Por fim, é importante seguir uma prática do eXtreme Programming (XP) chamada ‘propriedade coletiva do código’: mesmo que existam pessoas no time com determinadas especialidades, elas não podem ser vistas como donas de um pedaço do código. Todo o time precisa conhecer e se sentir dono de todo o produto para melhorar o compartilhamento de conhecimento, a qualidade do código e a padronização.

Quais são os principais tipos de Programadores?

Essa não é uma categorização oficial e estanque, mas é muito usada no mercado e pode ajudar a entender melhor as diversas especialidades:

  • Pessoa Programadora Mobile: especialista em tecnologias para dispositivos móveis, geralmente está bem familiarizado com os desafios específicos dessa plataforma e com os seus padrões de usabilidade. Pode trabalhar com tecnologias nativas de iOS e Android ou com tecnologias híbridas, como React Native ou Flutter.
  • Pessoa Programadora Back-End: especialista em construir toda a parte por trás do software (aquela que não vemos), composta pelas regras de negócio, processamentos, cálculos, validações, entre outros. Geralmente, essa pessoa trabalha criando serviços e APIs. Algumas linguagens que pode conhecer são Java, Kotlin, C# ou JavaScript, e pode estar trabalhando com frameworks como .NET, NodeJs ou Spring.
  • Pessoa Programadora Front-End: especialista em criar as interfaces de usuário (telas) e suas validações e interações, além da integração entre essas telas e o Back-End. Geralmente, conhece bem HTML, CSS e JavaScript. Pode trabalhar com frameworks como React, Angular ou Vue.
  • Pessoa Programadora Full Stack: trabalha construindo tanto Back-End quanto o Front-End das aplicações. Também costuma se dizer que um Programador Full Stack tem bom domínio sobre todo o ciclo de vida do produto, configurando ambiente e Pipeline.

Programação na SoftDesign

Em nosso processo de trabalho, Pessoas Programadoras participam desde a fase de experimentação – onde apoiam a construção de MVPs Low-Code do produto – até a fase de Desenvolvimento de Software. Na SoftDesign, a nossa maior missão é entregar produtos que serão usados, amados e que geram valor. Para isso, profissionais competentes, engajados e colaborativos são essenciais.

Se você precisa de ajuda para desenvolver produtos de sucesso, entre em contato conosco por meio do formulário abaixo. Juntos, iremos conectar tecnologia, design e estratégia!


Sugestões ou críticas para nosso blog? Entre em contato pelo endereço [email protected]

Foto do autor

Pâmela Seyffert

Marketing & Communication na SoftDesign, Jornalista (UCPEL) com especialização em Gestão Empresarial (UNISINOS) e mestrado em Comunicação Estratégica (UNL). Especialista em comunicação e criação de conteúdo.

Deseja receber novidades sobre

DESIGN, AGILIDADE e TECNOLOGIA?

SoftDesign