SlideShare a Scribd company logo
1 of 89
Download to read offline
http://www.flickr.com/photos/caravinagre/1364614919/




Você tem orgulho do
    seu código?

Samuel Crescêncio e Victor Hugo Germano
Samuel Crescêncio
Victor Hugo Germano




      / victorhg
/* I realize that this program is a messy
compilation of inefficient coding, and
perhaps even stands as
something blasphemous in your eyes.
Coming midterms forced me to write the
program as is because this format required
the least amount of thinking as well as the
least amount of time. Therefore, I only ask
one thing of you: Be gentle. */

                           http://www.thedailywtf.com
Public static int getTestcell()
    {
       int i, neighbor, male, female, empty, value, num;
       male = 0;
       female = 0;
       empty = 0;
       value = 0;
       num = 0;
       if (spotvalue[n] == 0)
       {
          neighbor = n;
          if (n == 0)
          {
             if (spotvalue[neighbor + 1] == 0)
                empty = empty + 1;
             else
             {
                if (spotvalue[neighbor + 1] == 1)
                   male = male + 1;
                if (spotvalue[neighbor + 1] == 2)
                   female = female + 1;
             }
             if (spotvalue[neighbor + 20] == 0)
                empty = empty + 1;
             else
             {
if (spotvalue[neighbor + 20] == 1)
     male = male + 1;
  if (spotvalue[neighbor + 20] == 2)
     female = female + 1;
}
if (spotvalue[neighbor + 21] == 0)
   empty = empty + 1;
else
{
   if (spotvalue[neighbor + 21] == 1)
      male = male + 1;
   if (spotvalue[neighbor + 21] == 2)
      female = female + 1;
}
if (male >= 1 && male <=2)
{
   if (male == female)
   {
      num = rand.nextInt(2);
      value = num + 1;
      return value;
   }
   else
   {
      value = 0;
}
      }
      else
      {
        value = 0;
        return value;
      }
    }
    if (n == 19)
    {
       if (spotvalue[neighbor - 1] == 0)
          empty = empty + 1;
       else
       {
          if (spotvalue[neighbor - 1] == 1)
             male = male + 1;
          if (spotvalue[neighbor - 1] == 2)
             female = female + 1;
       }
       if (spotvalue[neighbor + 20] == 0)
          empty = empty + 1;
       else
       {
          if (spotvalue[neighbor + 20] == 1)
             male = male + 1;
          if (spotvalue[neighbor + 20] == 2)
female = female + 1;
        }
        if (spotvalue[neighbor + 19] == 0)
           empty = empty + 1;
        else
        {
           if (spotvalue[neighbor + 19] == 1)
              male = male + 1;
           if (spotvalue[neighbor + 19] == 2)
              female = female + 1;
        }
        if (male >= 1 && male <=2)
        {
           if (male == female)
           {
              num = rand.nextInt(2);
              value = num + 1;
              return value;
           }
           else
           {
              value = 0;
              return value;
           }
        }
        else
value = 0;
      return value;
  }
}
if (n == 380)
{
   if (spotvalue[neighbor + 1] == 0)
      empty = empty + 1;
   else
   {
      if (spotvalue[neighbor + 1] == 1)
         male = male + 1;
      if (spotvalue[neighbor + 1] == 2)
         female = female + 1;
   }
   if (spotvalue[neighbor - 20] == 0)
      empty = empty + 1;
   else
   {
      if (spotvalue[neighbor - 20] == 1)
         male = male + 1;
      if (spotvalue[neighbor - 20] == 2)
         female = female + 1;
   }
   if (spotvalue[neighbor - 19] == 0)
      empty = empty + 1;
!!!!!!!!!!!!!
Qual o nosso papel?
Qualidade?
Qualidade?
Pra quem?
E nós?
Até quando?




     http://www.flickr.com/photos/danielankers/2639889958/
Até quando?
Mas não é fácil!
http://www.mypix.com.br/site/pixpocketmag/super-geek-cinto-de-utilidades-ou-quase-isso/
Por que seria diferente?
Seu código fede?
“Nos dias de hoje, entregar uma
linha de código sem que ela seja
   testada é Irresponsabilidade
           Profissional”
                         Robert Uncle Bob
Fábrica de Elásticos
Debugging
 sucks!     Testing Rules!
Testes
JUnit

        Testes
JUnit

        Testes
    dbUnit
JUnit


SQLUnit Testes
     dbUnit
JUnit


SQLUnit Testes CppUnit
     dbUnit
JUnit
                 NUnit

SQLUnit Testes CppUnit
     dbUnit
Fitnesse
 JUnit
                    NUnit

SQLUnit Testes CppUnit
     dbUnit
Fitnesse
 JUnit
                    NUnit

SQLUnit Testes CppUnit
     dbUnit
               Selenium
Fitnesse
 JUnit
                       NUnit

SQLUnit Testes CppUnit
         dbUnit
                  Selenium
JMeter
Quão Sexy é o
 seu código?
Quão Sexy é o
 seu código?
O código
// create some properties and get the default Session
Properties props = new Properties();
props.put("mail.smtp.host", _smtpHost);
Session session = Session.getDefaultInstance(props, null);
 
// create a message
Address replyToList[] = { new InternetAddress(replyTo) };
Message newMessage = new MimeMessage(session);
if (_fromName != null)
     newMessage.setFrom(new InternetAddress(from,
         _fromName + " on behalf of " + replyTo));
else
     newMessage.setFrom(new InternetAddress(from));
     newMessage.setReplyTo(replyToList);
     newMessage.setRecipients(Message.RecipientType.BCC,
             _toList);
     newMessage.setSubject(subject);
     newMessage.setSentDate(sentDate);
 
// send newMessage
Transport transport = session.getTransport(SMTP_MAIL);
transport.connect(_smtpHost, _user, _password);
transport.sendMessage(newMessage, _toList);
Session session = this.loadDefaultConfiguration();
 

Message email = this.createEmailMessage(
                                fromName,
                                replyTo,
                                subject,
                                message );
 
this.sendMessage(session, email);




              http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
A API
class Email {
   public Email() { ... }
   public void setFrom(String from) { ... }
   public void setTo(String to) { ... }
   public void send() {
     // YOUR HOT CODE HERE
   }
}

            http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
Email email = new Email ( );
email.setFrom( “test@localhost.net”);
email.setTo (“destino@localhost.net”);
email.setSubject (“Teste email”);
email.setMessage (“Mensagem”);
email.send();



            http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
new EmailMessage( )
  .from("teste@localhost.net")
  .to("destination@address.com")
  .withSubject("Fluent Mail Example")
  .withBody("What a nice code!")
  .send();



           http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
Quão Sexy é
o seu código?
O que este código faz?

java.util.Calendar c =
  java.util.Calendar.getInstance();
c.set(2005, java.util.Calendar.NOVEMBER, 20);
long time = c.getTime();



                         http://www.slideshare.net/gvespucci/refactoring-an-introduction
long time = october(20, 2008);




http://www.flickr.com/photos/schoeband/3861094589/sizes/l/   http://www.slideshare.net/gvespucci/refactoring-an-introduction
What is a Clean Code?

“Quando você olha para o código, percebe que
  ele faz exatamente o que você esperava”
                                Howard Cunningham




                           http://railsconf.blip.tv/file/2089545/
Como medir
Clean Code??
Como medir
   Clean Code??

cleanCode = WTF / sec
// create some properties and get the default Session
Properties props = new Properties();
props.put("mail.smtp.host", _smtpHost);
Session session = Session.getDefaultInstance(props, null);
 
// create a message
Address replyToList[] = { new InternetAddress(replyTo) };
Message newMessage = new MimeMessage(session);
if (_fromName != null)
     newMessage.setFrom(new InternetAddress(from,
         _fromName + " on behalf of " + replyTo));
else
     newMessage.setFrom(new InternetAddress(from));
     newMessage.setReplyTo(replyToList);
     newMessage.setRecipients(Message.RecipientType.BCC,
             _toList);
     newMessage.setSubject(subject);
     newMessage.setSentDate(sentDate);
 
// send newMessage
Transport transport = session.getTransport(SMTP_MAIL);
transport.connect(_smtpHost, _user, _password);
transport.sendMessage(newMessage, _toList);
// create some properties and get the default Session
Properties props = new Properties();
props.put("mail.smtp.host", _smtpHost);              WTF?!
Session session = Session.getDefaultInstance(props, null);
 
// create a message
Address replyToList[] = { new InternetAddress(replyTo) };
Message newMessage = new MimeMessage(session);
if (_fromName != null)
     newMessage.setFrom(new InternetAddress(from,
         _fromName + " on behalf of " + replyTo));
else
     newMessage.setFrom(new InternetAddress(from));
     newMessage.setReplyTo(replyToList);
     newMessage.setRecipients(Message.RecipientType.BCC,
             _toList);
     newMessage.setSubject(subject);
     newMessage.setSentDate(sentDate);
 
// send newMessage
Transport transport = session.getTransport(SMTP_MAIL);
transport.connect(_smtpHost, _user, _password);
transport.sendMessage(newMessage, _toList);
// create some properties and get the default Session
Properties props = new Properties();
props.put("mail.smtp.host", _smtpHost);              WTF?!
Session session = Session.getDefaultInstance(props, null);
 
// create a message
Address replyToList[] = { new InternetAddress(replyTo) };
Message newMessage = new MimeMessage(session);
if (_fromName != null)
     newMessage.setFrom(new InternetAddress(from,

else
         _fromName + " on behalf of " + replyTo));
                                                     WTF?!
     newMessage.setFrom(new InternetAddress(from));
     newMessage.setReplyTo(replyToList);
     newMessage.setRecipients(Message.RecipientType.BCC,
             _toList);
     newMessage.setSubject(subject);
     newMessage.setSentDate(sentDate);
 
// send newMessage
Transport transport = session.getTransport(SMTP_MAIL);
transport.connect(_smtpHost, _user, _password);
transport.sendMessage(newMessage, _toList);
// create some properties and get the default Session
Properties props = new Properties();
props.put("mail.smtp.host", _smtpHost);              WTF?!
Session session = Session.getDefaultInstance(props, null);
 
// create a message
Address replyToList[] = { new InternetAddress(replyTo) };
Message newMessage = new MimeMessage(session);
if (_fromName != null)
     newMessage.setFrom(new InternetAddress(from,

else
         _fromName + " on behalf of " + replyTo));
                                                     WTF?!
     newMessage.setFrom(new InternetAddress(from));
     newMessage.setReplyTo(replyToList);
     newMessage.setRecipients(Message.RecipientType.BCC,
             _toList);
     newMessage.setSubject(subject);
     newMessage.setSentDate(sentDate);
 
// send newMessage                                   WTF?!
Transport transport = session.getTransport(SMTP_MAIL);
transport.connect(_smtpHost, _user, _password);
transport.sendMessage(newMessage, _toList);
new EmailMessage( )
  .from("teste@localhost.net")
  .to("destination@address.com")
  .withSubject("Fluent Mail Example")
  .withBody("What a nice code!")
  .send();



           http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
TDD
Test all the Fucking
        time!
Automatização!
Automatização!   Ant / Gant / Python
Automatização!   Ant / Gant / Python

                   Maven / Javagems
Automatização!   Ant / Gant / Python

                   Maven / Javagems

                    JUnit / Selenium
Automatização!   Ant / Gant / Python

                   Maven / Javagems

                    JUnit / Selenium

                      Cuise Control
Automatização!   Ant / Gant / Python

                   Maven / Javagems

                    JUnit / Selenium

                      Cuise Control

                         Findbugs
Doxygen

  Collaboration
  Call Hierarchy
  Dot Representation
  Documentation


http://www.stack.nl/~dimitri/doxygen
Código Coletivo




                                                                             pair programming




http://www.flickr.com/photos/menlopics/3928252097/in/set-72157607305293501/
Estude! Atualize-se!
Integração Contínua
Integração Contínua




Injeção de Dependência
Integração Contínua
                         DSLs




Injeção de Dependência
Integração Contínua
                         DSLs


Design Patterns




Injeção de Dependência
Integração Contínua
                         DSLs
             Design by Contract
Design Patterns




Injeção de Dependência
Integração Contínua
                         DSLs
             Design by Contract
Design Patterns
               Orientação a Ojetos


Injeção de Dependência
Integração Contínua
                         DSLs
             Design by Contract
Design Patterns
               Orientação a Ojetos
   TDD


Injeção de Dependência
Integração Contínua
                         DSLs
             Design by Contract
Design Patterns
               Orientação a Ojetos
   TDD
        Uma linguagem nova por ano
Injeção de Dependência
Trabalhe em Equipe!!!
      Scrum Master
Obrigado!

        @victorhg
 http://google.com/profiles/victorhg


          @oncast
samuel.crescencio@oncast.com.br
Dúvidas?

More Related Content

What's hot

C++ Lambda and concurrency
C++ Lambda and concurrencyC++ Lambda and concurrency
C++ Lambda and concurrency명신 김
 
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]Dimitrios Platis
 
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...Codemotion
 
Dive into kotlins coroutines
Dive into kotlins coroutinesDive into kotlins coroutines
Dive into kotlins coroutinesFreddie Wang
 
Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017
Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017 Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017
Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017 Codemotion
 
Distributed Data Structures
Distributed Data StructuresDistributed Data Structures
Distributed Data StructuresPDX Web & Design
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objectsHusain Dalal
 
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...Codemotion
 
The Macronomicon
The MacronomiconThe Macronomicon
The MacronomiconMike Fogus
 
Lexical environment in ecma 262 5
Lexical environment in ecma 262 5Lexical environment in ecma 262 5
Lexical environment in ecma 262 5Kim Hunmin
 

What's hot (20)

C++ L09-Classes Part2
C++ L09-Classes Part2C++ L09-Classes Part2
C++ L09-Classes Part2
 
C++ Lambda and concurrency
C++ Lambda and concurrencyC++ Lambda and concurrency
C++ Lambda and concurrency
 
C++ L08-Classes Part1
C++ L08-Classes Part1C++ L08-Classes Part1
C++ L08-Classes Part1
 
C++ L11-Polymorphism
C++ L11-PolymorphismC++ L11-Polymorphism
C++ L11-Polymorphism
 
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
 
Kotlin coroutines
Kotlin coroutines Kotlin coroutines
Kotlin coroutines
 
Lambda expressions in C++
Lambda expressions in C++Lambda expressions in C++
Lambda expressions in C++
 
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
Lucio Floretta - TensorFlow and Deep Learning without a PhD - Codemotion Mila...
 
Dive into kotlins coroutines
Dive into kotlins coroutinesDive into kotlins coroutines
Dive into kotlins coroutines
 
Property-based testing
Property-based testingProperty-based testing
Property-based testing
 
Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017
Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017 Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017
Davide Cerbo - Kotlin: forse è la volta buona - Codemotion Milan 2017
 
DDS-20m
DDS-20mDDS-20m
DDS-20m
 
Distributed Data Structures
Distributed Data StructuresDistributed Data Structures
Distributed Data Structures
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objects
 
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...
Joe Bew - Apprendi un nuovo linguaggio sfruttando il TDD e il Clean Code - Co...
 
Dart - en ny platform til webudvikling af Rico Wind, Google
Dart - en ny platform til webudvikling af Rico Wind, GoogleDart - en ny platform til webudvikling af Rico Wind, Google
Dart - en ny platform til webudvikling af Rico Wind, Google
 
C++ L01-Variables
C++ L01-VariablesC++ L01-Variables
C++ L01-Variables
 
The Macronomicon
The MacronomiconThe Macronomicon
The Macronomicon
 
Lexical environment in ecma 262 5
Lexical environment in ecma 262 5Lexical environment in ecma 262 5
Lexical environment in ecma 262 5
 
C++ L06-Pointers
C++ L06-PointersC++ L06-Pointers
C++ L06-Pointers
 

Viewers also liked

Os TrêS Tipos De Tesouro
Os TrêS Tipos De TesouroOs TrêS Tipos De Tesouro
Os TrêS Tipos De Tesourocomiguacu
 
Carma A Linguagem Do Destino
Carma A Linguagem Do DestinoCarma A Linguagem Do Destino
Carma A Linguagem Do Destinocomiguacu
 
Todas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saberTodas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saberLuiz Borba
 
Dias do futuro presente da programação
Dias do futuro presente da programaçãoDias do futuro presente da programação
Dias do futuro presente da programaçãoLuiz Borba
 
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...Luiz Borba
 
Route2 company introduction_25.07.11
Route2 company introduction_25.07.11Route2 company introduction_25.07.11
Route2 company introduction_25.07.11Tim Barker
 
Por que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisPor que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisLuiz Borba
 
Coisas que levei um tempo para aprender
Coisas que levei um tempo para aprenderCoisas que levei um tempo para aprender
Coisas que levei um tempo para aprenderLuiz Borba
 
Grafologia autoconhecimento e qualidade de vida
Grafologia autoconhecimento e qualidade de vidaGrafologia autoconhecimento e qualidade de vida
Grafologia autoconhecimento e qualidade de vidaCarlos Casalicchio
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareNatanael Simões
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de ProgramaçãoNatanael Simões
 
Como recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackComo recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackNatanael Simões
 
Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasProcesso de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasNatanael Simões
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLNatanael Simões
 
Lei De Causa E Efeito
Lei De Causa E EfeitoLei De Causa E Efeito
Lei De Causa E Efeitocomiguacu
 
Introdução a engenharia walter antonio bazzo - 6ª edição
Introdução a engenharia   walter antonio bazzo - 6ª ediçãoIntrodução a engenharia   walter antonio bazzo - 6ª edição
Introdução a engenharia walter antonio bazzo - 6ª ediçãoAna Cristina Ribeiro
 
Livro estatística fácil antônio arnot crespo - ed saraiva
Livro estatística fácil   antônio arnot crespo - ed saraivaLivro estatística fácil   antônio arnot crespo - ed saraiva
Livro estatística fácil antônio arnot crespo - ed saraivaPablo Cotes
 
Albert Einstein - Biografia, Obras, Curiosidades e Outros
Albert Einstein - Biografia, Obras, Curiosidades e Outros Albert Einstein - Biografia, Obras, Curiosidades e Outros
Albert Einstein - Biografia, Obras, Curiosidades e Outros Fábio Roque
 

Viewers also liked (20)

Os TrêS Tipos De Tesouro
Os TrêS Tipos De TesouroOs TrêS Tipos De Tesouro
Os TrêS Tipos De Tesouro
 
Carma A Linguagem Do Destino
Carma A Linguagem Do DestinoCarma A Linguagem Do Destino
Carma A Linguagem Do Destino
 
Todas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saberTodas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saber
 
Dias do futuro presente da programação
Dias do futuro presente da programaçãoDias do futuro presente da programação
Dias do futuro presente da programação
 
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
 
Route2 company introduction_25.07.11
Route2 company introduction_25.07.11Route2 company introduction_25.07.11
Route2 company introduction_25.07.11
 
Por que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisPor que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionais
 
Coisas que levei um tempo para aprender
Coisas que levei um tempo para aprenderCoisas que levei um tempo para aprender
Coisas que levei um tempo para aprender
 
Grafologia autoconhecimento e qualidade de vida
Grafologia autoconhecimento e qualidade de vidaGrafologia autoconhecimento e qualidade de vida
Grafologia autoconhecimento e qualidade de vida
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
Como recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackComo recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com Backtrack
 
Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasProcesso de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
 
Mereça ser feliz!
Mereça ser feliz!Mereça ser feliz!
Mereça ser feliz!
 
O guia-das-engenharias
O guia-das-engenhariasO guia-das-engenharias
O guia-das-engenharias
 
Lei De Causa E Efeito
Lei De Causa E EfeitoLei De Causa E Efeito
Lei De Causa E Efeito
 
Introdução a engenharia walter antonio bazzo - 6ª edição
Introdução a engenharia   walter antonio bazzo - 6ª ediçãoIntrodução a engenharia   walter antonio bazzo - 6ª edição
Introdução a engenharia walter antonio bazzo - 6ª edição
 
Livro estatística fácil antônio arnot crespo - ed saraiva
Livro estatística fácil   antônio arnot crespo - ed saraivaLivro estatística fácil   antônio arnot crespo - ed saraiva
Livro estatística fácil antônio arnot crespo - ed saraiva
 
Albert Einstein - Biografia, Obras, Curiosidades e Outros
Albert Einstein - Biografia, Obras, Curiosidades e Outros Albert Einstein - Biografia, Obras, Curiosidades e Outros
Albert Einstein - Biografia, Obras, Curiosidades e Outros
 

Similar to Voce Tem Orgulho Do Seu Codigo

Effective C#
Effective C#Effective C#
Effective C#lantoli
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with GroovyArturo Herrero
 
Help I keep getting the same error when running a code. Below is the.pdf
Help I keep getting the same error when running a code. Below is the.pdfHelp I keep getting the same error when running a code. Below is the.pdf
Help I keep getting the same error when running a code. Below is the.pdfmail931892
 
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRaimonds Simanovskis
 
Please implement in Java. comments would be appreciated 5.pdf
Please implement in Java. comments would be appreciated 5.pdfPlease implement in Java. comments would be appreciated 5.pdf
Please implement in Java. comments would be appreciated 5.pdffms12345
 
Test-driven Development (TDD)
Test-driven Development (TDD)Test-driven Development (TDD)
Test-driven Development (TDD)Bran van der Meer
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2goMoriyoshi Koizumi
 
Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»SpbDotNet Community
 
EcmaScript unchained
EcmaScript unchainedEcmaScript unchained
EcmaScript unchainedEduard Tomàs
 
オープンデータを使ったモバイルアプリ開発(応用編)
オープンデータを使ったモバイルアプリ開発(応用編)オープンデータを使ったモバイルアプリ開発(応用編)
オープンデータを使ったモバイルアプリ開発(応用編)Takayuki Goto
 
Something about Golang
Something about GolangSomething about Golang
Something about GolangAnton Arhipov
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better codeDror Helper
 
The Challenge of Bringing FEZ to PlayStation Platforms
The Challenge of Bringing FEZ to PlayStation PlatformsThe Challenge of Bringing FEZ to PlayStation Platforms
The Challenge of Bringing FEZ to PlayStation PlatformsMiguel Angel Horna
 
CoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairCoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairMark
 
Go ahead, make my day
Go ahead, make my dayGo ahead, make my day
Go ahead, make my dayTor Ivry
 
hi i have to write a java program involving link lists. i have a pro.pdf
hi i have to write a java program involving link lists. i have a pro.pdfhi i have to write a java program involving link lists. i have a pro.pdf
hi i have to write a java program involving link lists. i have a pro.pdfarchgeetsenterprises
 
Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Developing High Performance Websites and Modern Apps with JavaScript and HTML5Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Developing High Performance Websites and Modern Apps with JavaScript and HTML5Doris Chen
 
C Code and the Art of Obfuscation
C Code and the Art of ObfuscationC Code and the Art of Obfuscation
C Code and the Art of Obfuscationguest9006ab
 

Similar to Voce Tem Orgulho Do Seu Codigo (20)

Effective C#
Effective C#Effective C#
Effective C#
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
Help I keep getting the same error when running a code. Below is the.pdf
Help I keep getting the same error when running a code. Below is the.pdfHelp I keep getting the same error when running a code. Below is the.pdf
Help I keep getting the same error when running a code. Below is the.pdf
 
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
 
Please implement in Java. comments would be appreciated 5.pdf
Please implement in Java. comments would be appreciated 5.pdfPlease implement in Java. comments would be appreciated 5.pdf
Please implement in Java. comments would be appreciated 5.pdf
 
Rust
RustRust
Rust
 
Test-driven Development (TDD)
Test-driven Development (TDD)Test-driven Development (TDD)
Test-driven Development (TDD)
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2go
 
Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»Дмитрий Верескун «Синтаксический сахар C#»
Дмитрий Верескун «Синтаксический сахар C#»
 
EcmaScript unchained
EcmaScript unchainedEcmaScript unchained
EcmaScript unchained
 
オープンデータを使ったモバイルアプリ開発(応用編)
オープンデータを使ったモバイルアプリ開発(応用編)オープンデータを使ったモバイルアプリ開発(応用編)
オープンデータを使ったモバイルアプリ開発(応用編)
 
Something about Golang
Something about GolangSomething about Golang
Something about Golang
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better code
 
The Challenge of Bringing FEZ to PlayStation Platforms
The Challenge of Bringing FEZ to PlayStation PlatformsThe Challenge of Bringing FEZ to PlayStation Platforms
The Challenge of Bringing FEZ to PlayStation Platforms
 
CoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairCoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love Affair
 
Go ahead, make my day
Go ahead, make my dayGo ahead, make my day
Go ahead, make my day
 
hi i have to write a java program involving link lists. i have a pro.pdf
hi i have to write a java program involving link lists. i have a pro.pdfhi i have to write a java program involving link lists. i have a pro.pdf
hi i have to write a java program involving link lists. i have a pro.pdf
 
Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Developing High Performance Websites and Modern Apps with JavaScript and HTML5Developing High Performance Websites and Modern Apps with JavaScript and HTML5
Developing High Performance Websites and Modern Apps with JavaScript and HTML5
 
C Code and the Art of Obfuscation
C Code and the Art of ObfuscationC Code and the Art of Obfuscation
C Code and the Art of Obfuscation
 
ES2015 New Features
ES2015 New FeaturesES2015 New Features
ES2015 New Features
 

More from 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
 

More from 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
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
Having fun with jabber bots
Having fun with jabber botsHaving fun with jabber bots
Having fun with jabber bots
 
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
 

Recently uploaded

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 

Recently uploaded (20)

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 

Voce Tem Orgulho Do Seu Codigo

  • 1. http://www.flickr.com/photos/caravinagre/1364614919/ Você tem orgulho do seu código? Samuel Crescêncio e Victor Hugo Germano
  • 2.
  • 4. Victor Hugo Germano / victorhg
  • 5.
  • 6.
  • 7. /* I realize that this program is a messy compilation of inefficient coding, and perhaps even stands as something blasphemous in your eyes. Coming midterms forced me to write the program as is because this format required the least amount of thinking as well as the least amount of time. Therefore, I only ask one thing of you: Be gentle. */ http://www.thedailywtf.com
  • 8. Public static int getTestcell() { int i, neighbor, male, female, empty, value, num; male = 0; female = 0; empty = 0; value = 0; num = 0; if (spotvalue[n] == 0) { neighbor = n; if (n == 0) { if (spotvalue[neighbor + 1] == 0) empty = empty + 1; else { if (spotvalue[neighbor + 1] == 1) male = male + 1; if (spotvalue[neighbor + 1] == 2) female = female + 1; } if (spotvalue[neighbor + 20] == 0) empty = empty + 1; else {
  • 9. if (spotvalue[neighbor + 20] == 1) male = male + 1; if (spotvalue[neighbor + 20] == 2) female = female + 1; } if (spotvalue[neighbor + 21] == 0) empty = empty + 1; else { if (spotvalue[neighbor + 21] == 1) male = male + 1; if (spotvalue[neighbor + 21] == 2) female = female + 1; } if (male >= 1 && male <=2) { if (male == female) { num = rand.nextInt(2); value = num + 1; return value; } else { value = 0;
  • 10. } } else { value = 0; return value; } } if (n == 19) { if (spotvalue[neighbor - 1] == 0) empty = empty + 1; else { if (spotvalue[neighbor - 1] == 1) male = male + 1; if (spotvalue[neighbor - 1] == 2) female = female + 1; } if (spotvalue[neighbor + 20] == 0) empty = empty + 1; else { if (spotvalue[neighbor + 20] == 1) male = male + 1; if (spotvalue[neighbor + 20] == 2)
  • 11. female = female + 1; } if (spotvalue[neighbor + 19] == 0) empty = empty + 1; else { if (spotvalue[neighbor + 19] == 1) male = male + 1; if (spotvalue[neighbor + 19] == 2) female = female + 1; } if (male >= 1 && male <=2) { if (male == female) { num = rand.nextInt(2); value = num + 1; return value; } else { value = 0; return value; } } else
  • 12. value = 0; return value; } } if (n == 380) { if (spotvalue[neighbor + 1] == 0) empty = empty + 1; else { if (spotvalue[neighbor + 1] == 1) male = male + 1; if (spotvalue[neighbor + 1] == 2) female = female + 1; } if (spotvalue[neighbor - 20] == 0) empty = empty + 1; else { if (spotvalue[neighbor - 20] == 1) male = male + 1; if (spotvalue[neighbor - 20] == 2) female = female + 1; } if (spotvalue[neighbor - 19] == 0) empty = empty + 1;
  • 14. Qual o nosso papel?
  • 15.
  • 16.
  • 18.
  • 20.
  • 22. Até quando? http://www.flickr.com/photos/danielankers/2639889958/
  • 24.
  • 25. Mas não é fácil!
  • 27.
  • 28. Por que seria diferente?
  • 30.
  • 31. “Nos dias de hoje, entregar uma linha de código sem que ela seja testada é Irresponsabilidade Profissional” Robert Uncle Bob
  • 33. Debugging sucks! Testing Rules!
  • 35. JUnit Testes
  • 36. JUnit Testes dbUnit
  • 39. JUnit NUnit SQLUnit Testes CppUnit dbUnit
  • 40. Fitnesse JUnit NUnit SQLUnit Testes CppUnit dbUnit
  • 41. Fitnesse JUnit NUnit SQLUnit Testes CppUnit dbUnit Selenium
  • 42. Fitnesse JUnit NUnit SQLUnit Testes CppUnit dbUnit Selenium JMeter
  • 43. Quão Sexy é o seu código?
  • 44. Quão Sexy é o seu código?
  • 46. // create some properties and get the default Session Properties props = new Properties(); props.put("mail.smtp.host", _smtpHost); Session session = Session.getDefaultInstance(props, null);   // create a message Address replyToList[] = { new InternetAddress(replyTo) }; Message newMessage = new MimeMessage(session); if (_fromName != null) newMessage.setFrom(new InternetAddress(from, _fromName + " on behalf of " + replyTo)); else newMessage.setFrom(new InternetAddress(from)); newMessage.setReplyTo(replyToList); newMessage.setRecipients(Message.RecipientType.BCC, _toList); newMessage.setSubject(subject); newMessage.setSentDate(sentDate);   // send newMessage Transport transport = session.getTransport(SMTP_MAIL); transport.connect(_smtpHost, _user, _password); transport.sendMessage(newMessage, _toList);
  • 47. Session session = this.loadDefaultConfiguration();   Message email = this.createEmailMessage( fromName, replyTo, subject, message );   this.sendMessage(session, email); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 48. A API
  • 49. class Email { public Email() { ... } public void setFrom(String from) { ... } public void setTo(String to) { ... } public void send() { // YOUR HOT CODE HERE } } http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 50. Email email = new Email ( ); email.setFrom( “test@localhost.net”); email.setTo (“destino@localhost.net”); email.setSubject (“Teste email”); email.setMessage (“Mensagem”); email.send(); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 51. new EmailMessage( ) .from("teste@localhost.net") .to("destination@address.com") .withSubject("Fluent Mail Example") .withBody("What a nice code!") .send(); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 52. Quão Sexy é o seu código?
  • 53. O que este código faz? java.util.Calendar c = java.util.Calendar.getInstance(); c.set(2005, java.util.Calendar.NOVEMBER, 20); long time = c.getTime(); http://www.slideshare.net/gvespucci/refactoring-an-introduction
  • 54. long time = october(20, 2008); http://www.flickr.com/photos/schoeband/3861094589/sizes/l/ http://www.slideshare.net/gvespucci/refactoring-an-introduction
  • 55. What is a Clean Code? “Quando você olha para o código, percebe que ele faz exatamente o que você esperava” Howard Cunningham http://railsconf.blip.tv/file/2089545/
  • 57. Como medir Clean Code?? cleanCode = WTF / sec
  • 58. // create some properties and get the default Session Properties props = new Properties(); props.put("mail.smtp.host", _smtpHost); Session session = Session.getDefaultInstance(props, null);   // create a message Address replyToList[] = { new InternetAddress(replyTo) }; Message newMessage = new MimeMessage(session); if (_fromName != null) newMessage.setFrom(new InternetAddress(from, _fromName + " on behalf of " + replyTo)); else newMessage.setFrom(new InternetAddress(from)); newMessage.setReplyTo(replyToList); newMessage.setRecipients(Message.RecipientType.BCC, _toList); newMessage.setSubject(subject); newMessage.setSentDate(sentDate);   // send newMessage Transport transport = session.getTransport(SMTP_MAIL); transport.connect(_smtpHost, _user, _password); transport.sendMessage(newMessage, _toList);
  • 59. // create some properties and get the default Session Properties props = new Properties(); props.put("mail.smtp.host", _smtpHost); WTF?! Session session = Session.getDefaultInstance(props, null);   // create a message Address replyToList[] = { new InternetAddress(replyTo) }; Message newMessage = new MimeMessage(session); if (_fromName != null) newMessage.setFrom(new InternetAddress(from, _fromName + " on behalf of " + replyTo)); else newMessage.setFrom(new InternetAddress(from)); newMessage.setReplyTo(replyToList); newMessage.setRecipients(Message.RecipientType.BCC, _toList); newMessage.setSubject(subject); newMessage.setSentDate(sentDate);   // send newMessage Transport transport = session.getTransport(SMTP_MAIL); transport.connect(_smtpHost, _user, _password); transport.sendMessage(newMessage, _toList);
  • 60. // create some properties and get the default Session Properties props = new Properties(); props.put("mail.smtp.host", _smtpHost); WTF?! Session session = Session.getDefaultInstance(props, null);   // create a message Address replyToList[] = { new InternetAddress(replyTo) }; Message newMessage = new MimeMessage(session); if (_fromName != null) newMessage.setFrom(new InternetAddress(from, else _fromName + " on behalf of " + replyTo)); WTF?! newMessage.setFrom(new InternetAddress(from)); newMessage.setReplyTo(replyToList); newMessage.setRecipients(Message.RecipientType.BCC, _toList); newMessage.setSubject(subject); newMessage.setSentDate(sentDate);   // send newMessage Transport transport = session.getTransport(SMTP_MAIL); transport.connect(_smtpHost, _user, _password); transport.sendMessage(newMessage, _toList);
  • 61. // create some properties and get the default Session Properties props = new Properties(); props.put("mail.smtp.host", _smtpHost); WTF?! Session session = Session.getDefaultInstance(props, null);   // create a message Address replyToList[] = { new InternetAddress(replyTo) }; Message newMessage = new MimeMessage(session); if (_fromName != null) newMessage.setFrom(new InternetAddress(from, else _fromName + " on behalf of " + replyTo)); WTF?! newMessage.setFrom(new InternetAddress(from)); newMessage.setReplyTo(replyToList); newMessage.setRecipients(Message.RecipientType.BCC, _toList); newMessage.setSubject(subject); newMessage.setSentDate(sentDate);   // send newMessage WTF?! Transport transport = session.getTransport(SMTP_MAIL); transport.connect(_smtpHost, _user, _password); transport.sendMessage(newMessage, _toList);
  • 62. new EmailMessage( ) .from("teste@localhost.net") .to("destination@address.com") .withSubject("Fluent Mail Example") .withBody("What a nice code!") .send(); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 63.
  • 64. TDD
  • 65. Test all the Fucking time!
  • 66.
  • 68. Automatização! Ant / Gant / Python
  • 69. Automatização! Ant / Gant / Python Maven / Javagems
  • 70. Automatização! Ant / Gant / Python Maven / Javagems JUnit / Selenium
  • 71. Automatização! Ant / Gant / Python Maven / Javagems JUnit / Selenium Cuise Control
  • 72. Automatização! Ant / Gant / Python Maven / Javagems JUnit / Selenium Cuise Control Findbugs
  • 73. Doxygen Collaboration Call Hierarchy Dot Representation Documentation http://www.stack.nl/~dimitri/doxygen
  • 74.
  • 75. Código Coletivo pair programming http://www.flickr.com/photos/menlopics/3928252097/in/set-72157607305293501/
  • 77.
  • 80. Integração Contínua DSLs Injeção de Dependência
  • 81. Integração Contínua DSLs Design Patterns Injeção de Dependência
  • 82. Integração Contínua DSLs Design by Contract Design Patterns Injeção de Dependência
  • 83. Integração Contínua DSLs Design by Contract Design Patterns Orientação a Ojetos Injeção de Dependência
  • 84. Integração Contínua DSLs Design by Contract Design Patterns Orientação a Ojetos TDD Injeção de Dependência
  • 85. Integração Contínua DSLs Design by Contract Design Patterns Orientação a Ojetos TDD Uma linguagem nova por ano Injeção de Dependência
  • 86. Trabalhe em Equipe!!! Scrum Master
  • 87.
  • 88. Obrigado! @victorhg http://google.com/profiles/victorhg @oncast samuel.crescencio@oncast.com.br