the real time web
Desenvolvimento ágil com Python
Christiano Andersondiretor de desenvolvimento
[email protected]: @dump / @nodewareBlog: 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
Twitter: @dump
Rugby
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
Twitter: @dump
http://www.pygame.org/
Aplicações Desktop com Python
Twitter: @dump
Aplicações Desktop com Python
Twitter: @dump
Aplicações Desktop com Python
Twitter: @dump
http://www.wxpython.org/
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!!!!
Christiano Anderson
http://christiano.me
@dump
Twitter: @dump
Se não deu tempo de responder sua dúvida durante a palestra, me pare no corredor ou entre em contato: