SlideShare ist ein Scribd-Unternehmen logo
1 von 52
5 meses de Python: o que aprendi
Rebeca Sarai
5 meses de Python: o que aprendi
Rebeca Sarai
Como Python pode ajudar no
desenvolvimento ágil de software
Rebeca Sarai
Quem sou eu
● Rebeca Sarai
○ Recife
○ Estudante de Engenharia da Computação - UPE
○ Torcedora do melhor time de Pernambuco Náutico
○ Organizadora do Django Girls Recife
○ 1 ano como desenvolvedora
@rsarai007
github.com/rsarai
Outras palestras da Vinta
● Hoje 16:50 - Django's Club: Como NÃO fazer seu
sistema de assinatura - Victor
● Amanhã 11:10 - Python e tipagem estática - Carlos
● Amanhã 11:50 - Contribuir com o Django Framework é
mais fácil do que você imagina! - Anderson
Ágil
Que se movimenta com excesso de facilidade; que se move de
maneira rápida; veloz.
Que se comporta ou trabalha de maneira eficaz e rápida;
diligente, expedito e trabalhador.
Habilidade de criar e responder a mudanças em um ambiente
incerto e turbulento, com o objetivo de obter sucesso.
O que é Ágil?
Desenvolvimento Ágil de Software?
Não exatamente!
Desenvolvimento Ágil de Software
É um termo genérico para um conjunto de
métodos e práticas baseadas nos valores e
princípios expressos no Manifesto Ágil.
Manifesto Ágil
História
1970 - Metodologias tradicionais
1990 - Métodos leves (Lightweight Methods) começaram
a chamar atenção
2001 - 17 desenvolvedores se reuniram para discutir
abordagens de desenvolvimento de software
Vários conceitos presentes na metodologias ágeis foram
refinados e incorporados pela comunidade.
Valores
Indivíduos e interações mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
…e 12 princípios correspondentes
Ciclo de Vida Ágil
Metodologias Ágeis
Scrum, XP, Kanban
Ou uma customização para realidade da empresa.
Processos customizados podem gerar os mesmos
benefícios.
Indivíduos e interações
>
processos e ferramentas
Indivíduos e interações
❏ Princípios
➢Princípio 6 - O Método mais eficiente e eficaz de transmitir
informações para, e por dentro de um time de desenvolvimento, é
através de uma conversa cara a cara.
➢Princípio 5 - Construir projetos ao redor de indivíduos motivados.
Dando a eles o ambiente e suporte necessário, e confiar que farão
seu trabalho.
❏ Práticas Ágeis
Pair Programming
Daily meeting
Code Review
Como Python entra nisso?
Simplicidade
❏ Syntax limpa e simples
❏ Tipos de dados de alto nível incorporados
Strings, Lists, Tuples, Dictionaries
❏ The Zen of Python
Simples é melhor que complexo
Explícito é melhor que implícito.
Python promove simplicidade
PYTHON
numeros = [1, 2, 3, 4, 5]
# é bom
dobrar_chances = []
for n in numeros:
if n % 2 == 1:
dobrar_chances.append(n
* 2)
# é melhor
dobrar_chances = [n * 2 for n
in numeros if n % 2 == 1]
List Comprehension
JAVA
Se caminha como um pato, nada como um pato e grasna como um pato,
provavelmente é um pato.
Duck Typing
class Pato:
def quack(self):
print("Quack, quack!")
def fly(self):
print("Flap, Flap!")
class Pessoa:
def quack(self):
print("I'm Quackin'!")
def fly(self):
print("I'm Flyin'!")
def na_floresta(mallard):
mallard.quack()
mallard.fly()
def main():
na_floresta(Pato())
na_floresta(Pessoa(
))
>>> main()
>>> Quack, quack!
>>> Flap, Flap!
>>> Quackin'!
>>> Flyin'!
Comunicação
Python promove comunicação
❏ Idiomas poderosos e simples que permitem aos
desenvolvedores comunicarem claramente suas
intenções através do código
❏ Estilo de codificação padrão -- PEP8
❏ A sessão interativa do shell fornece feedback
instantâneo
❏ Python deixa você programar e não entra no seu
caminho
Então programadores Python são mais motivados?
Software em
funcionamento
>
documentação
abrangente
Software em funcionamento
❏ Princípios
➢ Princípio 3 - Entregar software funcionando com
freqüencia, na escala de semanas até meses, com
preferência em períodos mais curtos.
❏ Práticas Ágeis
Desenvolvimento iterativo
Desenvolvimento incremental
Sprints
Integração contínua
Integração contínua
A Integração Contínua (CI) é uma prática
de desenvolvimento que exige que os
desenvolvedores integrem código em um
repositório compartilhado várias vezes ao
dia. Cada check-in é verificado por uma
compilação automatizada.
django-react-boilerplate
django-react-boilerplate
“Integração contínua não se livra dos erros,
mas torna-os dramaticamente mais fáceis
de encontrar e remover.”
— Martin Fowler
Como Python entra nisso?
Integração contínua em Python
❏ Buildbots
Conjunto de máquinas dedicadas (ou build slaves)
usadas para a integração contínua. Eles abrangem
uma série de combinações de hardware / sistema
operacional.
❏ Python Developer’s Guide
❏ The Zen of Python
Erros nunca devem passar silenciosamente.
Colaboração com o
cliente
>
negociação de contratos
Colaboração com o cliente
❏ Princípios
➢ Princípio 1 - Nossa maior prioridade é satisfazer o cliente,
através da entrega adiantada e contínua de software de valor.
➢ Princípio 2 - Aceitar mudanças de requisitos, mesmo no fim do
desenvolvimento. Processos ágeis se adequam a mudanças,
para que o cliente possa tirar vantagens competitivas.
➢ Princípio 7 - Software funcional é a medida primária de
progresso.
❏ Práticas Ágeis
User Stories
TDD
TDD
Desenvolvimento orientado a teste é um estilo de
programação em que três atividades estão estreitamente
interligadas: codificação, teste (na forma de unit tests) e
design (sob a forma de refatoração).
TDD
Escreva um teste de unidade "único" descrevendo um aspecto do programa
Executar o teste, que deve falhar porque o programa não tem esse recurso
Escreva o código "apenas o suficiente", o mais simples possível, para fazer
passar o teste
"Refatorar" o código até que esteja em conformidade com os critérios
de simplicidade
Repetir, "acumulando" os testes unitários ao longo do tempo
Como Python entra nisso?
Python promove TDD
❏ Vários frameworks de testes (unittest, doctest, py.test) estão
disponíveis para feedback
❏ The Zen of Python
Casos especiais não são especiais o bastante para quebrar as regras.
Diante da ambiguidade, recuse a tentação de adivinhar.
Deve haver um — e preferencialmente só um — modo óbvio para fazer
algo.
Produtividade
Python promove produtividade
Não significa velocidade
O recurso mais caro de uma empresa é agora o tempo do seu empregado
Horas para escrever um aplicativo de processamento de sequência de
caracteres em várias linguagens
Responder a mudanças
>
seguir um plano
Responder a mudanças
❏ Princípios
Princípio 9 - Contínua atenção à excelência técnica e
bom design, aumenta a agilidade.
Princípio 10 - Simplicidade: a arte de maximizar a
quantidade de trabalho que não precisou ser feito.
❏ Práticas Ágeis
Refatoração
Agilidade
Python promove agilidade
❏ Desenvolvimento rápido
❏ Riqueza de pacotes de terceiros
django-templated-email
django-recurrence
arrow
Theano
django-templated-email
from templated_email import send_templated_mail
send_templated_mail(
template_name='welcome',
from_email='from@example.com',
recipient_list=['to@example.com'],
context={
'username':request.user.username,
'full_name':request.user.get_full_name(),
'signup_date':request.user.date_joined
},
)
Comunidade
Slides:
bit.ly/vinta-pyne-17
Twitter: https://twitter.com/rsarai007
Github: https://github.com/rsarai
Email: rebeca@vinta.com.br

Weitere ähnliche Inhalte

Was ist angesagt?

Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimentoledsifes
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Marcio Miyamoto
 
TDD - Workshop Pyladies SP
TDD - Workshop Pyladies SPTDD - Workshop Pyladies SP
TDD - Workshop Pyladies SPJessyka Lage
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design PatternsMaicon Heck
 
Processos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBanProcessos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBanSamuel Cavalcante
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme ProgrammingMilfont Consulting
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Gabriel Rubens
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareLuciano Almeida
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funcionaRodrigo Serradura
 

Was ist angesagt? (20)

eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimento
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a Modelagem
 
Enter SCRUM
Enter SCRUMEnter SCRUM
Enter SCRUM
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
 
TDD - Workshop Pyladies SP
TDD - Workshop Pyladies SPTDD - Workshop Pyladies SP
TDD - Workshop Pyladies SP
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design Patterns
 
Processos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBanProcessos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBan
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
Scrum
ScrumScrum
Scrum
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme Programming
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
 
Agile testing coach - Agile Trends Floripa
Agile testing coach - Agile Trends FloripaAgile testing coach - Agile Trends Floripa
Agile testing coach - Agile Trends Floripa
 

Ähnlich wie 5 meses de python o que aprendi

Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - KanbanMetodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - KanbanMatheus Costa
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Palestra de SCRUM em Juazeiro
Palestra de SCRUM em JuazeiroPalestra de SCRUM em Juazeiro
Palestra de SCRUM em JuazeiroPaulo Furtado
 
Gerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de softwareGerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de softwareRoberto Brandini
 
Apresentação Scrum 2012
Apresentação Scrum 2012Apresentação Scrum 2012
Apresentação Scrum 2012Libia Boss
 
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...Luiz Lemos
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
DevOps.pdf
DevOps.pdfDevOps.pdf
DevOps.pdfPyCaxias
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
Scrum - Profº James Moreira Jr.
Scrum - Profº James Moreira Jr.Scrum - Profº James Moreira Jr.
Scrum - Profº James Moreira Jr.James Moreira
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
 

Ähnlich wie 5 meses de python o que aprendi (20)

Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - KanbanMetodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Palestra de SCRUM em Juazeiro
Palestra de SCRUM em JuazeiroPalestra de SCRUM em Juazeiro
Palestra de SCRUM em Juazeiro
 
Gerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de softwareGerenciamento de equipes no desenvolvimento de software
Gerenciamento de equipes no desenvolvimento de software
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Scrum 8
Scrum 8Scrum 8
Scrum 8
 
Apresentação Scrum 2012
Apresentação Scrum 2012Apresentação Scrum 2012
Apresentação Scrum 2012
 
Metodologias Ágeis
Metodologias ÁgeisMetodologias Ágeis
Metodologias Ágeis
 
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
DevOps.pdf
DevOps.pdfDevOps.pdf
DevOps.pdf
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Scrum - Profº James Moreira Jr.
Scrum - Profº James Moreira Jr.Scrum - Profº James Moreira Jr.
Scrum - Profº James Moreira Jr.
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 
Métodos Ágeis - Aula02
Métodos Ágeis - Aula02Métodos Ágeis - Aula02
Métodos Ágeis - Aula02
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 

Mehr von Vinta Software

Contribuir com o django é mais simples do que voce imagina!
Contribuir com o django é mais simples do que voce imagina!Contribuir com o django é mais simples do que voce imagina!
Contribuir com o django é mais simples do que voce imagina!Vinta Software
 
Python e tipagem estática
Python e tipagem estáticaPython e tipagem estática
Python e tipagem estáticaVinta Software
 
Django’s Club: Como fazer um sistema de assinatura
Django’s Club: Como fazer um sistema de assinaturaDjango’s Club: Como fazer um sistema de assinatura
Django’s Club: Como fazer um sistema de assinaturaVinta Software
 
Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Vinta Software
 
Vinta Software Presentation
Vinta Software PresentationVinta Software Presentation
Vinta Software PresentationVinta Software
 

Mehr von Vinta Software (6)

Contribuir com o django é mais simples do que voce imagina!
Contribuir com o django é mais simples do que voce imagina!Contribuir com o django é mais simples do que voce imagina!
Contribuir com o django é mais simples do que voce imagina!
 
Python e tipagem estática
Python e tipagem estáticaPython e tipagem estática
Python e tipagem estática
 
Django’s Club: Como fazer um sistema de assinatura
Django’s Club: Como fazer um sistema de assinaturaDjango’s Club: Como fazer um sistema de assinatura
Django’s Club: Como fazer um sistema de assinatura
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.
 
Vinta Software Presentation
Vinta Software PresentationVinta Software Presentation
Vinta Software Presentation
 

5 meses de python o que aprendi

  • 1. 5 meses de Python: o que aprendi Rebeca Sarai
  • 2. 5 meses de Python: o que aprendi Rebeca Sarai
  • 3. Como Python pode ajudar no desenvolvimento ágil de software Rebeca Sarai
  • 4. Quem sou eu ● Rebeca Sarai ○ Recife ○ Estudante de Engenharia da Computação - UPE ○ Torcedora do melhor time de Pernambuco Náutico ○ Organizadora do Django Girls Recife ○ 1 ano como desenvolvedora @rsarai007 github.com/rsarai
  • 5.
  • 6. Outras palestras da Vinta ● Hoje 16:50 - Django's Club: Como NÃO fazer seu sistema de assinatura - Victor ● Amanhã 11:10 - Python e tipagem estática - Carlos ● Amanhã 11:50 - Contribuir com o Django Framework é mais fácil do que você imagina! - Anderson
  • 8. Que se movimenta com excesso de facilidade; que se move de maneira rápida; veloz. Que se comporta ou trabalha de maneira eficaz e rápida; diligente, expedito e trabalhador. Habilidade de criar e responder a mudanças em um ambiente incerto e turbulento, com o objetivo de obter sucesso. O que é Ágil?
  • 11. Desenvolvimento Ágil de Software É um termo genérico para um conjunto de métodos e práticas baseadas nos valores e princípios expressos no Manifesto Ágil.
  • 13. História 1970 - Metodologias tradicionais 1990 - Métodos leves (Lightweight Methods) começaram a chamar atenção 2001 - 17 desenvolvedores se reuniram para discutir abordagens de desenvolvimento de software Vários conceitos presentes na metodologias ágeis foram refinados e incorporados pela comunidade.
  • 14. Valores Indivíduos e interações mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano …e 12 princípios correspondentes
  • 15. Ciclo de Vida Ágil
  • 16. Metodologias Ágeis Scrum, XP, Kanban Ou uma customização para realidade da empresa. Processos customizados podem gerar os mesmos benefícios.
  • 18. Indivíduos e interações ❏ Princípios ➢Princípio 6 - O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara. ➢Princípio 5 - Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho. ❏ Práticas Ágeis Pair Programming Daily meeting Code Review
  • 21. ❏ Syntax limpa e simples ❏ Tipos de dados de alto nível incorporados Strings, Lists, Tuples, Dictionaries ❏ The Zen of Python Simples é melhor que complexo Explícito é melhor que implícito. Python promove simplicidade
  • 22. PYTHON numeros = [1, 2, 3, 4, 5] # é bom dobrar_chances = [] for n in numeros: if n % 2 == 1: dobrar_chances.append(n * 2) # é melhor dobrar_chances = [n * 2 for n in numeros if n % 2 == 1] List Comprehension JAVA
  • 23. Se caminha como um pato, nada como um pato e grasna como um pato, provavelmente é um pato. Duck Typing class Pato: def quack(self): print("Quack, quack!") def fly(self): print("Flap, Flap!") class Pessoa: def quack(self): print("I'm Quackin'!") def fly(self): print("I'm Flyin'!") def na_floresta(mallard): mallard.quack() mallard.fly() def main(): na_floresta(Pato()) na_floresta(Pessoa( )) >>> main() >>> Quack, quack! >>> Flap, Flap! >>> Quackin'! >>> Flyin'!
  • 25. Python promove comunicação ❏ Idiomas poderosos e simples que permitem aos desenvolvedores comunicarem claramente suas intenções através do código ❏ Estilo de codificação padrão -- PEP8 ❏ A sessão interativa do shell fornece feedback instantâneo ❏ Python deixa você programar e não entra no seu caminho
  • 26. Então programadores Python são mais motivados?
  • 28. Software em funcionamento ❏ Princípios ➢ Princípio 3 - Entregar software funcionando com freqüencia, na escala de semanas até meses, com preferência em períodos mais curtos. ❏ Práticas Ágeis Desenvolvimento iterativo Desenvolvimento incremental Sprints Integração contínua
  • 29. Integração contínua A Integração Contínua (CI) é uma prática de desenvolvimento que exige que os desenvolvedores integrem código em um repositório compartilhado várias vezes ao dia. Cada check-in é verificado por uma compilação automatizada.
  • 32. “Integração contínua não se livra dos erros, mas torna-os dramaticamente mais fáceis de encontrar e remover.” — Martin Fowler
  • 34. Integração contínua em Python ❏ Buildbots Conjunto de máquinas dedicadas (ou build slaves) usadas para a integração contínua. Eles abrangem uma série de combinações de hardware / sistema operacional. ❏ Python Developer’s Guide ❏ The Zen of Python Erros nunca devem passar silenciosamente.
  • 36. Colaboração com o cliente ❏ Princípios ➢ Princípio 1 - Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor. ➢ Princípio 2 - Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas. ➢ Princípio 7 - Software funcional é a medida primária de progresso. ❏ Práticas Ágeis User Stories TDD
  • 37. TDD Desenvolvimento orientado a teste é um estilo de programação em que três atividades estão estreitamente interligadas: codificação, teste (na forma de unit tests) e design (sob a forma de refatoração).
  • 38. TDD Escreva um teste de unidade "único" descrevendo um aspecto do programa Executar o teste, que deve falhar porque o programa não tem esse recurso Escreva o código "apenas o suficiente", o mais simples possível, para fazer passar o teste "Refatorar" o código até que esteja em conformidade com os critérios de simplicidade Repetir, "acumulando" os testes unitários ao longo do tempo
  • 39.
  • 41. Python promove TDD ❏ Vários frameworks de testes (unittest, doctest, py.test) estão disponíveis para feedback ❏ The Zen of Python Casos especiais não são especiais o bastante para quebrar as regras. Diante da ambiguidade, recuse a tentação de adivinhar. Deve haver um — e preferencialmente só um — modo óbvio para fazer algo.
  • 43. Python promove produtividade Não significa velocidade O recurso mais caro de uma empresa é agora o tempo do seu empregado Horas para escrever um aplicativo de processamento de sequência de caracteres em várias linguagens
  • 45. Responder a mudanças ❏ Princípios Princípio 9 - Contínua atenção à excelência técnica e bom design, aumenta a agilidade. Princípio 10 - Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito. ❏ Práticas Ágeis Refatoração
  • 47. Python promove agilidade ❏ Desenvolvimento rápido ❏ Riqueza de pacotes de terceiros django-templated-email django-recurrence arrow Theano
  • 48. django-templated-email from templated_email import send_templated_mail send_templated_mail( template_name='welcome', from_email='from@example.com', recipient_list=['to@example.com'], context={ 'username':request.user.username, 'full_name':request.user.get_full_name(), 'signup_date':request.user.date_joined }, )
  • 50.

Hinweis der Redaktion

  1. Python e o desenvolvimento ágil: um casamento de sucesso Desenvolvimento ágil com Python Como Python pode ajudar no desenvolvimento ágil de software
  2. Ágil pode ser confundido com velocidade como nas duas primeiras definições. Estamos vivendo uma tendência para o desenvolvimento ágil de aplicações devido ao ritmo acelerado de mudanças na tecnologia da informação, pressões por constantes inovações, concorrência acirrada e grande dinamismo no ambiente de negócios.
  3. Por conseguinte, desenvolvedores passaram a entender a metodologia ágil como algo que tudo se pode, ou seja, podemos desenvolver sem documentação, sem padrão e sem cuidado. Isto não é verdade, as metodologias ágeis podem trazer sucesso ao projeto, e são utilizadas inclusive na indústria.
  4. 1- Pensou, não é XGH. XGH não pensa, faz a primeira coisa que vem à mente. Não existe segunda opção, a única opção é a mais rápida. 2- Existem 3 formas de se resolver um problema, a correta, a errada e a XGH, que é igual à errada, só que mais rápida. XGH é mais rápido que qualquer metodologia de desenvolvimento de software que você conhece (Vide Axioma 14).
  5. O desenvolvimento ágil é um fruto da constatação feita, de forma independente, por diversos profissionais renomados na área de engenharia de software, de que, apesar de terem aprendido segundo a cartilha tradicional, só conseguiam minimizar os riscos associados ao desenvolvimento de software, pensando e agindo de forma muito diferente do que tradicionalmente está nos livros.
  6. Embora cada envolvido tivesse suas próprias práticas e teorias preferidas, todos concordavam que, em suas experiências prévias, os projetos de sucesso tinham em comum um pequeno conjunto de princípios. https://martinfowler.com/articles/newMethodology.html#FromNothingToMonumentalToAgile
  7. A typical iteration process flow can be visualized as follows: Requirements - Define the requirements for the iteration based on the product backlog, sprint backlog, customer and stakeholder feedback Development - Design and develop software based on defined requirements Testing - QA (Quality Assurance) testing, internal and external training, documentation development Delivery - Integrate and deliver the working iteration into production Feedback - Accept customer and stakeholder feedback and work it into the requirements of the next iteration
  8. Explicar conceitos ágeis, meeting, daily, review, e como tu faz isso no teu dia a dia Code review: - Falar que todo projeto tem ao menos 2 developers. - PR;
  9. Iremos ver como Python facilita o processo de desenvolvimento ágil a partir dos 4 valores do manifesto ágil
  10. Tornam possível juntar muitas funcionalidades em poucas linhas de código, sem sacrificar a legibilidade. Ele abstrai tantas coisas para você, ajudando você a se concentrar no que você realmente está tentando codificar, sem ficar preso nas ervas daninhas das pequenas coisas, como se você deve usar um vetor ou uma matriz. Comparação de tipos de dados de python com outras linguagens: http://www.programcreek.com/2012/09/java-vs-python-data-types/
  11. Generators, Duck Typing
  12. https://en.wikipedia.org/wiki/Duck_typing#In_Python
  13. Não dá pra dizer ao certo, mas segundo uma pesquisa sobre o que o GitHub tem a nos dizer sobre os estereótipos entre programadores https://tecnoblog.net/198814/github-estereotipos-programadores/
  14. geralmente cada pessoa integra pelo menos diariamente - levando a múltiplas integrações por dia. Cada integração é verificada por uma compilação automatizada (incluindo teste) para detectar erros de integração o mais rápido possível. Permitindo que as equipes detectem problemas com antecedência. Diga adeus às integrações longas e tensas Aumentar a visibilidade permitindo maior comunicação Pegue problemas antecipadamente e aperte-os Gaste menos depuração no tempo e mais tempo adicionando recursos Construir uma base sólida Pare de aguardar para descobrir se seu código vai funcionar Reduzir os problemas de integração permitindo que você entregue o software mais rapidamente
  15. Manter um Repositório de Origem Única Automatizar a compilação Fazer a compilação “testável” Todos commitam em master todos os dias Cada Commit deve compilação gerar um teste Every Commit Should Build the Mainline on an Integration Machine Corrigir as compilações quebradas imediatamente Mantenha a compilação rápida Testar em um clone do ambiente de produção Tornar fácil para qualquer um obter o executável mais recente Todos podem ver o que está acontecendo Automatizar o Deploy
  16. Iremos ver como Python facilita o processo de desenvolvimento ágil a partir dos 4 valores do manifesto ágil
  17. The Python development team builds and tests on many machines, architectures and configurations. These variations are divided into two categories: stable and unstable. The stable versions are the primary platforms that should always have all tests passing. This guide is a comprehensive resource for contributing to Python Experiência
  18. User stories - garantir que o time entendeu a requisição do cliente TDD - garantir que depois das mudanças o que tinha antes ainda vai estar funcionando
  19. experiencia
  20. Iremos ver como Python facilita o processo de desenvolvimento ágil a partir dos 4 valores do manifesto ágil
  21. Produtividade é a expressão de eficiência de qualquer negócio. Python abstrai tantas coisas, que te ajuda a focar no que realmente importa, ao invés de te prender no dilema de ter que usar um vetor ou um array
  22. Arrow is a Python library that offers a sensible, human-friendly approach to creating, manipulating, formatting and converting dates, times, and timestamps. It implements and updates the datetime type, plugging gaps in functionality, and provides an intelligent module API that supports many common creation scenarios. Simply put, it helps you work with dates and times with fewer imports and a lot less code. Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It can use GPUs and perform efficient symbolic differentiation.