As descobertas que faço e coisas que aprendo

Continuando a ideia de simplesmente colocar aqui o que venho pensando e analisando, para rever futuramente.

Nos últimos meses venho me aprofundando cada vez mais na parte de desenvolvimento para web, antigamente eu focava totalmente na parte visual (UI) que ainda gosto, e limitava a minha aplicação de conhecimentos web ao bom e velho Wordpress. Conseguia fazer algumas coisas "intermediárias" como modificar alguns plugins e reestruturar temas. Mas era isso, eu deixava um visual bacana e me esforçava para fazê-lo funcionar no Wordpress.

Porém como tudo, um dia eu senti a necessidade de mudar, cansei de depender de terceiros para ter um plugin ou poder fazer algo diferente. Eis que escolhi me aprofundar no desenvolvimento web de maneira séria e contínua. De primeira eu tomei um puta choque pois meu conhecimento estava literalmente congelado na época de HTML + CSS + Wordpress, vi que estava totalmente fora do que estava rolando no mercado, fui descobrir Git, Bibliotecas JS, Metodologias e tudo que envolve esse ecossistema apenas na metade de 2018, atrasado pra caramba né? 😨.

Aqui vai uma dica: Questione-se. Esteja sempre se perguntando o que pode fazer, como pode melhorar, se está dando o seu máximo. Creio que pelo fato de eu ter ficado muito fechado, trabalhando em casa, com clientes fixos e sem contato com uma comunidade ativa acabei me cegando.

Dei uma espertada após ler alguns livros e repensar um pouco os conceitos da vida, resumindo em uma frase: "Busque maestria".

O primeiro contato com esse assunto foi no livro Mastery  de George Leonard, que apesar de falar sobre Aikido (arte marcial japonesa), pode ser muito bem aplicado em outras áreas, tem um "resumo" do Seiiti Arata caso queira dar uma olhada. Desse ponto para frente foram muitas outras descobertas que ficam para outra hora.

Porque extreme programming?

Everything and nothing at a time
Photo by Yoann Boyer / Unsplash

Nesses meses me aprofundando totalmente na área de ciência da computação com foco em web acabei me deparando com muitos conceitos, que por sinal ainda estou digerindo, porém, um deles me chamou muita atenção e parece bom para ser aprofundado, o Extreme Programming. Conceito que também tem muitas das ideias apresentadas no livro The Pragmatic Programmer.

Lendo o que Ron Jeffries diz em seu post sobre extreme programming o primeiro parágrafo possui ótimos pontos para que este conceito mereça uma atenção:

Extreme Programming é uma disciplina em desenvolvimento de software com valores baseados em simplicidade, comunicação,  feedback, coragem e respeito. Este conceito funciona reunindo toda a equipe na presença de práticas simples, com feedback suficiente para permitir à equipe saber onde está e ajustar as práticas á situações únicas.

Simples e direto, sem frescuras. O XP (Extreme Programming) valoriza esses pontos.

Comunicação

No desenvolvimento de software é essencial que todos compartilhem o conhecimento em prol do time. O XP lembra constantemente a importância deste tipo de comunicação cara a cara, com auxilio de metáforas ou desenhos se necessário, e de preferência da forma mais direta possível, sem burocracias.

Simplicidade

O propósito da simplicidade é evitar desperdício e fazer o absolutamente necessário para entregar valor ao software. Um sistema simples se mantém fácil de realizar manutenção, suporte, e revisões futuras. Simplicidade também significa trabalhar com o que você conhece, não tente prever o futuro.

Feedback

Análise constante de você e seu time permite que vocês possam evoluir em conjunto e focar nos pontos fracos e melhorias que podem ser feitas em conjunto. Seu time desenvolve algo, recebe feedback, melhora  e continua neste ciclo de melhoria contínua.

Coragem

Kent Beck define coragem como "ação efetiva diante do medo". Essa definição foca em realizar ações com base no principio de tomar atitudes que evitem ser prejudiciais ao time (mesmo quando você não gosta). Coragem de levantar questões que deixam sua equipe estagnada. Coragem para parar de fazer o que não funciona e tentar outra coisa. Coragem para aceitar e agir com base no feedback, mesmo quando é difícil de aceitá-lo.

Respeito

Os membros de um time precisam respeitar uns aos outros para que a comunicação seja eficaz e as análises sejam feitas de forma concisa, assim todos conseguem encontrar a melhor forma de agir e encontrar soluções.

Com esses valores a XP se sustenta e aplica suas práticas de forma dinâmica e flexível. Irei me aprofundar nas práticas para trazer um conceito mais amplo. Deixarei a imagem que ilustra as práticas utilizadas quando você se torna um programador "extreme".

A principio parece  algo tranquilo e fácil de aplicar como um estilo de desenvolvimento, mas confesso que é bem difícil e você precisa estar em constante alerta para se manter excelente. Trata-se de uma observação contínua de seu trabalho e da qualidade de tudo que é feito.

O tipo de excelência que busco.

Até mais!

Tradução de termos e glossário:

Extreme Programming: Programação Extrema, um paradigma para desenvolvimento de software
Feedback: Neste contexto aqui remete a comentário, opinião ou análise feita normalmente por um terceiro sobre seu desempenho e evolução.

Referências:

https://www.agilealliance.org/glossary/xp

http://www.extremeprogramming.org/when.html

https://ronjeffries.com/xprog/what-is-extreme-programming/