Friday, July 25, 2014

Dicas de comunicação para programadores

A habilidade de se comunicar bem é tão importante na carreira de um programador quanto a de produzir bom código. Pensando bem, elas estão bem interligadas, já que o código pode ser visto como uma mensagem entre os programadores que escrevem e mantém um programa: ele comunica a intenção dos seus autores.


Ser um bom comunicador não significa ser uma pessoa que fala muito. E ser uma pessoa que fala muito também não significa ser alguém que se comunica bem. Uma pessoa pode falar muito e transmitir pouco ou nada útil, enquanto outra pessoa pode falar pouco mas conseguir ser melhor entendida.


Além de expressar-se de forma clara, comunicar-se bem envolve ouvir e compreender o que está sendo dito. Porque comunicação não é upload de um comunicador para uma audiência. Comunicar é um processo de construção: o comunicador e seus interlocutores constroem juntos uma visão, a partir das ideias que estão na mente de cada um e da troca de mensagens.


conversation-not_upload.jpg


Podemos dizer que comunicação abrange todos os aspectos do trabalho de um programador. Você usa suas habilidades de comunicação quando escreve código para outras pessoas lerem, quando faz perguntas para tentar descobrir o que precisa ser feito, quando reporta o andamento das suas atividades para seu supervisor, quando precisa entender o que outra pessoa fez, seja para fazer modificações ou para integrar com o programa que você está fazendo. Todas essas situações põem à prova nossa capacidade de se comunicar, e é gratificante quando conseguimos desempenhar bem essas tarefas.


Melhorar nossa habilidade de comunicação é despertar em nós mesmos a capacidade de se colocar no lugar dos outros. Praticar empatia com as pessoas ao nosso redor: nossos colegas, nosso chefe, nossos usuários e nossos clientes.


listening-quote_art_of_conversation.jpg


Envolve também ler e praticar escrita, tentar descobrir o que funciona e o que não funciona. Grande parte de nossa comunicação é por escrito, então é legal que pratiquemos nosso músculo de escritor, que é mais atrofiado do que os outros.


Seguem algumas ideias que você pode pôr em prática para melhorar sua comunicação:


Caso não entendeu, não fique tentando adivinhar, pergunte. Às vezes você pode ficar sem entender e com medo de parecer burro se não perguntar. Tente superar isso, porque vale a pena: é bem melhor parecer um pouco idiota mas entregar a coisa certa do que ficar tentando adivinhar e trabalhar na coisa errada -- isso sim que não é inteligente.


Repita de volta para o interlocutor o que você entendeu, usando suas próprias palavras. Essa é uma coisa simples de lembrar e que ajuda bastante a evitar mal-entendidos. Essa dica é útil especialmente quando você está conversando com alguém que ainda não conhece muito bem (por exemplo, um cliente). Com o tempo, você terá uma ideia melhor de como a outra pessoa pensa, podendo mesmo usar um vocabulário mais adequado para se comunicar com ela.


Quando criticar, critique comportamentos em vez de indivíduos. O ser humano é complexo, e você não sabe pelo que as outras pessoas estão passando. É bom aprender a criticar de maneira construtiva e a receber críticas também. Confesso que esse é o item dessa lista mais desafiante para mim, por isso não posso recomendar muita coisa. Aqui provavelmente cabe consultar alguém que você confie mais. =)


Procure entender o máximo possível sobre o negócio do cliente. Essa dica é especialmente importante para quem trabalha em sistemas grandes, onde os conceitos do negócio podem ser tão complicados e cheios de detalhes que é comum algumas pessoas se frustrarem, pensando: "isso está muito fora da minha alçada, o meu negócio é programar". Mas vale a pena se esforçar para dominar o vocabulário que o seu cliente usa, facilita muito a comunicação e pode mesmo ser um diferencial competitivo: um cliente deve ficar bastante satisfeito quando consegue conversar com alguém que o entende.


Participe em fóruns, listas de discussão, StackOverflow ou algo do tipo. É uma boa maneira de obter feedback sobre sua capacidade de compreender e ser compreendido por escrito. Você aprende muito com os outros, às vezes outra pessoa diz essencialmente a mesma coisa que você já disse mas de forma que as outras pessoas entendem mais fácil. Isso é muito bom, porque você pode comparar, tentar descobrir o que fez a diferença e aplicar na próxima vez.


Pratique digitação. Essa ideia parece não ser muito óbvia para muita gente. Mas trata-se de aritmética simples, mesmo. Além de código, produzimos outras coisas digitando no nosso trabalho: emails, testes, documentação, bug reports, etc. Se você digita devagar, escrever se torna duas dores: a dor de pensar no assunto que você está escrevendo e a dor de digitar muito mais lento do que você pensa. Você acaba sacrificando qualidade em todas essas coisas sem nem perceber. A boa notícia é que é fácil de resolver isso. Praticando digitação por apenas algumas semanas, você já poderá escrever um pouco mais perto da velocidade que pensa. Isso torna o processo de escrever menos doloroso, o que permite a você se dar ao luxo de escrever emails com mais de uma linha, bug reports super completos, documentação tão detalhada quanto necessário e assim por diante.


Leia livros e blogs, assista vídeos, ouça podcasts, enfim, aproveite o conhecimento e a generosidade de outros com mais tempo de estrada. Isso ajuda a ganhar vocabulário e se articular melhor. Tomar um tempinho para ler e refletir sobre o seu ofício é um bom investimento a longo prazo, e com o hábito, pode ser mesmo divertido.

Bem, escrevi este texto também para mim mesmo -- sou o primeiro a reconhecer que devo melhorar nessa área. Mas espero que ele ajude a apontar áreas em que possamos melhorar, ou dar ideias para quem esteja em dúvida por onde começar.

Obrigado Valdir, Penkal e Zé, pela revisão. =)

Saturday, December 14, 2013

Sobre qualidade


A qualidade de um software é um feito técnico, e é diretamente proporcional à qualidade das pessoas trabalhando nele. Melhorar nossa qualidade como desenvolvedor é a maneira mais efetiva de melhorar a qualidade dos nossos projetos.

Minha impressão é que quando as coisas não saem tão bem como poderiam, temos a tendência muitas vezes de achar que precisamos de um processo bem definido, de ferramentas melhores, de uma linguagem melhor, e não nos damos conta de que talvez o problema seja que simplesmente não estamos sendo bons desenvolvedores.

Perto do impacto de uma implantação de um processo de desenvolvimento, uma melhora na qualidade dos desenvolvedores causa um impacto muito maior na qualidade do software sendo desenvolvido.

Essa melhora que buscamos para nós mesmos. E essa busca que sonhamos inspirar em todos os desenvolvedores que venham a ler esse blog.

O que podemos fazer para melhorar?


Existem várias maneiras para se melhorar como desenvolvedor. O resumo delas é: mantenha-se curioso, mas não perca demais o foco. Isto é, aprenda coisas novas, mas não se deixe sempre levar pela onda de novidades -- às vezes, vale a pena investir em ideias e tecnologias velhas.

Caso esteja com poucas ideias sobre o que fazer para melhorar sua qualidade como desenvolvedor, aqui vão algumas:

  1. Leia um livro técnico; insista em ir até o fim. Pode ser sobre qualquer assunto, mas caso esteja na dúvida, pegue um livro sobre uma tecnologia que você esteja usando no trabalho. É importante dominar as ferramentas que você está usando, e livros técnicos são uma boa maneira de economizar tempo arrumando problemas e pesquisando soluções mais tarde.
  2. Caso ainda não esteja muito a vontade com inglês, aprenda inglês o suficiente para ler um livro técnico com boa compreensão. É bom estar confortável lendo livros e não ficar apenas com o conhecimento básico de inglês para “adivinhar” o manual técnico.
  3. Participe em uma comunidade online -- fóruns, listas de e-mail, StackOverflow. Faça perguntas. Responda outras. Participe em discussões pseudo-“inúteis”, ouça o que os outros pensam e tenha o bom senso de deixar a discussão quando apropriado. Sua capacidade de trabalhar bem com outras pessoas é o que faz ou destrói sua carreira. Humildade, respeito e confiança são valores a serem cultivados para um time de sucesso. Portanto, pratique a comunicação! =)
  4. Faça um curso massivo online, como os disponíveis no Coursera ou Udacity -- existem cursos sobre diversos assuntos e em vários níveis, que abrangem desde os fundamentos até áreas mais específicas.
  5. Aprenda linguagens diferentes. Rejeite a linguagem que você odeia com propriedade (isto é, descubra precisamente o que é que incomoda tanto), e sempre lembrando que outras pessoas podem ser muito bem sucedidas com ela. Curta a sua linguagem favorita da mesma forma, conhecendo as vantagens e desvantagens, e aprenda como lidar com as desvantagens.
  6. Pratique programação em pares. Faça isso com programadores mais experientes e com menos experientes também. Aprenda com todo mundo.
  7. Pratique programação sozinho também. Faça programas só por fazer, reinvente a roda só porque você pode, crie alternativas a softwares que você conhece e acha que pode fazer melhor. É saudável se divertir fazendo programas mesmo que pareçam inúteis. Mas pode não ser saudável tentar inseri-los na empresa que você trabalha, portanto, proceda com cautela.

Quando estiver fazendo qualquer uma dessas coisas, lembre-se que a sua intenção e sua atenção que farão a diferença. Para ter os bons resultados, certifique-se da sua intenção de melhorar e de dispensar a atenção necessária para a tarefa: são os únicos ingredientes indispensáveis, e quanto mais deles melhor. =)

E à medida que você melhora, o trabalho de desenvolver fica cada vez mais gratificante e prazeroso. Vale a pena investir na sua qualidade, melhorar a si mesmo e ajudar quem está perto de você a melhorar também.


Foram inspirações para esse post:

Valeu pela revisão, Zé e Penkal.