the real time web




Desenvolvimento ágil com Python


                  Christiano Anderson
                  diretor de desenvolvimento

                  anderson@nodeware.com.br
                  Twitter: @dump / @nodeware
                  Blog: http://christiano.me
Sobre o palestrante
● Trabalha com software livre desde 1995;
● Sócio fundador da Nodeware;
● Ex-desenvolvedor do Projeto GNU;
● Trabalha com Python desde 2000;
● Evangelista NoSQL, Django e Node.JS
● Colabora com equipe de tradução do MongoDB;
● Fundador do MUG-SP
Twitter: @dump
Sobre a Nodeware




● Empresa nova, mas com corpo técnico atuante
  desde o início da internet comercial no Brasil;
● Foco em Python, soluções emergentes, nuvem,
  NoSQL, Node.JS, georreferenciamento e CMS;
● Parceira 10gen, Amazon AWS;
● Conheça mais em http://www.nodeware.com.br
Twitter: @dump
Qual o desafio?
● Toda empresa de software precisa estar inovar, estar vários
  passos à frente de seus concorrentes;
● Precisa desenvolver soluções rapidamente;
● Precisa reduzir ao máximo qualquer desperdício (seja
  tempo, código mal escrito, bugs, etc);
● Manter equipe sempre motivada e produtiva;
● Colaborar com a comunidade de software livre;
● Ter tempo para tomar uma cerveja, ninguém vive só de
  trabalho! :-)



Twitter: @dump
O que fazer...
● Escolher uma boa metodologia para desenvolvimento de
  software;


● Criar padrões e metas de qualidade;


● Reduzir ao máximo qualquer desperdício (seja tempo,
  código mal escrito, bugs, etc);


● Motivação, um dos fatores de sucesso;


Twitter: @dump
Metodologia SCRUM?


● Processo de desenvolvimento ágil, iterativo e
     incremental;
● Entregas menores, mas regulares;
● Equipes multi-disciplinares;




Twitter: @dump
Rugby




Twitter: @dump
União faz a força


● A equipe precisa estar unida;
● Se um membro da equipe SCRUM cair, pode
     levar todo o time junto;
● Todo mundo se ajuda;
● Equipes são auto-gerenciáveis;


Twitter: @dump
Papeis


● Scrum Master;
● Product Owner;
● Equipe;




Twitter: @dump
Sprint




Twitter: @dump
Sprint
● Um Backlog (conjunto de requisições) é
     definida nas reuniões de Sprint;
● Cada Sprint dura de 2 a 4 semanas (geralmente
     fazemos de 2 semanas);
● Ao finalizar um Sprint, uma retrospectiva é
     feita para verificar prós e contras;


Twitter: @dump
Gráfico de Burndown




Twitter: @dump
Kanban




Twitter: @dump
Kanban
● Ótima ferramenta para controlar backlog e
     manter a equipe motivada;
● Cada postit representa uma tarefa que deve ser
     realizada naquele dia;
● No fim de cada dia, as tarefas devem ser
     movidas para a coluna "feito".


Twitter: @dump
Kanban
● É uma maneira eficiente para identificar rapidamente
     impedimentos;
● Em caso de impedimentos, o gerente de projetos deve agir
     imediatamente e determinar a solução mais rápida para não
     prejudicar o Sprint;
● Sprint bom é Sprint concluído sem impedimentos;
● Dica: Ótima ferramenta para Kanban Online: http://trello.
     com


Twitter: @dump
Links
● http://www.trello.com/


● http://www.pivotaltracker.com/


● http://www.rallydev.com/


● http://www.myintervals.com/



Twitter: @dump
A metodologia foi definida, agora vamos
     à linguagem de programação




Twitter: @dump
Python?


● Criada em 1991 por Guido van Rossum;
● Linguagem de alto nível, interpretada, orientada
     a documentos e com tipagem forte;
● Pode ser aplicada para servidores, desktop,
     desenvolvimento web e mobile;


Twitter: @dump
Python?


● Muito utilizada por grandes empresas, como
     Google, Amazon, Governo Federal, Globo.com,
     etc;
● Possui uma comunidade forte e atuante;




Twitter: @dump
Python?


● Linguagem madura, estável, segura
● Possui uma ótima curva de aprendizado;
● Um ótimo mercado de trabalho, muitas vagas
     em aberto! Está na hora de aprender Python!




Twitter: @dump
Python para ciência


● Módulo SciPy permite usar Python para
     aplicações científicas, cálculos, matplotlib, entre
     outros.
● http://www.scipy.org/




Twitter: @dump
Criando jogos com Python




Twitter: @dump
Criando jogos com Python




Twitter: @dump
Criando jogos com Python




Twitter: @dump
Criando jogos com Python




Twitter: @dump
Criando jogos com Python




http://www.pygame.org/




Twitter: @dump
Aplicações Desktop com Python




Twitter: @dump
Aplicações Desktop com Python




Twitter: @dump
Aplicações Desktop com Python




http://www.wxpython.org/




Twitter: @dump
Django?


● Framework web, desenvolvido em Python;
● Permite desenvolvimento de aplicações web de forma ágil,
     com alto índice de reaproveitamento de código;
● Utiliza modelo MVC (ou melhor, MTV);
● O framework para quem se preocupa com prazos!




Twitter: @dump
Django?


● Possui suporte completo a GIS
     (georreferenciamento);
● Sistema de templates avançado;
● ORM bastante poderoso;
● Permite dividir o projeto em aplicações
     separadas;
Twitter: @dump
Django?


● Além disso, ótimo para trabalhar com
     metodologias ágeis, como SCRUM;




Twitter: @dump
Sites feitos em Django




Twitter: @dump
Sites feitos em Django




Twitter: @dump
Sites feitos em Django




Twitter: @dump
DRY - Don't Repeat Yourself

     Não faça repetições, seja produtivo!




Twitter: @dump
Conclusão
● Qualquer indivíduo ou empresa pode desenvolver
     softwares com qualidade e agilidade, escolhendo as
     ferramentas e metodologias adequadas;
● Python com Scrum fez da Nodeware uma empresa
     altamente produtiva, capaz de desenvolver softwares
     complexos com eficiência;
● O mercado está precisando de bons programadores Python
     que pensem de forma ágil. #ficadica


Twitter: @dump
Perguntas?




Twitter: @dump
Obrigado!!!!
  Se não deu tempo de responder sua dúvida durante a
  palestra, me pare no corredor ou entre em contato:


                 Christiano Anderson
                 anderson@nodeware.com.br
                 http://christiano.me
                 @dump


Twitter: @dump

Scrum

  • 1.
    the real timeweb Desenvolvimento ágil com Python Christiano Anderson diretor de desenvolvimento anderson@nodeware.com.br Twitter: @dump / @nodeware Blog: http://christiano.me
  • 2.
    Sobre o palestrante ●Trabalha com software livre desde 1995; ● Sócio fundador da Nodeware; ● Ex-desenvolvedor do Projeto GNU; ● Trabalha com Python desde 2000; ● Evangelista NoSQL, Django e Node.JS ● Colabora com equipe de tradução do MongoDB; ● Fundador do MUG-SP Twitter: @dump
  • 3.
    Sobre a Nodeware ●Empresa nova, mas com corpo técnico atuante desde o início da internet comercial no Brasil; ● Foco em Python, soluções emergentes, nuvem, NoSQL, Node.JS, georreferenciamento e CMS; ● Parceira 10gen, Amazon AWS; ● Conheça mais em http://www.nodeware.com.br Twitter: @dump
  • 4.
    Qual o desafio? ●Toda empresa de software precisa estar inovar, estar vários passos à frente de seus concorrentes; ● Precisa desenvolver soluções rapidamente; ● Precisa reduzir ao máximo qualquer desperdício (seja tempo, código mal escrito, bugs, etc); ● Manter equipe sempre motivada e produtiva; ● Colaborar com a comunidade de software livre; ● Ter tempo para tomar uma cerveja, ninguém vive só de trabalho! :-) Twitter: @dump
  • 5.
    O que fazer... ●Escolher uma boa metodologia para desenvolvimento de software; ● Criar padrões e metas de qualidade; ● Reduzir ao máximo qualquer desperdício (seja tempo, código mal escrito, bugs, etc); ● Motivação, um dos fatores de sucesso; Twitter: @dump
  • 6.
    Metodologia SCRUM? ● Processode desenvolvimento ágil, iterativo e incremental; ● Entregas menores, mas regulares; ● Equipes multi-disciplinares; Twitter: @dump
  • 7.
  • 8.
    União faz aforça ● A equipe precisa estar unida; ● Se um membro da equipe SCRUM cair, pode levar todo o time junto; ● Todo mundo se ajuda; ● Equipes são auto-gerenciáveis; Twitter: @dump
  • 9.
    Papeis ● Scrum Master; ●Product Owner; ● Equipe; Twitter: @dump
  • 10.
  • 11.
    Sprint ● Um Backlog(conjunto de requisições) é definida nas reuniões de Sprint; ● Cada Sprint dura de 2 a 4 semanas (geralmente fazemos de 2 semanas); ● Ao finalizar um Sprint, uma retrospectiva é feita para verificar prós e contras; Twitter: @dump
  • 12.
  • 13.
  • 14.
    Kanban ● Ótima ferramentapara controlar backlog e manter a equipe motivada; ● Cada postit representa uma tarefa que deve ser realizada naquele dia; ● No fim de cada dia, as tarefas devem ser movidas para a coluna "feito". Twitter: @dump
  • 15.
    Kanban ● É umamaneira eficiente para identificar rapidamente impedimentos; ● Em caso de impedimentos, o gerente de projetos deve agir imediatamente e determinar a solução mais rápida para não prejudicar o Sprint; ● Sprint bom é Sprint concluído sem impedimentos; ● Dica: Ótima ferramenta para Kanban Online: http://trello. com Twitter: @dump
  • 16.
    Links ● http://www.trello.com/ ● http://www.pivotaltracker.com/ ●http://www.rallydev.com/ ● http://www.myintervals.com/ Twitter: @dump
  • 17.
    A metodologia foidefinida, agora vamos à linguagem de programação Twitter: @dump
  • 18.
    Python? ● Criada em1991 por Guido van Rossum; ● Linguagem de alto nível, interpretada, orientada a documentos e com tipagem forte; ● Pode ser aplicada para servidores, desktop, desenvolvimento web e mobile; Twitter: @dump
  • 19.
    Python? ● Muito utilizadapor grandes empresas, como Google, Amazon, Governo Federal, Globo.com, etc; ● Possui uma comunidade forte e atuante; Twitter: @dump
  • 20.
    Python? ● Linguagem madura,estável, segura ● Possui uma ótima curva de aprendizado; ● Um ótimo mercado de trabalho, muitas vagas em aberto! Está na hora de aprender Python! Twitter: @dump
  • 21.
    Python para ciência ●Módulo SciPy permite usar Python para aplicações científicas, cálculos, matplotlib, entre outros. ● http://www.scipy.org/ Twitter: @dump
  • 22.
    Criando jogos comPython Twitter: @dump
  • 23.
    Criando jogos comPython Twitter: @dump
  • 24.
    Criando jogos comPython Twitter: @dump
  • 25.
    Criando jogos comPython Twitter: @dump
  • 26.
    Criando jogos comPython http://www.pygame.org/ Twitter: @dump
  • 27.
    Aplicações Desktop comPython Twitter: @dump
  • 28.
    Aplicações Desktop comPython Twitter: @dump
  • 29.
    Aplicações Desktop comPython http://www.wxpython.org/ Twitter: @dump
  • 30.
    Django? ● Framework web,desenvolvido em Python; ● Permite desenvolvimento de aplicações web de forma ágil, com alto índice de reaproveitamento de código; ● Utiliza modelo MVC (ou melhor, MTV); ● O framework para quem se preocupa com prazos! Twitter: @dump
  • 31.
    Django? ● Possui suportecompleto a GIS (georreferenciamento); ● Sistema de templates avançado; ● ORM bastante poderoso; ● Permite dividir o projeto em aplicações separadas; Twitter: @dump
  • 32.
    Django? ● Além disso,ótimo para trabalhar com metodologias ágeis, como SCRUM; Twitter: @dump
  • 33.
    Sites feitos emDjango Twitter: @dump
  • 34.
    Sites feitos emDjango Twitter: @dump
  • 35.
    Sites feitos emDjango Twitter: @dump
  • 36.
    DRY - Don'tRepeat Yourself Não faça repetições, seja produtivo! Twitter: @dump
  • 37.
    Conclusão ● Qualquer indivíduoou empresa pode desenvolver softwares com qualidade e agilidade, escolhendo as ferramentas e metodologias adequadas; ● Python com Scrum fez da Nodeware uma empresa altamente produtiva, capaz de desenvolver softwares complexos com eficiência; ● O mercado está precisando de bons programadores Python que pensem de forma ágil. #ficadica Twitter: @dump
  • 38.
  • 39.
    Obrigado!!!! Senão deu tempo de responder sua dúvida durante a palestra, me pare no corredor ou entre em contato: Christiano Anderson anderson@nodeware.com.br http://christiano.me @dump Twitter: @dump