SlideShare ist ein Scribd-Unternehmen logo
1 von 76
Downloaden Sie, um offline zu lesen
Groovy
    &
  Grails
Victor Hugo Germano
      #lambda3   http://www.flickr.com/photos/montreal1976/4502659151
“Quando você programa em Groovy,
de várias formas você está escrevendo
       um tipo especial de Java.”

                               -Dierk König
                            Groovy in Action
Integração transparente
             com Java
Suporta Tipagem
    Estática          bytcode

     Groovy
 Sintaxe Similar Linguagem Dinâmica
                      para JVM
Meta Object Protocol
file.groovy            file.java




 bytecode             bytecode



   The Java Virtual Machine
http://www.flickr.com/photos/oskay/472097903/
Uma classe em Java
 public class HelloWorld {
   private String name;

     public String getName() {
       return name;
     }
     public void setName(String message) {
       this.name = message;
     }
     public String message() {
       return "Hello World of "+this.name;
     }
     public static void main(String[] args) {
       HelloWorld hello = new HelloWorld();
       hello.setName("Grooooooovy");
       System.out.println(hello.message());
     }
 }
A mesma classe
  em Groovy
 class HelloWorld {
   String name
   def message() {
      "Hello World of $name"
   }
 }
 def hello = new HelloWorld(name:"Grooovy")
 println hello.message()
http://www.flickr.com/photos/noideas/2323222802/




Conceitos Básicos
Conceitos Básicos

Se você já programa em Java,
você já programa em Groovy!



                    http://www.flickr.com/photos/jeyp/4149695639
Conceitos Básicos
         class Pessoa {
           String nome
           int idade
         }
       void setIdade(idade) {
         this.idade = idade - 4
       }

new Pessoa ( nome: “Zé”, idade: 7)
Conceitos Básicos
   def today = new Date()
   def tomorrow = today + 1


 assert today.before(tomorrow)
 assert tomorrow.after(today)
Operator Overloading
     a+b        a.plus(b)
     a-b       a.minus(b)
     a/b      a.multiply(b)
     a%b      a.modulo(b)
     a ** b   a.power(b)
     a&b        a.and(b)
      a[b]     a.getAt(b)
Operator Overloading
 class Pedido {
    def total
    def plus(Pedido pedido) {
       def result = this.total + pedido.total
       new Pedido(total:result)
    }
  }

  def pedido1 = new Pedido(total: 10)
  def pedido2 = new Pedido(total: 50)

  def pedido3 = pedido1 + pedido2

  println pedido3.total
Special Operatos
 Elvis operator
 def displayName = user.name ? user.name : “No one”
 def displayName = user.name ?: “No one”


  Operador Seguro
   de Navegação
def addr = user?.address?.toUppercase()
Groovy Strings

          http://www.flickr.com/photos/elianarei/3904613032/
Groovy Strings
   public String displayString() {
       return “<u>” + title + “</u> by ” +
               authorName + “, (“ +
               numberOfPages + “ pages)”;
   }


                   Interpolação
String displayString() {
  “<u>$title</u> by $authorName, ($numberOfPages pages)”;
}
Groovy Strings
String displayMultiLineString() {
  “““<u>$title</ul>
     by $authorName,
   ($numberOfPages pages)”””;
}
Collections

         http://www.flickr.com/photos/wisekris/183438282/
Collections
def frutas = [“Banana” , “Pera”, “Maçã” ]


def countries = [ br: “Brazil”,
          us: “United States”,
          ie: “Ireland” ]

println countries.br
Collections
for (c in countries) {
    println c
}


  countries.each {
     println it
  }
Collections
def list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
def sublist = list[0..5]


def square = { it * 2 }
[1, 2, 3].collect(square)== [2, 4, 6]
Collections
private List books;

   public List<Book> findByISBN(String isbnCode) {
      Book result = null;
      if(books != null && isbnCode != null) {
          for (Book book : books) {
              if(book != null && isbnCode.equals(book.getISBN()) ) {
                  result = book;
                  break;
              }
          }
      }
      return result;
   }
Collections
  List books;
	 Book findByISBN(String isbnCode){
	 	 books?.find({it?.isbn == isbnCode});
	 }

  List books;
	 List findAllByAuthor(String authorName){
	 	 books?.findAll({
          it?.author == authorName
          })
	 }
Groovy Truth
Groovy Truth
  def a = true
  def a = false
  assert a
  assert !b
Groovy Truth
def numbers = []
assert numbers // false

def numbers = [1, 2, 3]
assert numbers // true
 Coleções Vazias!
Groovy Truth
assert ‘Verdadeiro’ // true

assert ‘’ // false

          Strings!
Groovy Truth
assert null // false
assert 0 // false

assert (new Object()) // true
assert 1 // true
Objetos e Números!
Closures

      http://www.flickr.com/photos/brizzlebornandbred/4262145162/
Closures
{ Bloco de Código
       ou
 Pointeiro para
  um Método }
Closures
def refParaClosure ={
  parametros ->
  //Código..
}

refParaClosure(p1, p2...)
Let’s play!
     http://www.flickr.com/photos/rogerss1/3232663848
Arquivos
Em
Java!!!!
import java.io.*;
class FileRead 
{
   public static void main(String args[])
  {
      try{
    // Open the file that is the first 
    // command line parameter
    FileInputStream fstream = new FileInputStream("textfile.txt");
    // Get the object of DataInputStream
    DataInputStream in = new DataInputStream(fstream);
   BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String strLine;
    //Read File Line By Line
    while ((strLine = br.readLine()) != null)   {
      // Print the content on the console
      System.out.println (strLine);
    }
    //Close the input stream
    in.close();
    }catch (Exception e){//Catch exception if any
      System.err.println("Error: " + e.getMessage());
    }
  }
}
def file = new File("textfile.txt")
 file.eachLine { line ->
   println line
  }




                      moonbug.org
Arquivos
def file = new File("textfile.txt")
file << ‘Escrevendo no arquivo’

    def dir = new File("c:")
    dir.eachFile {
      println it
    }
Duck Typing

        http://www.flickr.com/photos/catdonmit/2326033244/
Duck Typing
void cuidar(Pato pato) {
     pato.quack()
     pato.andar()
     pato.comer(new Comida(tipo: “peixe”))
 }
Duck Typing
 void fakePato = [
   andar: { },
   quack: { },
   comer: { Comida c -> }
        ]

cuidar(fakePato as Pato)
Metaprogramação
M.O.P.
Meta Object Protocol

Criando código
  gerador de código
Metaprogramação
           MetaClass
          ExpandoClass
    getProperty / setProperty
invokeMethod / invokeStaticMethod
         methodMissing
Metaprogramação
 "Florianópolis".totalDeLetras()

String.metaclass {
  totalDeLetras = { delegate.size() }
}
Builders
import groovy.xml.MarkupBuilder

def mkp = new MarkupBuilder()
mkp.html {
  head {
    title "Minicurso G&G"
  }
  body {
    div(class:"container") {
        p "Lambda3 & Globalcode going dynamic!"
      }
   }
}
http://www.flickr.com/photos/ttdesign/343167590




AST Transformation
AST Transformation
  Metaprogramação em tempo de compilação
public class T {
    public static final T instance = new T();
    private T() {}
    public T getInstance() { (...) }
}


   @Singleton class T { }
AST Transformation
class Pessoa {          class Endereco {
    String nome             String rua
    @Delegate               String cidade
    Endereco endereco       String pais
}                       }


       def pessoa = new Pessoa()
       pessoa.rua = “Avenida Paulista”
       pessoa.cidade = “Sao Paulo”
       pessoa.pais = “Brasil”
http://www.flickr.com/photos/jerica_chingcuangco/3659719599




Can you feel it?
GRAILS
Outro Framework Web?!
           JSPWidget
 Sombrero              Struts
  JSF   OpenXava      Turbine
      SwingWeb
VRaptor
       Cocoon           Calyxo
WebOnSwing           Wicket
        Maverick Tapestry
                 http://www.flickr.com/photos/nwardez/3089933582/in/photostream/
Java Web Development
              JSPWidget
              OpenXava
                Turbine
                  JSF
JEE Struts    Sombrero
              SwingWeb
1999


              VRaptor
              Cocoon
               Calyxo
               Wicket
             WebOnSwing
              Tapestry
              Maverick
                          http://www.itexto.net/devkico/?p=224
Java Web Development
                                       Hibernate


    JEE                 Gerenciar
      1999
                      Complexidade
                                        Spring       Aqui
                                                      jás

                                                   Java para
http://www.itexto.net/devkico/?p=224                 Web
Convenções
      Full Stack
      Scaffolding

Extensibilidade

          http://www.itexto.net/devkico/?p=224
Migrar tudo para
     Rails?
Experiência




Flexibilidade
GRAILS
       http://grails.org

   Groovy é a linguagem base
          Convenções!!

Ambiente Completo (“Full Stack”)

         Extensibilidade
Full Stack
                  Grails




                                              Groovy
Java Enterprise
 Edition (JEE)    Spring Hibernate SiteMesh

                             The Java
 The Java Language        Development Kit
                               (JDK)


           The Java Virtual Machine
Show me
some code!!

        http://www.flickr.com/photos/outime/4250568447
grails create-app library
   grails create-domain-class library.Book


    grails create-controller library.Book



       grails generate-all library.Book


               grails run-app
Forma & Conteúdo
Configuração
environments {
    development {
        dataSource {
            dbCreate = "create-drop"
            url = "jdbc:hsqldb:mem:devDB"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:mem:testDb"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:file:prodDb;shutdown=true"
        }
    }
}
Modelagem de Domínio
  Active Record pattern

        GROM
Groovy Relational Object Mapping
      Dynamic Finders
         Validations
    Hibernate Criterias
Request Handling
 Response / rendering


  Controllers
          “Pense em Servlets, só que melhores!”

Negociação de Conteúdo
     Data Binding
     Interceptors
Parecido com JSPs e ASP
HTML + GSP tags + Taglibs

       Views
   Layouts & Templates
Embedded Groovy Code
  MAS NÃO FAÇA!
Fácil e simples!
Similar ao Routes do Rails

 URL Mapping
      Validations
     URL Encoding
Transacionais por padrão
Guargam Regras de Negócio

  Service Layer
 Diferenciados por Escopo
   Dependency Injection
Testing
          http://www.flickr.com/photos/busyprinting/4671731838
Plugins
IDEs
  http://www.flickr.com/photos/22280677@N07/2504310138/
Minicurso groovy grails
Comunidade
       http://www.flickr.com/photos/badwsky/48435218/
Comunidade
   http://groovy.codehaus.org
          http://grails.org
      http://grailsbrasil.com/
http://github.com/grails/grails-core
 Grails: um guia rápido e indireto
Tá, e daí?




Quem usa de Verdade?
Quem usa de Verdade?
http://www.wired.com/            http://www.sky.com/




  http://iiea.com                       http://cmrf.org


             http://grails.org/Testimonials
Obrigado!

twitter.com/victorhg
www.lambda3.com.br

              Use it! Share it!
                Remix it!

Weitere ähnliche Inhalte

Was ist angesagt?

Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJSAlex Camargo
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
Introdução ao Windows Azure - Sessão 2 (mais prática)
Introdução ao Windows Azure - Sessão 2 (mais prática)Introdução ao Windows Azure - Sessão 2 (mais prática)
Introdução ao Windows Azure - Sessão 2 (mais prática)Giovanni Bassi
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8Eder Magalhães
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppetDaniel Sobral
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSEmerson Macedo
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
 

Was ist angesagt? (19)

OOP ObjC
OOP ObjCOOP ObjC
OOP ObjC
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Tutorial JavaFX simples
Tutorial JavaFX simplesTutorial JavaFX simples
Tutorial JavaFX simples
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Introdução ao Windows Azure - Sessão 2 (mais prática)
Introdução ao Windows Azure - Sessão 2 (mais prática)Introdução ao Windows Azure - Sessão 2 (mais prática)
Introdução ao Windows Azure - Sessão 2 (mais prática)
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8
 
Precisamos falar sobre Gradle
Precisamos falar sobre GradlePrecisamos falar sobre Gradle
Precisamos falar sobre Gradle
 
Palestra ganeti puppet
Palestra ganeti puppetPalestra ganeti puppet
Palestra ganeti puppet
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Como criar Custom Tags
Como criar Custom TagsComo criar Custom Tags
Como criar Custom Tags
 
Docker para testers - Um passeio fora da caixa
Docker para testers - Um passeio fora da caixaDocker para testers - Um passeio fora da caixa
Docker para testers - Um passeio fora da caixa
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 
Groovy & grails
Groovy & grailsGroovy & grails
Groovy & grails
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 

Ähnlich wie Minicurso groovy grails

Javascript no SAPO e libsapojs
Javascript no SAPO e libsapojsJavascript no SAPO e libsapojs
Javascript no SAPO e libsapojscodebits
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma JavaJoão Lourenço
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre JqueryIvo Calado
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Evolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptEvolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptJean Carlo Emer
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Felipe Mamud
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusDenis L Presciliano
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPFelipe Zampa
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-androidAlberto Souza
 
Desenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascriptDesenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascriptWillian Molinari
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com GrailsWanderson Oliveira
 

Ähnlich wie Minicurso groovy grails (20)

Javascript no SAPO e libsapojs
Javascript no SAPO e libsapojsJavascript no SAPO e libsapojs
Javascript no SAPO e libsapojs
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma Java
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre Jquery
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Evolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptEvolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScript
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta Cactus
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOP
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
 
Desenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascriptDesenvolvimento de jogos com HTML5 e javascript
Desenvolvimento de jogos com HTML5 e javascript
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com Grails
 
Introdução ao JQuery e AJAX
Introdução ao JQuery e AJAXIntrodução ao JQuery e AJAX
Introdução ao JQuery e AJAX
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Git, GitHub e OO
Git, GitHub e OOGit, GitHub e OO
Git, GitHub e OO
 

Mehr von Victor Hugo Germano

Expectativa ágil - Caipira Ágil 2017
Expectativa ágil - Caipira Ágil 2017Expectativa ágil - Caipira Ágil 2017
Expectativa ágil - Caipira Ágil 2017Victor Hugo Germano
 
O que não te contaram sobre entregar projetos Ágeis - TDC2017
O que não te contaram sobre entregar projetos Ágeis - TDC2017O que não te contaram sobre entregar projetos Ágeis - TDC2017
O que não te contaram sobre entregar projetos Ágeis - TDC2017Victor Hugo Germano
 
Agile coaching competency framework - TDC
Agile coaching competency framework - TDCAgile coaching competency framework - TDC
Agile coaching competency framework - TDCVictor Hugo Germano
 
5 disfunções de um time Scrum Day
5 disfunções de um time   Scrum Day5 disfunções de um time   Scrum Day
5 disfunções de um time Scrum DayVictor Hugo Germano
 
5 disfunções de um time - Devops Summit Brasil
5 disfunções de um time  - Devops Summit Brasil5 disfunções de um time  - Devops Summit Brasil
5 disfunções de um time - Devops Summit BrasilVictor Hugo Germano
 
Direto ao Ponto - DevOpsSummit Brasil
Direto ao Ponto - DevOpsSummit BrasilDireto ao Ponto - DevOpsSummit Brasil
Direto ao Ponto - DevOpsSummit BrasilVictor Hugo Germano
 
Métricas que importam Agile Brazil 2016
Métricas que importam   Agile Brazil 2016Métricas que importam   Agile Brazil 2016
Métricas que importam Agile Brazil 2016Victor Hugo Germano
 
Auto-gestão, negócios e produtividade - Agile Floripa 2016
Auto-gestão, negócios e produtividade - Agile Floripa 2016Auto-gestão, negócios e produtividade - Agile Floripa 2016
Auto-gestão, negócios e produtividade - Agile Floripa 2016Victor Hugo Germano
 
Democracia Organizacional - Linguagil 2015
Democracia Organizacional - Linguagil 2015Democracia Organizacional - Linguagil 2015
Democracia Organizacional - Linguagil 2015Victor Hugo Germano
 
Trilha management 3.0 - arbejdsglaede v2 (1)
Trilha   management 3.0 - arbejdsglaede v2 (1)Trilha   management 3.0 - arbejdsglaede v2 (1)
Trilha management 3.0 - arbejdsglaede v2 (1)Victor Hugo Germano
 
Democracia organizacional TDC 2013
Democracia organizacional TDC 2013Democracia organizacional TDC 2013
Democracia organizacional TDC 2013Victor Hugo Germano
 
Trust - Diana Larsen at Agiles 2009
Trust - Diana Larsen at Agiles 2009Trust - Diana Larsen at Agiles 2009
Trust - Diana Larsen at Agiles 2009Victor Hugo Germano
 

Mehr von Victor Hugo Germano (20)

Expectativa ágil - Caipira Ágil 2017
Expectativa ágil - Caipira Ágil 2017Expectativa ágil - Caipira Ágil 2017
Expectativa ágil - Caipira Ágil 2017
 
O que não te contaram sobre entregar projetos Ágeis - TDC2017
O que não te contaram sobre entregar projetos Ágeis - TDC2017O que não te contaram sobre entregar projetos Ágeis - TDC2017
O que não te contaram sobre entregar projetos Ágeis - TDC2017
 
Agile coaching competency framework - TDC
Agile coaching competency framework - TDCAgile coaching competency framework - TDC
Agile coaching competency framework - TDC
 
5 disfunções de um time Scrum Day
5 disfunções de um time   Scrum Day5 disfunções de um time   Scrum Day
5 disfunções de um time Scrum Day
 
5 disfunções de um time - Devops Summit Brasil
5 disfunções de um time  - Devops Summit Brasil5 disfunções de um time  - Devops Summit Brasil
5 disfunções de um time - Devops Summit Brasil
 
Direto ao Ponto - DevOpsSummit Brasil
Direto ao Ponto - DevOpsSummit BrasilDireto ao Ponto - DevOpsSummit Brasil
Direto ao Ponto - DevOpsSummit Brasil
 
Métricas que importam Agile Brazil 2016
Métricas que importam   Agile Brazil 2016Métricas que importam   Agile Brazil 2016
Métricas que importam Agile Brazil 2016
 
Auto-gestão, negócios e produtividade - Agile Floripa 2016
Auto-gestão, negócios e produtividade - Agile Floripa 2016Auto-gestão, negócios e produtividade - Agile Floripa 2016
Auto-gestão, negócios e produtividade - Agile Floripa 2016
 
O Mundo dos OKRs
O Mundo dos OKRsO Mundo dos OKRs
O Mundo dos OKRs
 
Além da gestão tradicional
Além da gestão tradicionalAlém da gestão tradicional
Além da gestão tradicional
 
Democracia Organizacional - Linguagil 2015
Democracia Organizacional - Linguagil 2015Democracia Organizacional - Linguagil 2015
Democracia Organizacional - Linguagil 2015
 
Trilha management 3.0 - arbejdsglaede v2 (1)
Trilha   management 3.0 - arbejdsglaede v2 (1)Trilha   management 3.0 - arbejdsglaede v2 (1)
Trilha management 3.0 - arbejdsglaede v2 (1)
 
Democracia organizacional TDC 2013
Democracia organizacional TDC 2013Democracia organizacional TDC 2013
Democracia organizacional TDC 2013
 
Largamos o cucumber
Largamos o cucumberLargamos o cucumber
Largamos o cucumber
 
O futuro do agile - TDC 2011
O futuro do agile - TDC 2011O futuro do agile - TDC 2011
O futuro do agile - TDC 2011
 
O futuro do agile
O futuro do agileO futuro do agile
O futuro do agile
 
Having fun with jabber bots
Having fun with jabber botsHaving fun with jabber bots
Having fun with jabber bots
 
Voce Tem Orgulho Do Seu Codigo
Voce Tem Orgulho Do Seu CodigoVoce Tem Orgulho Do Seu Codigo
Voce Tem Orgulho Do Seu Codigo
 
Trust - Diana Larsen at Agiles 2009
Trust - Diana Larsen at Agiles 2009Trust - Diana Larsen at Agiles 2009
Trust - Diana Larsen at Agiles 2009
 
Do Monumental Ao Agil
Do Monumental Ao AgilDo Monumental Ao Agil
Do Monumental Ao Agil
 

Minicurso groovy grails