quinta-feira, 13 de junho de 2013

Quer aprender Genexus? (revisado)

Pessoal antes de iniciar um pequeno aviso, os links deste artigo são em sua maioria externos, me desculpe antecipadamente caso algum deles não responder adequadamente, pode ser que a fonte mudou de lugar.

O artigo foi revisado, e buscamos incluir novas conclusoes principalmente devido a abordagens que recebemos das pessoas que ingressam no desenvolvimento e de alguma forma esbarram em uma parede, que pode ser a própria dificuldade em aprender ou mesmo resistência, tentei deixar a coisa um pouco mais 'clara'.


Atualmente existe muito material disponibilizado para se aprender Genexus, a Artech oferece o site http://training.genexus.com com muitos vídeos em português, espanhol e inglês, abordando praticamente tudo que é necessário para se produzir excelentes programas com a ferramenta.

Por outro lado, aprender Genexus requer não apenas compreender uma nova linguagem de progranação, mas um conjunto de objetos com diversas finalidades, funcionalidades e características, que para um iniciante poderia trazer um pouco de confusão.

Me permitam selecionar certos fundamentos que, sob a minha ótica, são essenciais para compreender a filosofia envolvida no desenvolvimento com Genexus, e em cada um desses eixos fundamentais, um conjunto específico de objetos, que apresentamos na tabela abaixo, de forma resumida.

Modelagem
Tabela Base e Estendida


Diagrama e Navigation Report
Programação
Transformações
Interface Usuário

Na Modelagem o objetivo é representar a realidade através do objeto Transação, sendo necessário compreender um pouquinho de Análise de Sistemas.  Existe um outro video que apresenta alguns exemplos nesse sentido.

Tabela Base e Estendida são conceitos revolucionários na ferramenta e representam um importante nível de abstração para o acesso de dados nas tabelas, uma falha na aprendizagem deste conceito e você estará programando muito e obtendo poucos resultados com a ferramenta, portanto é crucial que compreenda isso.
Voce não precisa muita coisa para aprender tabela base e estendida, um objeto Diagram, uma Procedure para escrever seus for...eachs, e o objeto Navigation Report.

O objetivo da Programação é otimizar a aplicação por meio de operações não interativas, e aqui temos um reflexo do mundo real, pois Genexus oferece uma interessante linguagem de programação com muitos recursos automatizados.  O que você deve sempre pensar quando programa é fazer com que o resultado seja sempre eficaz, pois muitas vezes erramos produzindo programas lentos e ineficientes.
Outro conceito envolvido na programação é a busca por criar código reutilizável e de fácil manutenção, dai entramos no nivel dos Data Selectors e Business Components.
O conceito de Transformações representa o modelo no qual buscamos transferir informações de certo sistema para outro, muitas vezes recuperando informações de tabelas e transformando-as em outro formato como o XML ou JSON, por exemplo.  Trata-se de um conceito mais complexo, diria mais avançado, mas não deixa de ser importante destacá-lo.
Finalmente a questão relacionada com a construção de Interfaces Gráficas, aqui abordo somente Web, com dois objetos WebPanel e Patterns, não precisa muito mais que isso (talvez também o Theme, Images)

Conclusão e Dicas
Com um pouco de paciência nesse momento, porque entendo que aprender (ou reaprender) uma nova ferramenta sempre é um desafio bastante grande, procure conquistar os conceitos aos poucos. A sequencia que indicamos acima é interessante.

A dica principal que lhe passo é não buscar reproduzir a programação que está acostumado a desenvolver, no Genexus lembre-se que sempre é  ferramenta que programa para você, portanto se estiver escrevendo muito código numa procedure por exemplo, pode ser sinal que você pode não estar utilizando toda a capacidade de automação que tem a sua disposição.  Desligue um pouco seu modelo de pensar programação e passe a pensar 'como' o Genexus, quero dizer com isso que normalmente brigamos com coisas que não nos é lógica, e principalmente para desenvolvedores queremos reproduzir o que aprendemos a fazer ao longo de muitos anos de esforço e dedicação. Pensar que não será mais preciso programar um Insert por exemplo pode ser um pesadelo para alguns.

Se você não é programador, sinta-se livre para criar, sabe que tem uma pequena vantagem no inicio (mas só no inicio), conhecer sobre o que esta fazendo faz com que produza coisas 'mais' avançadas. Então, mesmo aprendendo Genexus é bom manter-se atualizado quanto as inovações.

Esqueça a programação das queries SQL (a menos que for encarregado da manutenção do BD), Genexus gera as queries de manutenção e também de recuperação e manutenção dos dados, e o próprio Genexus se encarrega de buscar os dados nas tabelas corretas.  Não precisa se preocupar com a programação de inner join, por exemplo. Mas para dominar esse tema precisa aprender o significado de tabela base e estendida.


Não queira provar que o Genexus está errado naquilo que faz, isso é sinal de que você não confia na ferramenta ou quer voltar rapidamente ao modelo 'tradicional' de programação, agindo assim não vai aprender nunca. A postura deve ser a inversa disso, deve entender 'como' o Genexus faz, aprender como o Genexus 'pensa'.  Buscar antecipar o que a ferramenta vai produzir é o exercício que o leva a dominar o bixo rapidamente.

Genexus não é fácil, parece simples, mas entenda, assim como toda tecnologia é muito simples para quem a domina, e leva-se um tempinho para assimilar tudo. Sempre me perguntam quanto tempo, e a resposta é:

Se você passar a respirar Genexus vai domina-la em um mês.  Se por outro lado ficar brigando com a ferramenta pode ser que nem aprenda.

Me desculpem agora, não quero gerar nenhuma polêmica, mas não sei quais as razões que te levaram a buscar Genexus, se for porque quer construir sistemas robustos altamente tecnológicos e de forma muito rápida, creio que vai gostar muito do que tem em mãos. Por outro lado se foi 'obrigado' a aprender porque sua empresa 'teve' que adota-la, lembre-se que deve ter havido uma razão para isso, pense comigo, a busca de uma ferramenta que automatize um pouco a programação pode significar que equipe de desenvolvimento pode não estar respondendo como deveria, ou ainda, que muitas oportunidades vem sendo perdidas devido a baixa capacidade de programação.  Em ambas as circunstâncias o melhor é realmente aprender.

Tenho plena certeza que é um excelente desenvolvedor, que tem habilidades absurdas, domina todos os frameworks, todos os caminhos que levam a produzir um programa 'especial'.  Entenda que Genexus vai expandir sua capacidade de produzir estas mesmas coisas especiais, mas pode ser que não pelo caminho que você conheça.


Desta forma desejo-lhe realmente um 'Caminho Suave' e bons estudos!

Ah, e claro que não se aprende sem o Genexus, portanto, pegue ele aqui.

Caminho Suave: que saudade dos meus tempos de criança!