PT EN
Publicado dia 19 de abril de 2022

O Papel do Programador no Time de Produto

| Tempo de leitura 10 minutos Tempo de leitura 10 minutos
Desenvolvimento de Software Negócios Digitais
O Papel do Programador no Time de Produto

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.

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:

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.

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:

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:

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!

Vamos conversar?

Entre em contato e vamos conversar sobre seus desafios de TI.

Entenda Melhor o Papel de Cada Profissional

arquiteto de software dba desenvolvedor devops produtos digitais programação Programador time de produto
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.

Quer saber mais sobre
Design, Estratégia e Tecnologia?