Enable javascript in your browser for better experience. Need to know to enable it? Go here.
REFACTORING 2018
REFACTORING 2018

REFACTORING 2018

Escrevendo o livro: por que e como?



Laura Paterson, Gerente Geral do nosso escritório de Londres, conversou com Martin Fowler na última semana sobre seu próximo livro, uma nova edição do clássico ‘Refactoring’. A partir de um ótimo debate funcional com conselhos para quem está trocando de carreira, nós juntamos tudo para você em duas sessões de Perguntas&Respostas — na sessão que você está lendo agora, o Martin dá conselhos contando de sua carreira dentro da área de Software. A parte mais técnica da discussão, você pode encontrar aqui. Aproveite!

Para quem ainda não leu a respeito, você poderia explicar o que é Refatoração?


Refatoração é o processo de evolução de código para torná-lo mais compreensível e editável com o passar do tempo. É fazer o código comunicar claramente o que está sendo feito. Isso leva à simplificação, é claro. É uma prática essencial no desenvolvimento ágil, e não só algo para ser usado no código legado - é uma habilidade chave para qualquer pessoa programadora que deseja escrever um código limpo. Todas as pessoas que codam, deveriam refatorar.



Por que revisitar o Refactoring, depois de quase 20 anos?


Olha, por muitas razões. Primeiramente, o livro está mostrando seu tempo de vida. A versão de Java tratada no original já soa bastante estranha para pessoas que desenvolvem em Java atualmente. No entanto, a refatoração ainda é relevante - de fato, cada vez mais relevante. Existe um número grande de pessoas começando na área de programação atualmente, então ainda há a necessidade de um livro introdutório que ensine esta técnica.



Além disso, há pessoas de diversos backgrounds começando na indústria de programação, pessoas que podem ser apoiadas com este livro. Uma das coisas que muitas vezes me preocupa é: como alguém entra no mundo do desenvolvimento de software sem necessariamente ter que estudar em uma faculdade cara? Eu sinto que nós precisamos proporcionar outros caminhos.

"Não estou convencido de que uma graduação em Ciência da Computação seja a melhor maneira de trabalhar com desenvolvimento de software. Espero que um livro como este ajude as pessoas a seguirem um caminho alternativo."


Qual foi o caminho que você seguiu para a área de desenvolvimento de software?


Eu tive muita sorte. Quando eu tinha 18 anos, na época, no Reino Unido, você podia entrar em uma universidade de ponta e não ter que assumir uma enorme dívida. Então, como um pertencente da classe trabalhadora, consegui fazer isso acontecer.


É assustador agora, ver o montante da dívida que deve ser assumida para se formar, especialmente em uma faculdade de nível superior (nos Estados Unidos, mas cada vez mais em outros países também). Isso me horroriza, honestamente. E isso não é necessário.



Que conselhos você daria a uma pessoa sem uma graduação em Ciências da Computação?


Não se preocupe em não ter um diploma. Muitas das coisas que me ensinaram, e que ainda são ensinadas, foram úteis, mas dificilmente foram as mais importantes. Nunca deixe que a falta de treinamento formal afaste você dos seus objetivos. Eu questiono também a necessidade da matemática tradicional.


Por quê? Porque a excelência no desenvolvimento de software está muito relacionada com se comunicar com outras pessoas mais do que qualquer coisa. Habilidade comunicacional, e ser capaz de assumir ideias é muito importante.


Também é muito importante seguir um caminho de aprendizado contínuo - você nunca deixará de aprender porque o mundo do  software está em constante mudança. A capacidade de aprender e absorver novas coisas é fundamental.


Então você precisa de muita persistência. Uma ex-Thoughtworker, Amanda Laucher, está fazendo um trabalho realmente interessante, ajudando pessoas de regiões de mineração pós-industriais nos EUA a entrarem na área de desenvolvimento de software. Elas precisam encontrar maneiras de ajudá-los a descobrir quem provavelmente terá sucesso, e descobriram que o maior indicador é a capacidade de perseverar em meio a muitos contratempos. Porque fazer software é assim - tentativa e erro, quebrar coisas, tentar outras. Não desistindo: empurrando para frente.


Portanto, tome proveito e desenvolva suas habilidades de comunicação e aprendizado. No final, o que importa é conseguir pegar algo complicado, e transformar em algo claro e simples.

"Isso é muito diferente do que muita gente acredita que sejam as habilidades para desenvolver software, mas acho que o centro da questão está em algum lugar muito diferente de onde a maioria das pessoas o coloca."


Como você equilibra seus pontos de vista com o conhecimento comum quando está escrevendo?


Com qualquer livro, críticas são muito importantes. Eu crio um grupo de aconselhamento – com pessoas que eu, de algum modo, conheço, e cujo trabalho respeito, e que dariam bons feedbacks. Não sou tão familiarizado com todos os aspectos da comunidades de JS, e queria ter certeza de ter pessoas que podem dar feedbacks nesses elementos.


Elas me fizeram comentários em cada refatoração - por meio de uma lista de mailing simples - e foram uma fonte de informação muito útil.



Como você diferencia o sinal do ruído?


Eu descubro boas pessoas para escutar. Há muitas boas pessoas por aí, fazendo isso, e você não precisa trabalhar em tudo sozinho. É por essa razão que eu gosto de estar na Thoughtworks. Enquanto a forma mais óbvia de filtro é o Radar, que tem a ver com extrair os sinais, eu faço isso de uma maneira bem mais informal. Conheço muitas pessoas boas em tecnologia na ThougthWorks, e converso com elas sobre o que é interessante.


Meu conselho é desenvolver o seu instinto em achar as pessoas certas para ouvir.



Qual o seu conselho para pessoas que sãs escritoras iniciantes?


A coisa mais importante é a prática. Tenha um blog. Anote as coisas. Seu primeiro rascunho quase certamente não será aquilo que você quer publicar. Retrabalhe as palavras e as ideias.


Escrever é exatamente como programar, apenas siga repetindo. É sobre perseveranças, mas também sobre reconhecimento de quando é a hora de parar. Isso que é assustador em um livro, já que você não pode mais mudá-lo. Mas tenha certeza de que na maior parte das mídias, você pode.


Encontre pessoas para dar feedbacks. Bons críticos valem seu peso em ouro. Na Thoughtworks temos sorte em ter uma lista de mailing de pessoas devs em software, um grupo global de tecnologistas, hoje na casa dos milhares, que são atenciosas e responsivas – muitas discussões nesta lista me deram opiniões excelentes. Você precisará de alguém detalhista e que te desafie. Esse tipo de feedback vale muito a pena. E vale o esforço para prestar atenção!



Então, para onde a Tecnologia está indo?


Eu não sou um futurista - sou um "catador de lixo intelectual". Eu olho para as coisas no passado que não foram feitas tanto quanto deveriam ter sido, e as trago para debate de alguma forma.



E o que estará acontecendo por agora com você?


Agora minha tarefa é lançar este livro. Estive tão focado nele nesses últimos dois anos, estou ansioso para compartilhar este projeto e ver o que acontece. Depois disso, estou totalmente aberto para futuras tarefas.


"Eu não sou um futurista

- Eu sou um catador de lixo intelectual."

A parte mais técnica desta entrevista, na qual Martin disserta sobre Refatoração hoje versus 20 anos atrás, está aqui:


Vamos lá

Saiba mais e participe do Desenvolve, nosso programa de entrada para pessoas consultoras que desejam construir o seu futuro na tecnologia.

Aviso: As afirmações e opiniões expressas neste artigo são de responsabilidade de quem o assina, e não necessariamente refletem as posições da Thoughtworks.