TTLabs Summit Q3/2012! Me formei e agora? Preparado para o mercado ou para academia? por @m_andreazza

Esta apresentação foi feita dentro do TTLabs Summit Q3/2012, que ocorreu no dia 14/set/2012 na Trevisan Tecnologia.

Se olharmos jornais, blogs, notícias, sites de empregos todas elas vão lhe dizer a mesma coisa: “Sobram vagas no mercado de TI”. Mas será que realmente faltam profissionais na área ou faltam profissionais qualificados, mas principalmente, em sincronia com o que o mercado realmente está necessitando.

Esta minha light talking tem como objetivo passar um pouco da idéia referente sobre o que realmente a academia está preparando para o mercado. Assuntos como Agile, Lean Software Development, Continuos Integration, Kanban, Lean Startup, Scrum, XP, Design Pattern, TDD, Unit Test ainda são coisas raras de se encontrar dentro de uma estrutura curricular.

Veja a apresentação no slideshare e o vídeo no youtube.

Mauricio é desenvolvedor web a mais de 5 anos e nos últimos 2 anos vem trabalhando com metódos ágeis tanto na gestão como em práticas de engenharia. Gosto bastante de discutir sobre boas práticas de engenharia e principalmente sobre processos de desenvolvimento de software com seus gargalos e disperdícios. Você pode me encontrar no twitter através do @m_andreazza

 

 

Continuous Delivery! Sua empresa está preparada?

Ainda depois de mais de 11 anos praticando agilidade, muitas são as equipes de desenvolvimento de software que sonham em realizar um deploy a partir de um simples click. O que geralmente ocorre é que as organizações e seus respectivos times/produtos muitas vezes não estão preparados para este grande passo. 

Para ilustrar e enriquecer este post, acompanhe algumas dicas e aprendizados adquiridos através de experiências e treinamentos como por exemplo com o autor do livro Continuous Delivery, @jezhumble.


O quão ágil é o seu time?

Hoje em dia não raros são os times de desenvolvimento de software que se consideram “ágeis”, ou que buscam nas praticas ágeis a base para seus ciclos de desenvolvimento. @Jezhumble costuma questionar o quão ágil um time de desenvolvimento é. E o mais importante, como chegar a uma métrica para mensurar tal informação. A reposta mais simples possível vem do mesmo @jezhumblee, onde ele sugere mensurar o quão rápido seu time consegue entregar software de qualidade a seus clientes. #ficaadica

Seu time está preparado para entregar software de forma contínua?

Ainda falando em desenvolvimento àgil de software, temos como premissa a entrega de software agregando valor ao negócio do cliente. Desta forma muitas equipes pecam na tentativa de estabelecer uma linha de entrega contínua a seus clientes, onde os motivos vão desde erros operacionais básicos das equipes até mesmo o despreparo por parte do cliente em relação ao modelo de entrega proposto.

Para evitar os pecados mencionados anteriormente, procure criar uma cultura de entrega continua. Faça com que a entrega de versões ou a simples entrega de uma nova funcionalidade faça parte do planejamento de cada equipe e não apenas após finalizado a codificação da mesma. Discuta estratégia de entregas. Discuta, reforce, defina o conceito de “PRONTO” com o seu time e lembre-se, tarefa pronta significa valor entregue ao cliente em produção.

Automação

Novamente parafraseando @jezhumble “… automação é tudo” ou talvez seria para tudo? O fato é que automação é um ponto chave para quem busca realizar entregas consistentes independentemente do tamanho do ciclo de desenvolvimento trabalhado.

Garanta através de “mecanismos de segurança” constantes validações sob a versão ainda em desenvolvimento, gerando feedback constante e garantindo que a linha de produção não pare, ou se caso venha parar que volte a produzir o quanto antes possível. Entre estes mecanismos estão a automação de testes validando a versão a cada commit realizado. Integrar continuamente a versão corrente evitado surpresas ao fechar versões para produção ou então rodar noturnamenta suites de regressões antecipando não conformidades geralmente identificadas apenas na validação de versões pré-produção.

Eliminar processos complexos e consequentemente dificeis de serem executados é um fator muito importante na automação de tarefas. Se uma tarefa é complexa para ser executada, talvez necessite ser executada com mais frequência buscando assim alternativas e soluções mais simples de serem executadas.

Não elimine a intervenção das pessoas no processo de entrega, pessoas são ótimas em heuristica.

“… se é demorado é porque é dificil, se é dificil é porque é manual, se é manual precisa ser automatizado”

 Continuous Deployment e Continuous Delivery

Os termos Continuous Deployment e Continuous Delivery podem nos gerar confusão. Pois bem vamos exemplificar o conceito de cadas um deles abaixo:

  • Continuous Deployment: É caracterizado pelo fechamento de builds de software funcionais.

Ex.: Realizar o fechamento de versão e realizar o deploy no ambiente de homologação a cada nova funcionalidade uma vez validada pelos testes. Note não estamos entregando software em produção. 

  • Continuous Delivery: Pode ser considerado o passo de simplesmente agregar valor ao negócio propriamente dito. Conforme o ambiente, baterias de validações podem fazer parte deste processo intermediado diretamente pelo pessoal de negócio, ou simplesmente em ambientes automatizados este mesmo time decide qual o melhor entregável deve ser promovido para produção clicando no botão “release”. http://goo.gl/QkaO 

Cultura DevOps 

Leve para dentro de seu time a cultura DevOps, fazendo o time de desenvolvimento sentir as dores atuais para realizar a liberação de uma nova versão. Fazer do time de operações uma extensão do time de desenvolvimento ou vice-versa.

Esta maior integração propicia ao desenvolvedor uma maior responsabilidade dentro do processo de liberação de novas versões. A prática de code refactoring não pode ser vista como ato de heroísmo e sim de responsabilidade e respeito para com o time. Um desenvolvedor deve garantir que após realizar uma refatoração em uma parte do sistema, tudo deve continuar funcionando conforme anteriormente.

Realize eventos para apresentar grandes mudanças no software, evitando assim também grandes surpresas e processos de rollbacks/fallbacks traumáticos. Mas esteja sempre preparado para executá-los da melhor forma possível.

Estude melhores práticas e formas de modo a facilitar o bom andamento do ciclo de desenvolvimento de seu time tais como:

  • Feature Toogles;
  • Feature Branching; 
  • Blue-Green Deployment;
  • Virtualização etc …

Pratique Chaos Monkey! Aprenda com suas falhas e a melhor forma de fazer isso é falhar frequentemete. Certifique-se de que sua infraestrutura pode ser recriada através do seu controle de versão, incluindo scripts de toda e qualquer espécie.

      Você viu nosso canal no youtube?

      De vez em quando gravamos algumas palestras. Várias delas foram publicadas no nosso canal do Vimeo. Aí queríamos colocar alguns vídeos maiores e por outras restrições, criamos um canal no youtube para publicar as histórias. 

      Então fica a dica do nosso novo canal no youtube

      Quem escreveu este post? Daniel Wildt é CTO da Trevisan Tecnologia e curte ajudar o time a melhorar continuamente. Site no danielwildt.com e twitter @dwildt.

      TTLabs Podcast #4

      E chega o mais novo episódio do nosso podcast!!!

      Nesta edição falamos um pouco dos eventos que a equipe da TTLabs participou, tais como BrazilJS, Agile Brazil 2012, RS on Rails 2012 entre outros.

      Então não perca mais tempo e curta abaixo o nosso podcast!

      Abaixo segue o link dos eventos mencionados no nosso podcast:

       

      GUTS

      Grupo no google-groups: https://groups.google.com/d/forum/guts-rs-sucesu

      Blog http://guts-rs.blogspot.com.br/

      Post sobre o GUTS 20 minutes no blog: http://guts-rs.blogspot.com.br/2012/08/sobre-o-evento-guts-rs-20-minutes.html

       

      IASA

      Grupo no google-groups: https://groups.google.com/d/forum/iasaportoalegre

      Site da Zenvia: http://www.zenvia.com.br/

      Sobre ECA: http://en.wikipedia.org/wiki/Event_condition_action

       

      Seminário PMI

      Site: http://www.seminario.pmirs.org.br/site/home

      Sobre Lean: http://en.wikipedia.org/wiki/Lean_manufacturing

      Site do Almyr Klink: http://www.amyrklink.com.br/

       

      BrazilJS

      Site: http://braziljs.com.br/

      Site do @BrendanEich: https://brendaneich.com/

      Site do @cowboy: http://benalman.com/

      Site do GruntJS: http://gruntjs.com/

      Site do @fat: http://byfat.xxx/

      Sobre twitter-bootstrap: http://twitter.github.com/bootstrap/

      Site do @firt: http://firt.mobi/

      Site do @maujor: http://www.maujor.com/

      Site do @bernarddeluna: http://bernarddeluna.com/

       

      Startup Dev Rumble

      Site: http://startupdev.com.br/rumble/pt/

      Facebook do Cardapiaria: https://www.facebook.com/Cardapiaria

      Site RubyOnRails: http://rubyonrails.org/

      Site jQuery Mobile: http://jquerymobile.com/

       

      AgileBrazil

      Site: http://www.agilebrazil.com/2012/

      Site da InfoQ: http://www.infoq.com/br

      Sobre Cecilia Fernandes: http://www.caelum.com.br/instrutores/cecilia-fernandes/

      Site do James Shore: http://jamesshore.com/

      Livro “The Art of Agile Development”: http://bit.ly/PFZ5za

      Sobre Slack: http://bit.ly/xWCAqz

       

      RSOnRails

      Site: http://rsonrails.com.br/

       

      Startup Dojo

      Grupo no facebook: https://www.facebook.com/groups/319499808099995/

      Sobre Business Canvas: http://www.businessmodelgeneration.com/canvas

       

      NoSummit

      Site: http://nosummit.com/

      Post sobre o NoSummit do @dwildt: http://bit.ly/RSn6Bn

      Twitter do Manoel Pimentel: https://twitter.com/manoelp

       

      GUDAY

      Inscrições: http://www.sucesurs.org.br/eventos/guday/inscricao

       

      DevRS.Net

      Site do evento: http://www.sucesurs.org.br/evento/1o-evento-devrs-net-sucesu-rs

      Genchi Genbutsu – Vá e veja com seus próprios olhos!

      Postei lá no Pingos de Agilidade sobre Genchi Genbutsu.

       

      Quantas vezes durante sua carreira você trabalhou na solução de um problema, que na verdade, não existia?

      Ou utilizou uma informação incorreta para criar uma funcionalidade em seu software?

      Ou tomou alguma decisão baseada em boatos que escutou pelos corredores?

      Eu já passei por isto algumas vezes, e provavelmente você também.

      O que precisamos fazer é simples: Genchi Genbutsu!

      Vá e veja com seus próprios olhos!

      Quando um cliente te pedir uma funcionalidade nova, que por exemplo, resolva um problema em sua linha de produção, vá até o cliente e veja com seus próprios olhos como funciona a linha de produção e qual é o problema do cliente.

      O ponto aqui é: Vá na origem, observe pessoalmente, verifique dados, em vez de teorizar com base no que os outros te falam.

      Quando você vê algo por si mesmo, você entende completamente a situação, e não é traído pelas falhas de comunicação que ocorrem com frequência.

      Isto vai exigir que você saia da famigerada zona de conforto, mas você vai reduzir significativamente o desperdício de energia (e muitas linhas de código) para resolver problemas que na verdade não existem. 😉

       

      Qualidade em aplicações Android com Robotium

      A qualidade é uma característica impressindível para quem deseja fornecer seu software ao mercado, independente da plataforma para o qual seu produto é desenvolvido. Por mais inovador e atrativo que seu produto seja, a ocorrência de bugs pode trazer problemas e até mesmo a sua desaprovação por parte de seus clientes.

      Os testes de software são importantes para garantir a qualidade dos produtos desenvolvidos. Com a utilização de testes os problemas existentes no software podem ser encontrados e corrigidos antes destes chegarem aos clientes. Entre as principais técnicas de testes de software, está o teste funcional, que avalia o comportamento externo do software simulando a interação entre este e o usuário, sem considerar seu comportamento interno.

      Os testes funcionais podem ser realizados manualmente, por um integrante da equipe de desenvolvimento. Este deve navegar pelo software seguindo um roteiro que esteja de acordo com os requisitos que o software deve atender. A execução manual de testes funcionais pode trazer alguns problemas como a necessidade de dedicação de uma ou mais pessoas em tempo integral para a tarefa ou então a execução realizada de última hora e não realizada corretamente, dificultando a descoberta de bugs antes que estes cheguem até o cliente.

      Para quem não deseja enfrentar estes problemas, a solução é a automação dos testes funcionais. Os testes automatizados podem ser criados pelos próprios desenvolvedores e executados automaticamente, sem a dedicação de integrantes da equipe de desenvolvimento de software. Além de reduzir os custos de desenvolvimento, os testes automatizados são executados mais rapidamente que os testes manuais e podem ser integrados a ferramentas de integração contínua, tornando possível a execução dos testes sempre que necessário. Estes fatores aumentam consideravelmente a qualidade do produto desenvolvido.

      Os desenvolvedores de aplicações para a plataforma Android possuem uma excelente opção para esta tarefa. O Robotium, um framework open source de automação de testes funcionais em aplicações desenvolvidas para a plataforma Android, que permite a sua utilização de maneira muito simples.

      Entre as características do Robotium, podem ser destacadas:

      – Open source, o que permite alterações, melhorias e também contribuições com o desenvolvimento do projeto;

      – Desenvolvimento dos testes em Java, a mesma linguagem utilizada para o desenvolvimento das aplicações;

      – Segue os padrões JUnit e para quem já o utiliza para o desenvolvimento de testes unitários é ainda mais tranquilo;

      – Os testes podem ser executados em dispositivos e não apenas no emulador, o que possibilita um resultado mais realista sobre os testes;

      – Pode ser integrado a ferramentas de integração contínua.

      – Possui suporte a Activities, Dialogs, Toasts, Menus and Context Menus;

      Mais informações sobre o Robotium podem ser encontrados no slideshare e no vídeo abaixo. A página do projeto Robotium possui tutoriais e exemplos para iniciar a utilização deste framework, incluindo o exemplo demonstrado na apresentação.

      Post escrito por Elvirio Daniel Hans Junior, programador Na Trevisan Tecnologia, iniciando no desenvolvimento mobile.

      TTLabs Summit Q3/2012! Qual é o seu tempo? por @dwildt

      Esta apresentação foi feita dentro do TTLabs Summit Q3/2012, que ocorreu no dia 14/set/2012 na Trevisan Tecnologia.

      Você já parou para pensar onde vai todo o seu tempo? Conhece alguém que sempre reclama que não tem tempo para nada? E alguém que só reclama do emprego e não reflete como sua vida poderia ser diferente? Já pensou em viver seu tempo? Em definir um novo estilo de vida?    

      Em resumo: #VivaSeuTempo  

      Eu penso que se sei gerenciar meu tempo, saberei controlar melhor minha atuação no dia a dia profissional e pessoal. Isto vai ajudar meu time de trabalho e as iniciativas que faço parte.  

      Esta palestra é originalmente um workshop de três horas. Fiz um esforço para apresentar a mesma em menos de 6mins. Consegui em 5min59segundos. 🙂  Busquei levantar algumas técnicas diferentes para apoiar o seu dia e ajudar a entender os impactos nas atividades que realizamos.    

      Só que as técnicas são apoio, não o essencial. O importante é refletir. Ter um momento para gerar consciência do que você está fazendo com o seu tempo. E assim buscar entender se o direcionamento dele está adequado. Se está alinhado com o seu propósito e seu estilo de vida. A propósito, qual o seu propósito? E seu estilo de vida?  

      Veja a apresentação no slideshare e o vídeo no youtube

      Daniel Wildt trabalha com empresas e equipes ajudando na adoção de metodologias ágeis e melhoria das técnicas de engenharia de software. Sempre em busca de simplicidade e aprendizado. Ajudo pessoas a se tornarem melhores profissionais, equipes a crescerem através de melhoria contínua e produtos a serem formados. Sou CTO na Trevisan Tecnologia (http://www.trevisantecnologia.com.br), tenho um blog no http://danielwildt.com e posso ser visto no twitter @dwildt.

      TTLabs Summit Q3/2012! Veja o lineup do dia!

      Hoje pela manhã fizemos mais uma edição do TTLabs Summit, edição Q3/2012. Deixo aqui o lineup das apresentações que foram realizadas. Conforme formos processando slides e vídeos, iremos publicar novos posts a respeito! 

      Palestras:

      1. Daniel Wildt Qual é o seu tempo?
      2. Maurício Sganderla Me formei e agora? Preparado para o mercado ou para academia?
      3. Elvírio Hans Qualidade em aplicações Android com Robotium
      4. Guilherme Elias Fazer Mais … Com menos … Porém Sempre!!
      5. Rafael Helm [DES]especialize-se!

      Aguarde os próximos posts com slides e vídeos das palestras! 
      E ainda depois do fim do Summit aproveitamos para gravar mais um podcast! Enquanto não chega o novo, vai ouvindo os que já temos gravados

      Quem escreveu este post? Daniel Wildt é CTO da Trevisan Tecnologia e curte ajudar o time a melhorar continuamente. Site no danielwildt.com e twitter @dwildt.

       

      Processos de seleção – como tratar um desenvolvedor?

      A palavra aqui é feedback

      Quando estamos contratando alguém, estamos criando uma relação. Entre a empresa e a pessoa que estamos conversando. Entre as pessoas que estão representando a empresa e a pessoa que está se candidatando. É um processo. Se der tudo certo, você tem uma pessoa nova na sua equipe. Se não der certo, você passou a conhecer uma pessoa que pode aprender e contribuir com sua empresa.  

      Na lista de eXtreme Programming do Yahoo Groups, está rolando uma discussão sobre pedir “sample code” para os candidatos. Mandei minha opinião por lá, e coloco a mesma abaixo. Se você quiser saber mais sobre o nosso processo de seleção, fizemos alguns posts aqui e no meu blog também coloquei algumas coisas buscando ajudar profissionais nos seus processos de seleção e também networking. Mas aqui o foco é falar do processo de seleção. Termino com a mensagem que mandei lá na lista de discussão. 

      In my company, we do coding dojos every week.  

      During 1 hour per week we play with some sort of problem and experience different programming languages and put ourselves in situations to work with Pairing, Communication, Design (Unit Testing + Refactoring + OO + Patterns).  

      With that, when we are hiring, we ask people to play with one of our problems, in the language we are mostly looking for at the moment. We ask people to play during 1 hour at most. We don’t need the code 100% done. We need some sort of code in order to talk to the candidate in another way. We want to check how the candidate play with feedback and small refactorings in the source code. When possible, we bring people to pair with us.  

      Also, we have a good talk before and after, to check one specific thing: the attitude.  We want to make sure that the candidate attitude is aligned with our team attitude.  

      And for those people who don’t pass this process, we give real feedback with references for extra study, saying where they  can improve. With that, we get new friends and someone to follow our process. 

      Quem escreveu este post? Daniel Wildt é CTO da Trevisan Tecnologia e curte ajudar o time a melhorar continuamente. Site no danielwildt.com e twitter @dwildt.

      Eventos Junho, Julho e Agosto … Confiram!

      Ttlabspodcast

      Enfim nosso terceiro episódio!!!

      Para esta edição fizemos um compacto sobre alguns eventos realizados no mês de junho e alguns outros eventos a serem realizados nos próximos meses.

      Falamos sobre o Agile Game Night, evento realizado pelo GUMA-RS e também sobre o Coderwall.

      Para finalizar aproveitando o espaço de merchandising gratuito 🙂 falamos sobre o Agile Brazil 2012 que será realizado neste ano em São Paulo e também sobre o evento do GUTS-RS bem como da palestra “Permissão para mudar” que será realizado na Escola livre.

       

       

      #FicaADica: