OCJP – Vantagem ou Perda de Tempo?

Não sei se comecei bem.

Escolher um assunto polêmico dessa maneira, logo no primeiro post, é dar a cara a tapa. Todo mundo partilha de uma opinião diferente sobre as certificações existentes no mercado. Muitos “endeusam” um certificado, como se fosse uma coisa sagrada que torna você diferente de todos os profissionais que estão no mercado. Outros simplesmente denigrem, acreditam que é perda de tempo, ou uma procura por uma afirmação que não é necessária se você realmente possui um knowhow sobre a tecnologia e já até ouvi pessoalmente de que é somente uma estratégia a mais da corporação que mantém a certificação de obter lucro sobre os profissionais que absorvem o meio de solução proposto.

Ah sim, qual é a minha posição? Nenhuma das duas acima.

Acredito que os dois lados da moeda têm suas razões. Concordo com o fato que uma certificação o torna um profissional melhor. Você é obrigado a estudar alguns detalhes que passam despercebidos e também a explorar todo o leque de soluções que a tecnologia tem a lhe oferecer. Mas também concordo que uma certificação pode lhe tornar um profissional pior ou nem mesmo um profissional. Um exemplo? Já vi muitas pessoas decorarem o conteúdo necessário para aprovação só para conseguir aquele famoso “cartãozinho”, que é exibido com gosto naquelas conversas informais na hora do cafezinho. Ou até mesmo para conseguirem o primeiro emprego. Não que eu tenha alguma coisa contra os aspirantes ao mercado que definem como a sua meta de porta de entrada para um emprego uma certificação, mas eu enxergo mais do que isso: uma certificação existe como meio de completar um profissional.

E já que o assunto é certificação, vou falar da qual tive a aptidão de conseguir e que acredito que tenho competência para discutir sobre a mesma:

OCJP – Oracle Certified Java Programmer, é a antiga SCJP – Sun Certified Java Programmer, mais conhecida como a certificação de Programador Java.

A lenda que eu ouço e leio por aí é de que essa é a certificação mais difícil do mercado de TI. Eu não posso afirmar isso, porque nunca tive experiência com outros testes, mas uma coisa eu garanto: ela é meio “enrugadinha” sim. E foi um pouco disso que me atraiu. Afinal, se uma certificação não possui um conteúdo que desafia o profissional e faz com que o mesmo tenha que explorar a tecnologia para que tenha a capacidade de poder driblar os problemas do dia a dia, qual é o seu verdadeiro mérito? E eu não vou mentir. Tive SIM dificuldades para estudar e passar na prova. Mas isso só provou o quão era grande o meu grau de alienação na época e o quanto eu poderia melhorar.

Bom, o que eu pretendo fazer é aqui é tentar chegar, de certo modo, á um percentual considerável em cima do conteúdo aplicável, de maneira que possamos avaliar se, do ponto de vista técnico, a prova vale a pena.

Nossa, mas isso é impossível de se fazer! A sua experiência com uma determinada tecnologia pode ser muito diferente da de outros profissionais! Você não acha que é uma avaliação muito intrínseca tentar colocar todo o valor da certificação dentro de um percentual?

Sim, tem razão. Mas o objetivo aqui não é dar um percentual e dizer: Olha, chegamos á 80%, vá fazer a prova porque realmente vale a pena. Claro que não. O objetivo aqui é tentar mostrar o quanto da prova foi importante no meu contexto profissional e tentar, repetindo novamente, TENTAR colocar essa análise em um contexto geral, que acredito eu, é o contexto da maioria dos profissionais do mercado.

Bom, se baseando no livro de guia de estudo da Kathy Sierra, temos classificados em 10 capítulos todos os tópicos necessários para a realização da prova. Então podemos considerar que cada capitulo pode chegar á um valor de 100% que corresponde á 10% dos 100% possíveis do que eu considero realmente bom e necessário dentro dos aspectos que serão discutidos. E por favor, mesmo parecendo, não estou discutindo o livro em si (apesar de realmente parecer), mas sim seu conteúdo, já que o mesmo reflete o que está na certificação, não é verdade?

Então, mão na massa: Vamos discutir os capítulos!

CAPÍTULO 1 – DECLARAÇÕES E CONTROLE DE ACESSO

Acho muito legal e essencial esse capítulo. Aqui discutimos sobre os modificadores de acesso, modificadores de comportamento, declarações de variáveis, Enums e o que achei um pouco mais interessante: Convenção de Código dos JavaBeans. Por quê? Parece incrível, mas a maioria não segue a convenção. O pessoal acha que get e set são apenas para modificação de variáveis internas de uma classe. Absurdo. Alias, existe até uma documentação detalhada sobre convenções, encontrada aqui. Outra curiosidade: muita gente não sabe afirmar corretamente o grau de acesso de um membro Protect, e nem imagina que ao declarar uma outra classe no mesmo .java da classe publica o modificador Default é atribuído á mesma.

Então, nível de importância? Vou considerar os 100%. Porquê? Esse é um assunto que todos nós temos que dominar. Nivelamento de acesso, declaração e modificadores é um assunto que todos têm que dominar, e a manipulação de enums e o uso da convenção tem que ser trabalhado no dia a dia.

CAPÍTULO 2 – ORIENTAÇÃO A OBJETOS

Feijão com Arroz! Esse capítulo é a base para a verdadeira essência do Java! Como dominar a tecnologia sem a noção de Polimorfismo, Herança ou até Instanciação?

Porcentagem na importância: 100%. De olhos fechados, mãos atadas sentado na beira de um precipício.

CAPÍTULO 3 – ATRIBUIÇÕES

Esse capítulo fala bastante sobre tipos primitivos e wrappers, alem de dar uma boa explanada em arrays e no Garbage Collector. Mais uma vez, conteúdos básicos que muita gente não sabe são abordados no capítulo, como por exemplo: o java passa valores por referência ou por cópia? O que é o AutoBoxing e o que mesmo pode influenciar no seu código? E o GarbageCollector? Você confia nele?

Vou considerar 70% no mesmo. Mais pelo conceito, que é muito importante, do que pelo lado prático. Afinal, ao enxergar somente o lado prático, como a maioria, o conceito fica para trás. Mas considero que não seja um ponto que pese tanto assim no desenvolvimento de uma aplicação.

CAPÍTULO 4 – OPERADORES

Básico. Não dominar os operadores seria a mesma coisa de dirigir um carro e não saber o que é o volante. Mas concordo que a certificação exige um pouco mais do assunto, como no caso dos operadores Bitwise, que, sinceramente, nunca usei e nunca vi ninguém usar.  Mas de qualquer maneira, 100%. Afinal, não conhecer sobre o assunto é dar um tiro no próprio pé.

CAPÍTULO 5 – CONTROLE DE FLUXO, EXCEÇÕES E ASSERTIVAS

Outro capítulo 100%, sem hesitação. Condições e Iterações é o dia a dia do desenvolvedor. É o que define a implementação correta da lógica da aplicação, sem mais nem menos. Não diria nem que o assunto deveria ser dominado. Tem que ser absorvido de uma tal maneira que vire um costume de todo profissional, não tem nem o que falar. Sobre as exceções, um conteúdo muito rico. Afinal, quase ninguém sabe realmente como trabalhar com exceções. Muitos nem sabem sobre as exceções de RunTime. Exagero? Não, amigos, vivência. Fora o mau uso do mecanismo no dia a dia. Que levante a mão aqui quem nunca viu uma aplicação cheia de printStackTrace()’s dentro dos catch’s ou cheio de throws nas assinaturas dos métodos. E quando falamos de sobrecarga e sobrescrição de métodos com exceções sendo lançadas na sua assinatura? Conhecimento Legendário! Não tem como questionar o conteúdo exigido nesses objetivos do exame.

CAPÍTULO 6 – STRINGS, E/S, FORMATAÇÃO E PARSING

Eu considero esse capitulo especial pelo fato de podermos discutir sobre Strings. Compreender a imutabilidade é muito importante numa aplicação em que a escalabilidade precisa ser o carro chefe. E a manipulação desse tipo faz a diferença SIM no desempenho de uma aplicação. Alem do mais, é muito interessante saber quando usar um StringBuffer e um StringBuilder, afinal, a má utilização das mesmas não sana o problema que a imutabilidade pode trazer. Alias, seria mesmo a imutabilidade um problema? O fato não é discutido nem exigido nos objetivos da certificação, mas é muito legal saber os pós e os contras, e até mesmo usar quando necessário. A Caelum, famoso centro de treinamento, que inclusive mantém o GUJ, aborda o assunto no livro que esta sendo desenvolvendo por eles, e a quem interessar, o trecho do livro sobre o que é explanado se encontra aqui.

Sobre a E/S (Entrada e Saída), acho importante salientar, e na verdade, e até o que o guia de estudos motiva, que mesmo sendo exigido aquele conhecimento detalhado sobre o mecanismo na certificação, o mais importante é a aplicação prática do assunto. Afinal, entrada e saída é uma implementação básica em qualquer aplicação, independente da extensão trabalhada (txt,xls,etc). Essa questão eu acredito sim que precisa ser decorada e guardada com carinho em algum lugar da mente, porque é mais um dos artifícios que é usado freqüentemente no dia a dia.

Agora, na abordagem da formatação e do parsing, eu realmente achei um exagero o conteúdo exigido. Normalmente a formatação é feita na camada de View (quando usado o MVC), seja em uma aplicação Web ou Desktop, e sobre o parsing, sinceramente, qual é a freqüência de desenvolvimento de uma solução que exija a tokenização de um arquivo? Claro, não se pode descartar o conteúdo, afinal, o princípio básico é de que a certificação lhe permita conhecer todas as ferramentas disponíveis da plataforma, mas, mesmo assim, achei que o assunto foi tratado de uma maneira muito profunda e, sinceramente, de uma forma que exija que o profissional  o decore. Decorar não é bom. Saber que existe, seus conceitos básicos e consultar a documentação quando necessário? Esse é o correto na minha opinião.

Então, considerarei 60%, que seria a manipulação de strings e o conhecimento sobre as API’s de entrada e saída. Posso até estar errado, mas descarto a maioria das exigências sobre formatação e parsing existentes nos objetivos, com base no explicado acima.

CAPÍTULO 7 – GENÉRICOS E CONJUNTOS

E aqui, literalmente, o “bicho pega”. Quem já teve a experiência de mockar o exame ou até mesmo realizá-lo pessoalmente, sabe que a prova exige bastante do assunto. Se concordo ou discordo? Prefiro ficar em cima do muro. Não vou dizer que o estudo das particularidades dos diversos conjuntos não adicionou nada ao meu conhecimento técnico, mas também não tenho coragem de dizer que o conteúdo não é adequado quando conversamos sobre exigências básicas para afirmar que sou um “Desenvolvedor Java”. É interessante e muito bom saber os diversos tipos de conjuntos e suas aplicações dentro do contexto de uma solução. E só. Na minha opnião, a verdadeira riqueza desse capítulo se encontra na discussão sobre Generics. É um conceito que ajuda muito no tratamento de tipos quando se referimos a alguns erros de desenvolvimento. Mas mesmo não sendo o objetivo do post, tenho que concordar: poderia sim ser uma coisa mais legal. Quem sabe não entro em um assunto futuro sobre o tema?

No meu conceito? 80% de importância. Devido ao leque que abre ao estudarmos os diversos tipos de conjuntos e a exigência sobre os Genéricos.

CAPÍTULO 8 – CLASSES INTERNAS

Já vou dizer logo de cara: 20%. Porquê? Somente pelo fato de termos a oportunidade de lermos sobre o assunto. Eu nunca usei uma Classe Interna. E aposto que 95% dos que irão ler esse post também nunca usaram. Aliás, existe uma grande discussão na comunidade que debate realmente a utilidade das classes internas. É claro, a prova pega um pouco pesado com esse assunto também, o que faz com que tenhamos de realmente conhecer as classes internas, mas isso não quer dizer que, na minha sincera opinião, não seja um pouco de tempo perdido. Alguns irão atirar pedras quando lerem isso daqui. Mas aposto que a maioria irá concordar.

CAPÍTULO 9 – THREADS

Outro capitulo que é muito exigido na prova. Aliás, se vocês me permitem, foi o assunto que eu mais gostei de estudar. Acho interessante o fato de dois processos serem executados ao mesmo tempo. Ah, esqueci, não é isso que acontece! Acreditem, pode até parecer besteira, mas muitos dos meus paradigmas caíram por terra abaixo. E acho que vocês irão concordar: o conceito discutido no capitulo é muito importante. Agora, a aplicação? Nem tanto. Consigo contar nos dedos ás vezes que tive que me preocupar com threads ou desenvolver alguma coisa relativa. Mas o conceito sempre está lá. Exemplo? Servlets. Existe o conceito por trás, mas normalmente um framework já lhe dá um controller pronto para lidar com o problema.

Vou eleger então uma porcentagem de 90% para o assunto, mas pensando mais na importância da absorção do conceito do que na aplicação prática, já que lidamos com o assunto todos os dias mas na maioria das vezes, e na maioria das vezes mesmo, não colocamos a mão na massa para lidarmos com a aptidão técnica que a prova exige.

CAPÍTULO 10 – DESENVOLVIMENTO

100%. Gerar um JAR? Saber o que é ClassPath? Tem que ser o almoço de todo dia. E ponto. Claro que hoje, temos o Maven, Ant, etc. Mas mesmo assim, não podemos ignorar o conceito.

Bom, é a hora da verdade.

Fazendo as contas, chegamos á média de…  (trombetas tocando?) … 72%.

Achei uma boa proporção. Afinal, é válido o estudo e o esforço, mas a OCJP não é nada de outro mundo. No meu contexto, valeram a pena esses 72%. Os outros 28%, simplesmente carrego com carinho para momentos turbulentos. Afinal, não é de se jogar no lixo. A questão é, do ponto de vista técnico, vale a pena para você?

E o mercado? Como o mesmo encara a certificação?

A resposta é: não tem resposta. A maioria dos departamentos de RH consideram um diferencial. Os gerentes de TI tem opiniões diversas, mais ou menos como as citadas no começo do post. Eu, como avaliador, consideraria um diferencial somente após uma conversa com o profissional, assim como faço normalmente na minha rotina. Afinal, existem as pessoas que realmente tiram proveito da vantagem e existem pessoas que usam a vantagem da certificação para atestar uma qualidade e um conhecimento que na maioria das vezes, não possuem.

Então, uma certificação seria uma Vantagem ou simplesmente uma Perda de Tempo?

Depende. Você é um profissional que utiliza recursos com a consciência das vantagens envolvidas e dos benefícios da mesma, ou prefere perder tempo, tentando iludir a si mesmo e aos outros e esperando que o longo prazo não mostre que o seu objetivo era apenas uma manobra temporária sem muitas esperanças?

A minha experiência foi a de que, a Certificação, foi uma Vantagem.

8 respostas para OCJP – Vantagem ou Perda de Tempo?

  1. Edgar disse:

    Acho que essa foi a melhor análise sobre a OCPJP que eu já li. Parabéns. Concordo com tudo o que você escreveu. A certificação em si amplia o conhecimento do profissional mas não se pode endeusá-la. Importante salientar também que apenas estudar para as certificações não torna ninguém um grande profissional. Java é um mundo grande demais.

    Por outro lado… percebo que muitos dos que dizem que “certificação não vale nada” na realidade possuem mesmo é preguiça de devorar os livros. Sem contar que há empresas que a valorizam muito. Já vi vagas para analistas Java que ofereciam 500 reais a mais no salário se a pessoas tivesse a OCPJP.

    Finalizando, creio que (quase) tudo pode ser resumido em uma palavra: Estudo. Estude para as certificações, estude os frameworks, estude UML, padrões de projetos, etc… com certeza as recompensas virão não só do ponto de vista financeiro mas pessoal e intelectual também.

  2. Fernando Franzini disse:

    Parabéns pelo artigo! O assunto é polemico sim e já discutimos muitos nos fóruns. Uma coisa eu sei que é certa..falar mal de uma certificação não tendo ela é apenas conjectura sem valor. Se alguem quer falar de uma certificação, tenha a vergonha da cara de tira-la para depois falar algo. Eu mesmo fiz varias das minhas 26 e algumas delas realmente não valeram a pena.

    • Obrigado Fernando!

      Como cheguei na conclusão no próprio post, realmente vale a pena e no meu contexto foi uma ótima experiência. Agora, claro, como tudo na vida, mesmo que sejam poucos, sempre existem pontos negativos.

      A discussão sobre o valor da mesma sempre vai existir e eu acho isso extremamente saudável, mas eu concordo extremamente em um ponto com você: não existe hoje um motivo concreto para que um profissional não se certifique. Principalmente quando falamos da OCJP.

  3. [...] ou perca de tempo tirar uma certificação de tecnologia? Anderson Torres publicou um ótimo artigo no seu blog falando sobre o assunto. Depois de ler, chegue em [...]

  4. Excelente post, você direto no ponto abrangendo os que são contra e os que são a favor, vlw sanou algumas dúvidas, vejo que pra mim tirar a certificação vi ser como incentivo ao conhecimento.

    de novo muito obrigado

  5. luciano disse:

    Meu Deus… vc mudou minha visão em relação as certificações. Exelentissimo post, ganhou mais um leitor.

  6. Ok, Anderson.
    Excelente post, parabéns pela iniciativa.
    Realmente tenho visto vários foruns discutindo o assunto. E a forma que você colocou, me deu um gás e incentivo pra continuar a estudar para tirar essa certificação.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.