Truques simples para melhorar a eficiência de codificação

Há um fenômeno estranho que surgiu entre os editores de software. Parece haver uma tendência para as pessoas inverterem sua compreensão do que torna um produto de qualidade melhor, ou pelo menos isso é verdade quando se trata de quem faz o marketing. É algo como: “Seu produto tem um milhão de linhas de código, mas o nosso tem dois milhões, então, portanto, nosso produto deve ser melhor”.

Ninguém sabe de onde veio esse tipo de pensamento "mais é mais", quando no passado todos trabalhavam duro para criar uma filosofia "menos é mais". Provavelmente começou com o jornalismo de consumidor, porque muitos escritores tentam impressionar o público citando grandes números. Para a maioria das coisas, isso funciona - esta pequena unidade flash contém X terxos de dados, essa CPU pode processar 200 bilhões de instruções por segundo - e os escritores nem sempre são tecnologicamente experientes o suficiente para entender que o mesmo não se aplica ao código-fonte.

Mas eficiência na codificação não é apenas sobre a criação de algoritmos apertados. Também é sobre ser capaz de reduzir o desperdício. Isso significa desperdício em termos de quanto tempo você gasta corrigindo problemas, desperdício em termos de consumir muitos recursos do computador e até desperdício em termos de quantas caixas de pizza sua equipe acumulou no escritório até o final da semana. O ideal é que você queira reduzir todas essas coisas.

Então, o que vamos dar uma olhada neste artigo será o que você poderia fazer para melhorar a eficiência e aumentar a produtividade.

1. Construa um ambiente de trabalho propício

Cada codificador está trabalhando em circunstâncias únicas, e nossos leitores são um grupo muito diversificado, então será mais fácil para alguns de vocês implementar essas sugestões do que para outros.

Se você é um freelancer, parabéns, porque você já é dono do seu próprio ambiente de trabalho. É claro que isso vai mudar quando você for visitar um cliente e tiver que trabalhar no local, mas ainda assim é uma boa posição se você puder ter sucesso nisso.

Se você é o gerente de uma equipe de desenvolvimento, essas sugestões também podem ajudar a levar sua equipe à eficiência máxima. Ou, se você for um funcionário de uma equipe de desenvolvimento, convém sugerir algumas dessas ideias para o seu gerente ou, pelo menos, enviar um link para essa página e esperar pelo melhor.

Considere permitir que os membros da equipe se comuniquem

A programação é em parte um exercício de lógica, mas é ainda mais um desafio criativo. Os melhores programadores podem empregar cada lado do cérebro em igual medida para qualquer tarefa. A ciência reconhece há muito tempo que as pessoas criativas fazem o melhor trabalho à noite e é algo que todos nós já experimentamos. Então, por que a maioria dos gerentes insiste em uma rotina tradicional 9 para 5?

Na verdade, já sabemos a resposta para isso. Trata-se, em parte, de controle e, em parte, de tornar as coisas mais convenientes do ponto de vista comercial (ou, pelo menos, de gerenciamento). Mas essa insistência na rotina e na localização está prejudicando a eficiência e a produtividade da equipe.

O que você precisa perceber é que seus codificadores provavelmente ficaram acordados a noite inteira experimentando o jogo mais recente, ou talvez eles estivessem festejando, ou simplesmente tivessem que se socializar com a família. Isso significa que, quando eles chegam para trabalhar na segunda-feira de manhã, não apenas você não os está alcançando no nível máximo de produtividade, mas eles já estão sem energia e cansados.

Dar aos trabalhadores uma escolha sobre quando eles trabalham - e idealmente também onde - é uma excelente maneira de melhorar a produtividade e o moral. Contanto que eles façam o trabalho e obtenham excelentes resultados qualitativos, você não deve se preocupar com quando, onde ou como eles o alcançam.

A exceção é quando você precisa de uma colaboração próxima, mas na verdade a maioria dos codificadores se sai melhor quando faz as coisas à sua maneira, e a necessidade de colaboração próxima é rara. A opção de entrar no escritório ainda deve estar lá, mas não há nenhuma razão real para que seja necessário, a menos que você esteja trabalhando em projetos militares ultra-secretos.

Como freelancer, você também pode ver que o ponto chave aqui é que, se você fizer a maior parte do trabalho de codificação real à noite, provavelmente fará mais. Há menos distrações tarde da noite, é mais tranquilo e você se sentirá mais criativo.

Evite música

Todos nós já vimos esses estereótipos de filmes malucos em que um überhacker super grungy coloca seus fones de ouvido e atola junto ao death metal, enquanto produz sem esforço telas cheias de código sem sequer parar para respirar. E todos nós que realmente codificamos no mundo real, sabemos quão ridícula é essa imagem.

Mas se você ouvir música enquanto trabalha, tenha cuidado. É muito fácil se achar pensando na música em vez do seu trabalho, e alguns tipos de música podem ter um efeito soporífero. Quando você vai para um treino na academia, o tipo certo de música pode inspirá-lo a fazer alguns representantes extras. Mas ninguém jamais conseguiu criar músicas que o inspirem a encontrar a linha com o ponto-e-vírgula ausente ou a fazer a escolha correta entre usar um loop for ou um loop while. O mais próximo que chegamos disso é o Electric Dreams.

Tente manter-se em ordem

A desordem pode ser estranhamente reconfortante, mas também pode atrasá-lo. Você pode facilmente perder 20 minutos procurando algo que foi perdido na bagunça, e depois esquecer por que você queria isso em primeiro lugar.

Então, por todos os inconvenientes que isso causa, por que nós - pelo menos alguns de nós - somos tão viciados em desordem? Especialista em organização e autora, Julie Morgenstern, afirma que é porque essa coisa nos conecta com o nosso passado e desempenha um papel na definição de nossa identidade. Marcus Geduld, professor e diretor de palco baseado em Nova York, sugere que é porque a desordem é preferível a um ambiente “estéril” e compara o caos da desordem a uma afirmação de liberdade e criatividade.

No entanto, não há dúvida de que reduzir a desordem ajudará a evitar a distração e a desorganização. Como tal, é um objetivo digno de realizar. Por todos os meios, mantenha alguns objetos sagrados em volta que façam você se sentir melhor e menos estressado, mas não exagere. Decluttering é uma das coisas mais difíceis de se fazer para a maioria das pessoas, e não são apenas os nossos desktops físicos que precisam ser organizados, mas frequentemente nossos desktops de computador também. Se você realmente lutar com isso, você poderia tentar usar um DTE minimalista como o Fluxbox, que não permite que você tenha alguma confusão.

Mas no meio de tudo isso, não exagere. Há muita boa ciência sugerindo que um pouco de caos no ambiente pode ser realmente propício para a criatividade. Uma das pesquisas mais citadas sobre isso é uma entrada no jornal Psychological Science, de Vohs, Redden & Rahinel, da Universidade de Minnesota, intitulada Ordem Física Produz Escolhas Saudáveis, Generosidade e Convencionalidade, Considerando que o Transtorno Produz Criatividade. Provavelmente, a razão pela qual este é o papel que os jornalistas se apegam é que conclui claramente que: “... os participantes de uma sala desordenada eram mais criativos do que os participantes de uma sala organizada.”

Muito menos populares são pontos de vista divergentes, como Transtorno ambiental leva a falha autorregulatória (Chaye & Zhu, 2014), publicado no Journal of Consumer Research. Este estudo descobriu que as pessoas que trabalham em ambientes desordenados foram prejudicadas em sua capacidade de executar tarefas.

Então, onde isso te deixa? Você deve trabalhar no caos ou na esterilidade? A resposta parece ser encontrar um equilíbrio onde seja apenas caótico o suficiente para mantê-lo inspirado, mas não tanto que você se distraia ou tenha dificuldade em encontrar coisas.

Deixe algum espaço atrás de você para pacificar seus pensamentos

É uma boa ideia ter muito espaço para vagar quando você está deliberando. Muitos dos melhores almirantes e generais da história eram renomados pelo extenso tempo que passavam no convés enquanto planejavam estratégias de batalha.

Não só os homens de combate seguem essa prática. Muitos monges budistas também defendem a “meditação andando”, e acreditam que isso ajuda a promover a clareza da mente. Sempre que você tiver um problema de programação particularmente complicado para resolver, você pode achar que ajuda a esticar um pouco as pernas com um passeio meditativo pelo convés. Obviamente, aqui novamente a falta de desordem irá ajudá-lo a fazer isso sem acabar no hospital.

Como chefe, tome uma abordagem cautelosa em relação aos esforços criativos

Não há nada de errado com críticas construtivas, mas você precisa escolher o momento certo e abordá-lo da maneira certa, ou pode sair pela culatra, tornando sua equipe menos produtiva no futuro. Ao invés de inspirá-los e fornecer insights, você pode realmente fazê-los com medo de assumir riscos, o que é uma boa maneira de matar a criatividade. Marieke Roskes, em Restrições que ajudam ou atrapalham o desempenho criativo: uma abordagem motivacional, fornece uma estrutura para como lidar com a motivação dos trabalhadores criativos e, especificamente, também como evitar desmotivá-los não intencionalmente (Gerenciamento de Inovação e Criatividade, Vol 24, Iss 2, 2015).

2. Estabelecer um bom SOP

Há muitas tendências cativantes no gerenciamento de negócios e procedimentos de programação que soam muito mais sensatos na teoria do que na prática. Se uma determinada abordagem funciona para você ou não, depende do seu objetivo e do que você pessoalmente considera um resultado bem-sucedido.

Um exemplo de uma metodologia em que uma empresa para a qual trabalhei - e que caiu com a mesma rapidez - é a programação em pares (não confundir com a programação PEAR). Enquanto algumas pessoas realmente admiram essa metodologia de trabalho e elogiam seu lugar no paradigma de desenvolvimento ágil, descobrimos que ela era terrivelmente ineficiente. Para começar, precisou de dois programadores para cada estação de trabalho, então você estava pagando o dobro por menos trabalho de desenvolvimento real. Também descobrimos que era muito mais lento trabalhar dessa maneira por causa do freqüente fluxo de parada / partida e da tendência para o diálogo desnecessário.

As vantagens da programação em pares eram o resultado de documentação mais natural e documentação mais rigorosa. Também permitia que os bugs fossem detectados com mais facilidade e que fossem feitas sugestões sobre o aperto de um algoritmo. Ao mesmo tempo, no entanto, as mesmas vantagens também criavam problemas porque às vezes os ajustes e ajustes não eram realmente necessários.

Outro risco com essa abordagem é que você pode obter o efeito identificado por Roskes, onde os programadores podem hesitar em tentar as coisas porque não querem ser corrigidas. Você pode encontrar confrontos de personalidade, onde um desenvolvedor é muito pedante e tradicional, mas o outro é mais criativo e espontâneo.

Os programadores costumam afirmar que preferem a programação em pares. É possível que isso aconteça porque eles desfrutam da interação social que isso proporciona, mas isso nada contribui para a eficiência da produção, exceto, talvez, como um impulsionador da moral.

Então, o que você precisa estabelecer é o que realmente funciona para seus desenvolvedores e o que não funciona. Para as coisas que não funcionam, é melhor descartá-las, mesmo que sejam uma prática de tendências. O que quer que ajude a equipe a progredir rapidamente é uma coisa boa. Mas se eles estão sobrecarregados com uma metodologia que não combina com seu estilo, isso acabará levando a problemas.

3. Incentive a documentação detalhada

Embora possa parecer que a verbosidade aumentaria a ineficiência, a pequena quantidade de tempo necessária para fornecer mais detalhes e precisão nos comentários pode economizar muitos problemas à medida que o projeto evolui ou sofre revisões.

4. Desencorajar documentação desnecessária

Código bem escrito é muitas vezes auto-documentado. Se é perfeitamente óbvio o que uma função faz do nome que você dá (o que deveria ser quase sempre o caso), então adicionar mais descrição é supérfluo. O mesmo vale para os valores de nomeação e retorno de variáveis. Deve ficar claro a partir do nome o que eles fazem, e nos casos em que não é possível fazer isso, você deve incluir uma descrição deles nos comentários.

5. Espaço em branco é seu amigo

Usar o espaço em branco adequadamente em seu código é valioso para ajudar a tornar o código mais fácil de ler, revisar e entender. Ele anda de mãos dadas com boa documentação e escrita de código de auto-documentação. Deve ser possível para qualquer programador experiente - ou talvez até mesmo um não programador - pegar uma cópia do seu código-fonte e entender instantaneamente qual é o propósito de cada função e como ela funciona. Idealmente, alguém deveria ser capaz de aprender a programar a partir de nada mais do que estudar seu código bem escrito.

6. Prefiro simplicidade sobre complexidade

Quanto mais complexo você criar seu código, mais difícil será para desvendá-lo. Ironicamente, isso se aplica a atalhos de programação, como o uso de condicionais abreviados, em vez de escrevê-los na íntegra. Isso economiza tempo na escrita, mas um programador menos experiente que entra para revisar seu código mais tarde pode não entender suas intenções.

7. Teste exaustivamente

O código deve ser testado de forma incremental e frequente. Antes de implantar qualquer coisa, você deve realizar o máximo de testes internos possível, mesmo que sua primeira versão seja designada como Alfa.

8. Use o controle de versão

Você teria que ser louco para não usar o controle de versão em um grande projeto. Sem isso, você não está protegido de seus próprios pequenos erros, e também é realmente fácil para outro membro da equipe acidentalmente (ou intencionalmente) sabotar seu código, sobrescrevendo-o com algo que não lhe agrada.

Ao considerar essas oito sugestões principais, você poderá desenvolver sua própria estratégia para extrair o máximo de eficiência para você e qualquer membro da equipe com quem você trabalha. Você não precisa necessariamente aplicar todos eles, e certamente alguns podem até não ser práticos para você, mas qualquer combinação deles pode resultar em você fazer seu trabalho com menos problemas. Um fluxo de trabalho mais produtivo se pagará ao longo do tempo, mesmo que seja apenas em termos de redução do estresse e dando-lhe mais tempo para si mesmo. Esse é um objetivo que vale a pena trabalhar.

Bogdan Rancea

Bogdan é um membro fundador da Inspired Mag, acumulando quase 6 anos de experiência neste período. Em seu tempo livre, ele gosta de estudar música clássica e explorar artes visuais. Ele é muito obcecado com fixies também. Ele é dono do 5 já.