Friday, August 3, 2018

É hora de se tornar um Oracle Certified Professional!

Oracle Certified Professional (OCP) é a segunda cerftificação oficial que profissionais que trablham com Java podem tirar. A primeira é a Oracle Certified Associate (OCA). Se você quiser saber mais detalhes sobre a OCA, como estudar, agendar a prova e  obtê-la rapidamente, veja Obtendo sua OCA (Oracle Certified Associate Java SE 8) em 60 dias.

Oracle Certified Professional (OCP)

 Acabei de prestar o exame 1ZO-809, que é o exame sob o qual você se submete a fim de se tornar um Oracle Certified Professional em Java. Felizmente passei com 70%, o score mínimo para passar é 65%. Neste post dou meu feedback para você também passar no exame.



A OCP é uma continuação da OCA, portanto os criadores do exame partem da premissa de que todos os tópicos cobrados na OCA você já os tem dominados. Dessa forma, o exame da OCP inclui indiretamente todos os tópicos do exame anterior, mais uma série de novos objetivos, sobre a maioria dos quais é cobrado conhecimento profundo, principalmente sobre as classes dos novos pacotes incluídos a partir da versão 8 do Java, java.util.function e java.util.stream. Principais tópicos cobrados no exame 1ZO-809:
  • API de concorrência (Thread, Runnable, Callable, Executors, etc.)
  • Programação Funcional
  • Streams API
  • Java I/O
  • Java NIO
  • Generics e Collections
  • Design Patterns e Design Principles
Todo processo de agendamento do exame 1ZO-809 é idêntico ao da OCA (inclusive o preço), portanto não vou abordar essa parte. Para saber mais detalhes sobre o agendamento, confira
no link acima que contem o meu feedback sobre a OCA. Este post foca mais no conteúdo do exame OCP e métodos de estudo.

Até a data deste post, o Java estava na versão 11, de acordo com a nova estratégia da Oracle de lançar uma nova versão a cada 6 meses. No entanto, os exames de certificação disponíveis contemplavam somente até a versão 8. Isso não é um problema porque as diferença entre os recursos criados a partir do Java 8 até o 11 não são tão significativas quanto as mudanças introduzidas entre o Java 7 e 8. Outrossim ainda que a Oracle disponibilizasse amanhã um novo exame de certificação para a versão 10 ou 11, não seria recomendável fazê-lo logo de cara, porque você praticamente não terá nenhum sólido material de apoio como livros, fóruns, vídeos, etc. O exame da OCP 8 já existe há mais de 4 anos, muita gente já fez, muitos reprovaram, muitos passaram, há, portanto, bastante feedback e o material de apoio disponível para quem quiser encarar o desafio de obter a OCP é muito grande e diversificado. Este post é mais um.


Dificuldade do Exame

Indo direto ao ponto, o exame da OCP é muito mais difícil que o da OCA. Para passar, você precisará comer Java. Beber Java. Respirar Java. E - principalmente - pensar em Java. Seguindo essas dicas, o exame se torna fácil!

Sendo mais específico, o exame possui apenas 2 grandes dificuldades, as quais, você superando, tem grandes chances de ser bem sucedido. Superá-las é simples, mas não fácil.

Diferentemente da OCA, acredito não ser possível ser bem sucedido nesse exame se você não trabalha com Java. Esse é o ponto de partida. Você precisa de um nível de familiaridade com Java que dificilmente é obtido caso você não utilize a  tecnologia no dia-a-dia. Essa familiaridade é importante porque, não bastasse o profundo conhecimento exigido sobre cada tópico, os criadores do exame também são famosos por trapacear nas questões. Refiro me as famosas pegadinhas. Elas estão por toda parte. Essa é a primeira grande dificuldade a que me referi. Veja este exemplo: O que o código abaixo exibe na tela?

    Stream<Integer> prime = Stream.of(2,3,5,7);
    Stream<Integer> composite = Stream.of(4,6,8);
    ConcurrentMap<Boolean, List<Integer>> data =
          Stream.combine(prime, composite).parallelStream()
              .flatMap(s -> s)                        
              .collect(Collectors.groupingByConcurrent(n -> (n % 2) == 0));
        
    System.out.println(data.get(true).size()+" "+data.get(false).size());
Parece ser uma questão sobre parallel reduction, mas na verdade o código nem compila. A classe Stream não tem o método combine() e para criar um parallel stream a partir de um stream convencional você deve chamar o método parallel(), o método parallelStream() não existe.

Para não cair nesses truques, uma habilidade que você precisa treinar muito é se acostumar a ler códigos, de preferência sem formatação, e descobrir onde estão os erros de compilação. Claro, isso só depois de estar bem familiarizado com a API em questão. Assim você supera a primeira grande dificudade.
A segunda grande dificuldade é a quantidade muito extensa de tópicos cobrados no exame e o conhecimento profundo exigido sobre cada um. Superar essas dificuldade também é simples. Você precisa ter uma estratégia e uma metodologia de estudo, caso contrário ficará patinando, vai passar um ano, e você ainda não estará pronto para o exame! Compartilho minha estratégia de estudo.


Método de estudo

Comecei a estudar em 19/Março e fiz a prova em 31/7. Pouco mais de 4 meses de preparação. Acredito que não mais do que 6 meses de estudo para esse tipo de exame é um tempo aceitável.

1 - Escolha o Material de Apoio

A primeira coisa que você deve fazer é escolher seu material de apoio. Existem alguns livros no mercado, mas recomendo fortemente o OCP Study Guide de Jeanne Boyarsky e‎ Scott Selikoff da editora Sybex:


O livro é bem organizado e cobre 100% do conteúdo da prova. Os autores são didáticos, mas não fazem milagres. Você vai descobrir que é impossível ser didático tentando ensinar, por exemplo, o Fork/Join Framework ou Parallel Reductions. É o tipo de assunto que é o aluno quem aprende e não o professor quem ensina. Cada capítulo do livro possui cerca de 20 exercícios relacionados. O site da editora Sybex também tem 3 simulados com 60 questões cada um e repostas comentadas. Uma ferramenta valiosíssima da qual você não deveria abrir mão!


2 - Metodologia

Existe uma ciência do estudo. Muita coisa já foi publicada sobre como estudar de forma rápida e eficiente. Existem dezenas de técnicas que comprovadamente funcionam. Um livro que me deu vários insights foi Como passar no vestibular do dr. Lair Ribeiro. Utilizei as técnicas de anotação, comparação de abordagens, leitura skimming ou dinâmica, leitura analítica e mapas mentais.

Com uma caneta marca texto, primeiro faça uma leitura dinâmica sobre o capítulo. O objetivo nessa leitura não é entender tudo, mas se familiarizar com o assunto. A medida que for lendo, marque os trechos, imagens e tabelas que considerar importantes:

Marcando os trechos mais importantes para posterior releitura

Ao terminar a leitura dinâmica, recomece, agora com a leitura analítica, mais lenta e detalhada. A medida em que você prossegue coma leitura analítica, vá elaborando os mapas mentais (o software que usei foi o MindMUp 2.0 para o Google Drive), no mínimo cada mapa mental deve conter todas as subseções do capítulo em questão (mas essa regra pode ser quebrada, depende de cada um...). Mapas mentais são muito úteis porque o cerebro memoriza mais facilmente estruturas hierarquicas e coloridas. Há vários estudos demonstrando isso.


Exemplo de Mapa Mental sobre a API I/O

Durante a leitura analítica, implemente os vários códigos de exemplo e faça experiências.

Utilize a técnica de comparação de abordagens. O cerebro também memoriza mais facilmente quando você tem acesso a 2, 3 ou quatro abordagens diferentes sobre o mesmo assunto. Utilize essa técnica somente nos assuntos em que tiver mais dificuldade, se usar em todos, vai perder muito tempo. Utilizei a comparação de abordagens principalmente nos tópicos que cobrem Concurrency API e Stream API, para este último utilizei os capítulos 4 e 5 do livro Java 8 in Action de Raoul Urma, Mario Fusco e Alan Mycroft da editora Manning. Com relação a API Stream o livro Java 8 in Action possui uma abordagem muito mais interessante do que a presente em OCP Study Guide. Mas creio que as ambas se complementam:



Quando estiver mais ou menos na metade da leitura analítica de um capítulo, comece a fazer a leitura dinâmica do próximo capítulo. Prossiga assim até o final.


Revisões

Releia de forma periódica todos os trechos marcados e os mapas mentais. Revise a estrutura do mapa mental alguns dias depois de terminá-lo, acrescente ou elimine nós se achar necessário. A grande vantagem dos mapas mentais é que eles permitem que você estude uma grande quantidade de tópicos de forma rápida e ainda memorizá-los mais facilmente.

Optei por fazer os exercícios do livro e os simulados na última semana, somente depois de terminar todos os capitulos.


Por que tirar uma certficação?

Certificação oficial é uma vantagem enorme no seu currículo. Quem pensa o contrário, com certeza não tem nenhuma.

Uma certificação oficial significa que a empresa realizadora do exame (geralmente líder no seu segmento de mercado) assina embaixo que você possui todas as credenciais mencionadas. Por exemplo, a chefe de um RH pode não entender nada de Java e outras tecnologias em detalhe, mas com certeza ela conhece as marcas Oracle, Microsoft, IBM, CISCO, Amazon etc. Quando você tem a certificação, essas marcas passam a recomendar você!

Outro aspecto interessante, é que ao passar no exame você ganha um certificado em forma de diploma, geralmente assinado por algum executivo de alto escalão da empresa. Antigamente os certificados da Microsoft vinham com a assinatura de ninguém menos que Bill Gates!


Outro recurso bacana é que você ganha medalhas. E pode vinculá-las à URL que atesta sua certificação. Nessa URL qualquer pessoa no mundo inteiro pode checar as competências cobradas no exame que você passou. É um diferencial profissional e tanto!


Os exames são difíceis e isso é bom porque limita a oferta de certificados no mercado. Outra mensagem implícita nos certificados é que você é um profissional que encara desafios. Muita gente competente tem condições de passar, mas não está disposta a se arriscar. O mero agendamento do exame tem um custo muito alto. Se não passar, você simplesmente perde todo dinheiro. Não há absolutamente nenhuma garantia, exceto a sua dedicação em se preparar para o exame.

E aí vai encarar?


       

9 comments:

  1. Parabéns, Rafael! Quantas questões tinha o exame?

    ReplyDelete
  2. A Oracle as vezes varia, mas dessa vez foram 85 questões

    ReplyDelete
  3. Muito bom texto e meus sinceros parabéns! Ler seu post me motivou mais ainda a "correr atrás" dessa certificação hahaha

    ReplyDelete
  4. Train For Java SE 8 OCA/OCP Certification Exams for FREE with https://derbyware.com

    ReplyDelete
  5. Tirou a prova online, ou presencial? (se sim, onde)

    ReplyDelete
    Replies
    1. blz Allan!
      As provas da oracle são presenciais, realizadas por algum centro de teste credenciado. NO meu post sobre a OCA, explico como é o processo de agendamento e realização da prova:
      https://finalexception.blogspot.com/2018/03/obtendo-oca-oracle-certified-associate.html

      Delete
  6. Parabéns pelo artigo e pela certificação Rafael. Vou seguir as recomendações e vamos em frente! Abraço!

    ReplyDelete