Palestra ministrada com Camilla Crispim
Escrever código que uma máquina entenda é fácil, qualquer pessoa com o mínimo de conhecimento em programação pode escrever. O desafio está em escrever um código que possa ser entendido e alterado facilmente por qualquer pessoa. Você, pessoa desenvolvedora, já começou a ler um trecho de código e tudo o que pensou foi "O que isso está fazendo? Como vou alterar isso de modo que faça o que me foi pedido pela cliente?". Nesta palestra, as palestrantes vão apresentar uma série de dicas para que você possa não só escrever um código legível, como identificar qual parte precisa ser melhorada; além de mostrar a relação de código limpo com práticas ágeis e como essas podem nos ajudar a manter o código entendível por pessoas, e não somente por máquinas.
Feature Injection - Descobrindo e entregando valor testávelHélio Medeiros
A Injeção de Funcionalidades é um Processo de Análise de Negócios criado por Chris Matts para resolver esse problema! Esta foi minha palestra no TDC 2014
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Pedro Edson Silva Barros
11/2018 - Ministrei palestra com o tema: “Código limpo: Boas práticas e sua importância no desenvolvimento de software.”, durante o Alagoas Developers #GamingEdition, realizado na Faculdade da Cidade de Maceió - FACIMA.
Esta apresentação fala sobre boas práticas no desenvolvimento de software utilizando o conceito de TDD.
Também apresenta no final um case sobre documentação de APIs Restful utilizando testes de integração, integração contínua e deploy contínuo.
A palestra irá falar sobre arquitetura de software o do profissional responsável por ela, o arquiteto de software. Muito se discute sobre esse papel, quais as suas atribuições e o que ele realmente faz. O objetivo desta palestra é desmistificar alguns dos conceitos sobre essa questão, falar sobre a carreira do arquiteto de software, como se tornar um, como lidar com novas tecnologias e um guia rápido de estudos.
Feature Injection - Descobrindo e entregando valor testávelHélio Medeiros
A Injeção de Funcionalidades é um Processo de Análise de Negócios criado por Chris Matts para resolver esse problema! Esta foi minha palestra no TDC 2014
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Pedro Edson Silva Barros
11/2018 - Ministrei palestra com o tema: “Código limpo: Boas práticas e sua importância no desenvolvimento de software.”, durante o Alagoas Developers #GamingEdition, realizado na Faculdade da Cidade de Maceió - FACIMA.
Esta apresentação fala sobre boas práticas no desenvolvimento de software utilizando o conceito de TDD.
Também apresenta no final um case sobre documentação de APIs Restful utilizando testes de integração, integração contínua e deploy contínuo.
A palestra irá falar sobre arquitetura de software o do profissional responsável por ela, o arquiteto de software. Muito se discute sobre esse papel, quais as suas atribuições e o que ele realmente faz. O objetivo desta palestra é desmistificar alguns dos conceitos sobre essa questão, falar sobre a carreira do arquiteto de software, como se tornar um, como lidar com novas tecnologias e um guia rápido de estudos.
Introdução a Desenvolvimento Orientado a Testes ( TDD )Iure Guimaraes
Palestra faz parte de um conjunto de assuntos abordados no curso de Metodologias Ágeis ministrado na Universidade Federal de Goiás durante a Semana de Engenharia de 2009
React e reactividade Meetup Facebook Developer CirclesJosé Barbosa
Slides da talk no meetup do Facebook Developer Circles, sobre React e Reatividade. Nessa apresentação iremos entender o que é programação reativa e de onde veio a ideia do reactjs.
Como TDD pode influenciar na construção do seu Produto?Raphael Paiva
Mostra as vantagens que o Test Driven Development trás para o design de sua aplicação, além do aprendizadoque ele trouxe no desenvolvimento do JTrace, uma biblioteca de computação gráfica.
Teste sua aplicação antes que ela teste vocêTiago Link
O I BootCamp SMO organizado pelo grupo OeSC Livre foi organizado pelos voluntários da comunidade de software livre do Oeste Catarinense no dia 23 de junho de 2012 no SENAI em São Miguel do Oeste.
Material da palestra em:
https://github.com/tiagolink/palestra-do-evento-I-boocamp-smo
É notável a quantidade de aplicações em PHP que ainda utilizam nosso velho e conhecido modo Macarrônico de programar: dezenas de snippets e blocos de código que trabalham com regras de negócio, apresentação e tudo mais espalhados por N lugares na aplicação. A solução mais sustentável para esse tipo de situação seja provavelmente a adoção de um framework, mas existe uma resistência muito grande que é completamente justificável: voltamos àquelas perguntas relativas à “para que mexer num time que está ganhando?“. Vamos trabalhar um pouco essa idéia mostrando exemplos e confrontando situações reais.
Nessa palestra relato minha experiência não como um desenvolvedor de software altamente sinistro com duzentos anos de experiência e mil livros publicados - mas sim como um "mero mortal", um desenvolvedor "de verdade", do "mundo real" aplicando a teoria que aprendeu do TDD.
Com a vinda da Internet, cada vez mais os sistemas são desenvolvidos para trabalhar em ambientes distribuídos, por exemplo: aplicativo web em um servidor, banco de dados em outro e assim por diante. Para que se obtenha o melhor potencial destes, é obvio que o desempenho dos ativos que o cercam têm que ser bom (servidores, ativos de redes, outros sistemas, entre outros), mas o foco principal deste artigo é o desenvolvimento do sistema em si. Desenvolver utilizando as melhores práticas de programação, aproveitar todos os recursos que as linguagens dispõem e produzir um código limpo são primordiais para que se miniminizem as falhas e se construa um sistema de qualidade; assim será possível racionar os recursos envolvidos e minimizar os custos.
Introdução a programação funcional e demonstrações práticas e reais de todos os conceitos em Ruby.
Por que FP (functional programming) importa?
Seus softwares terão menos bugs, serão mais rápidos de se desenvolver e mais fáceis de se manter.
Em outras palavras: +Dinheiro +Qualidade de vida +Sanidade.
Temas abordados:
1. Conceitos: Pure/Stateless functions, Composition, High order functions, Recursion, Referential transparency.
2. Ruby Functional Objects.
3. Como a comunidade Ruby já está sendo positivamente afetada.
Apresentação feita para a disciplina Projeto de Software, sobre o tema código limpo. O conceito Código limpo prega várias boas práticas de programação com o intuito de deixar o código eficiente e com fácil compreensão mesmo quando lido por programadores menos experientes. Nossa apresentação foi baseada no livro Código Limpo, o qual é melhor descrito nas referências bibliográficas.
Introdução a Desenvolvimento Orientado a Testes ( TDD )Iure Guimaraes
Palestra faz parte de um conjunto de assuntos abordados no curso de Metodologias Ágeis ministrado na Universidade Federal de Goiás durante a Semana de Engenharia de 2009
React e reactividade Meetup Facebook Developer CirclesJosé Barbosa
Slides da talk no meetup do Facebook Developer Circles, sobre React e Reatividade. Nessa apresentação iremos entender o que é programação reativa e de onde veio a ideia do reactjs.
Como TDD pode influenciar na construção do seu Produto?Raphael Paiva
Mostra as vantagens que o Test Driven Development trás para o design de sua aplicação, além do aprendizadoque ele trouxe no desenvolvimento do JTrace, uma biblioteca de computação gráfica.
Teste sua aplicação antes que ela teste vocêTiago Link
O I BootCamp SMO organizado pelo grupo OeSC Livre foi organizado pelos voluntários da comunidade de software livre do Oeste Catarinense no dia 23 de junho de 2012 no SENAI em São Miguel do Oeste.
Material da palestra em:
https://github.com/tiagolink/palestra-do-evento-I-boocamp-smo
É notável a quantidade de aplicações em PHP que ainda utilizam nosso velho e conhecido modo Macarrônico de programar: dezenas de snippets e blocos de código que trabalham com regras de negócio, apresentação e tudo mais espalhados por N lugares na aplicação. A solução mais sustentável para esse tipo de situação seja provavelmente a adoção de um framework, mas existe uma resistência muito grande que é completamente justificável: voltamos àquelas perguntas relativas à “para que mexer num time que está ganhando?“. Vamos trabalhar um pouco essa idéia mostrando exemplos e confrontando situações reais.
Nessa palestra relato minha experiência não como um desenvolvedor de software altamente sinistro com duzentos anos de experiência e mil livros publicados - mas sim como um "mero mortal", um desenvolvedor "de verdade", do "mundo real" aplicando a teoria que aprendeu do TDD.
Com a vinda da Internet, cada vez mais os sistemas são desenvolvidos para trabalhar em ambientes distribuídos, por exemplo: aplicativo web em um servidor, banco de dados em outro e assim por diante. Para que se obtenha o melhor potencial destes, é obvio que o desempenho dos ativos que o cercam têm que ser bom (servidores, ativos de redes, outros sistemas, entre outros), mas o foco principal deste artigo é o desenvolvimento do sistema em si. Desenvolver utilizando as melhores práticas de programação, aproveitar todos os recursos que as linguagens dispõem e produzir um código limpo são primordiais para que se miniminizem as falhas e se construa um sistema de qualidade; assim será possível racionar os recursos envolvidos e minimizar os custos.
Introdução a programação funcional e demonstrações práticas e reais de todos os conceitos em Ruby.
Por que FP (functional programming) importa?
Seus softwares terão menos bugs, serão mais rápidos de se desenvolver e mais fáceis de se manter.
Em outras palavras: +Dinheiro +Qualidade de vida +Sanidade.
Temas abordados:
1. Conceitos: Pure/Stateless functions, Composition, High order functions, Recursion, Referential transparency.
2. Ruby Functional Objects.
3. Como a comunidade Ruby já está sendo positivamente afetada.
Apresentação feita para a disciplina Projeto de Software, sobre o tema código limpo. O conceito Código limpo prega várias boas práticas de programação com o intuito de deixar o código eficiente e com fácil compreensão mesmo quando lido por programadores menos experientes. Nossa apresentação foi baseada no livro Código Limpo, o qual é melhor descrito nas referências bibliográficas.
Palestra sobre Clean Code ministrada na Benner em Outubro de 2018. Baseada no livro Clean Code do Uncle Bob (Robert Cecil Martin).
Código fonte em: https://github.com/paulohs/CleanCodeSample/
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
Palestra apresentado no TDC (The Developers Conference) de Porto Alegre de 2017, um evento que aborda diversas tecnologias. A palestra foi uma apresentação sobre código limpo, como melhorar e manter o padrão do seu código e com isso fazer do mundo um lugar melhor, com códigos melhores.
Algumas dicas que servem para ajudar quando vamos desenvolver códigos com mais precisão, empatia e legibilidade. Essa apresentação tem base do Clean Code do Uncle Bob.
Segunda aula sobre testes, na qual é apresentada a turma a regra fundamental de desenvolvimento orientado a testes, o desafio existente no desenvolvimento e manutenção de software e como podemos manter a qualidade interna e externa de nosso código com TDD e ATDD. Por fim é apresentado o ciclo de desenvolvimento com TDD e como conseguimos software melhor e mais condizente com as necessidades de nosso clientes com ATDD.
Descrição da palestra no TDC 2014 Poa:
http://www.thedevelopersconference.com.br/tdc/2014/portoalegre/trilha-agile
TDD (Test-driven development) é uma técnica para construção de software que guia o desenvolvimento de software através da escrita de testes. Muito se falou nesse ano, mas pouco se aprendeu. Mas qual é essência real do TDD? A resposta é simples, a essência está em seu mantra: Red / Green / Refactor. O TDD será destilado, explicando seus detalhes além do seu mantra.
Será mostrado o TDD no eXtreme Programming (XP), a importância da refatoração para o TDD, frameworks xUnit, como solucionar problemas complexos com Baby Steps, o valor do Clean Code, e como isso é importante para Coding Dojos. Patterns do TDD serão apresentados, dando a base para a essência do TDD. As relações do TDD com Agile Testing, ATDD e BDD também serão discutidas.
ArchUnit-Garantindo a Integridade dos seus Padrões Arquiteturais em JavaEdlaine Zamora
Garantir que todas as pessoas sigam um padrão arquitetural em uma aplicação é desafiador. O crescimento do codebase, rotatividade de pessoas desenvolvedoras na equipe e prazos de entrega apertados, entre outros, são fatores que podem influenciar em modificações indesejáveis na arquitetura.
Criar um mecanismo automatizado que garanta a integridade da arquitetura da sua aplicação torna-se essencial. Com o ArchUnit é possível criar testes automatizados dos padrões arquiteturais através de definições de regras a fim de que elas sejam respeitadas por toda a equipe.
Pensar em performance nos dias atuais é indispensável se você quer manter uma aplicação de sucesso na internet sem imprevistos durante os picos de acesso. Vamos mostrar como entender o comportamento da API sob stress utilizando o Gatling como ferramenta.
Escreva código para pessoas além de máquinasEdlaine Zamora
Escrever um código que uma máquina entenda é fácil, qualquer um pode escrever. O desafio está em escrever um código que possa ser entendido e alterado facilmente por uma pessoa. Você já começou a ler um um trecho de código e tudo o que pensou foi "o que isso está fazendo? Como vou alterar isso aqui?". Nesta apresentação, vamos apresentar uma série de dicas para que você possa escrever um código bom, que seja entendível por pessoas além de máquinas.
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Edlaine Zamora
Palestra ministrada no TDC São Paulo em 2017. A apresentação tem como objetivo mostrar a importancia e como esses testes podem ajudar a identificar os problemas de performance da sua aplicação através da ferramenta JMeter. Também explica a importancia do monitoramento enquanto executa os testes e algumas ferramentas que fazem esta função.
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
Palestra apresentada no TDC Florianópolis de 2017.
Não perca cliente por causa da lentidão ou da instabilidade de sua aplicação. Aprenda a analisar tempo de resposta, identificar melhorias de segurança e descobrir a capacidade de seu software. Não deixe que um eventual pico de usuários simultâneos acabe com a reputação de seu software.
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterEdlaine Zamora
Palestra apresentada no TDC Florianópolis 2017.
Fazer o startup de aplicações Web com Java Stack tem custado muitas horas de engenheiros experientes. Quem nunca sofreu ou gastou muito tempo com configurações de frameworks, bibliotecas, gerenciador de dependências, entre outros ao criar um projeto Java web? Aprenda a gerar toda sua arquitetura com JHipster com apenas alguns comandos e economizar seu tempo.
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxEdlaine Zamora
Palestra realizada dia 26/04/2017 no evento online QANinja Conference.
Kali Linux é uma distribuição avançada de Linux especializada em testes de intrusão e auditoria de segurança. Nos slides, é mostrado como utilizar uma das ferramentas, fazendo o teste em uma aplicação web.
Link da gravação da palestra: https://www.youtube.com/watch?v=Y_yIKr7BkrA&feature=youtu.be
14. claras, contém apenas o necessário, possui testes
automatizados, pode ser alterado com facilidade, possui
nomes significativos, possuem métodos e objetos que fazem
apenas uma tarefa, não possui nada de óbvio para ser
melhorado.
Pode ser lido de forma natural, possui alta expressividade e
parece que foi escrito por alguém que se importa."
"É elegante, eficiente, simples, possui
lógica direta, poucas dependências, um
bom tratamento de erro, abstrações
- Uncle Bob (Robert C. Martin)
Código Limpo
Clean Code
15. claras, contém apenas o necessário, possui testes
automatizados, pode ser alterado com facilidade, possui
nomes significativos, possuem métodos e objetos que fazem
apenas uma tarefa, não possui nada de óbvio para ser
melhorado.
Pode ser lido de forma natural, possui alta expressividade e
parece que foi escrito por alguém que se importa."
"É elegante, eficiente, simples, possui
lógica direta, poucas dependências, um
bom tratamento de erro, abstrações
- Uncle Bob (Robert C. Martin)
Código Limpo
Clean Code
20. #1 Regra da Escoteira
Deixe o acampamento código mais
limpo do que como você o
encontrou
Evite a teoria da janela quebrada
21. #2 Esqueça os
comentários
Se o código precisa de comentário,
tem algo errado
"Não escreva comentários em um
código ruim, reescreva-o"
- Brian W. KErnighan e P.J. Plaugher
22. #3 Nomes Significativos
Dê nomes significativos a tudo
Variáveis - Funções - Parâmetros Classes - Pacotes
Comentários, na grande maioria das vezes,
são desnecessários
23. #4 Formatação
A discussão não é sobre
tab ou espaço
É sobre consistência
O software precisa de
formatação consistente
25. #6 Evite Duplicações
Não se repitaDRY - Don't Repeat Yourself
"Nada é melhor que qualquer
coisa"
- Sandi Metz
"Duplicação ainda é melhor que
abstração errada"
- Sandi Metz
26. #7 Estrutura de dados e
Objetos
Saiba diferenciar
e saiba quando usar o que
Estruturas de dados expõem
informações
Objetos expõem comportamentos
que encapsulam informações
São diferentes
27. #8 Testes Automatizados
Permite
iterar no código, em busca
de um código melhor
Teste também é código
Todas as dicas se aplicam
Facilidade - Simplicidade - Consistência de expressão
Uma asserção por teste
28. O time deve escrever
código limpo, legível e
para pessoas
31. Processo Contínuo
Refactoring
Integração Contínua
Aperfeiçoamento do
design
Pequenas Releases
Feedback em escala
Cliente presente
Programação em par
Planejamento
TDD
PráticasXP:
Entendimento compartilhado
Código Padronizado
Código Coletivo
Design Simples
Metáfora do sistema
Standup Meeting
Bem-estar do times
Ritmo Sustentável
32. Todas
são capazes de descrever
o que o sistema faz
Entendimento comum
Código reflete o negócio:
lógica, nome de classes, etc
Código fica fácil de ser entendido por
todas
Metáfora do Sistema
33. Duas visões
sobre o mesmo problema,
solução e código é melhor
que uma
Enquanto uma escreve,
a outra já está revisando
Programação em Par
34. Visão holística
do que está acontecendo
Contexto do que outros pares
estão fazendo
Dependência
entre tarefas
Standup
35. TDD
Teste automatizado ou unitário
não é TDD
Testar antes de desenvolver
Pequenos passos. Todos os cenários.
Melhor entendimento das
necessidades de negócio
Aumenta a qualidade
Melhora design
36. Alterar o código
sem alterar o
comportamento
A cada refactoring, o código fica
mais significativo, mais simples
e mais fácil de ser
modificado
Sem testes automatizados,
sem refactoring
Refactoring
37. Design é como se
organiza o código
A fim de
reduzir custo de mudança
código fácil de entender - código fácil de mudar:
menor tempo, menor custo
"Duplicação é melhor que código
difícil de entender/evoluir"
- Sandi Metz
Design Simples
38. Todas escrevem no
mesmo repositório
Todas devem seguir o mesmo
padrão de escrita
de código
Código Coletivo e
Padronizado
39. Ritmo Sustentável
Trabalhar no
período normal,
sem horas extras
Cabeça descansada
Melhores soluções
Não comprometer a qualidade
quando sob pressão
Algumas coisas não são negociáveis
40. Escreva código para o seu
eu do futuro#1
Requer prática. Tenha artifícios
(como os do XP) que possam
ajudar
#2
Não adianta ir sozinha. Envolva
outras pessoas nessa jornada!#3
42. Código Limpo
Clean Code
É elegante, eficiente e simples
Tem lógica direta; faz somente o
necessário
Tem poucas dependências, bom
tratamento de erro e abstrações
evidentes
Tem testes automatizados e pode ser
alterado com facilidade
Tem nomes significativos
Tem métodos e objetos que fazem
única tarefa
Tem nada óbvio para ser melhorado
É lido naturalmente, tamanha
expressividade
Parece ter sido escrito por alguém que
se importa