Mostrando postagens com marcador reflexao. Mostrar todas as postagens
Mostrando postagens com marcador reflexao. Mostrar todas as postagens

domingo, 15 de abril de 2012

Reflexão sobre foco nos estudos.

Essa semana um grande colega de trabalho (@w_leao_c) mencionou sobre o desenvolvimento de um aplicativo revolucionário (nossas ideias são sempre revolucionárias) usando a mais nova linguagem (hype) que causa a destruição em todas as outras que já existiram. Tá bom, é claro que não foi bem assim... Mas o importante é que chegamos a um estereótipo em que se enquadram diversos desenvolvedores (nós >> estereótipo)¹: 'O profundo conhecedor de superficialidades'.

"A nova ['tecnologia', 'ferramenta', 'linguagem', 'framework', 'padrão', 'SO', 'plugin'][rand(7)]² é muita massa! Eu realmente gostei do novo conceito que ela apresenta e acho que merece dedicação do meu tempo.". Diversos outros fatores podem influenciar na decisão de começar a estudar uma nova tecnologia. As pessoas que você acompanha podem estar falando bem daquilo e você enxerga essas vantagens realmente; A tecnologia provê uma melhor forma de implementação para a ideia sinistra que você teve; Vai te ajudar a economizar tempo; Você acha que vai precisar daquilo em um futuro próximo etc. OK, não há problema nenhum quanto a isso. Isso trás a tona que nós (devs) gostamos de estudar e avançar na nossa carreira.

Mas pode ocorrer que após certo tempo você enxerga que aquilo não é tão legal assim; ou que você não vai precisar daquilo em um futuro breve como você pensava; ou que o tempo que você gasta implementando nem é tão diferente assim do tempo que você fazia com o que conhecia; ou pior, encontra alguma outra tecnologia que por algum motivo você ACHA que é melhor ainda.

Isso é problema? (eu.consultorModeOn()³) Depende. É legal você perceber rapidamente o que não traz tanto proveito e encerrar a dedicação de tempo naquilo. Entretanto, é chato você perceber isso sempre e continuar cometendo o mesmo erro de começar a estudar algo e abandonar depois de pouco tempo. É desperdício. Diariamente temos inúmeras tecnologias legais no mercado saindo do forno quentinhas, quentinhas (agora pense em um pão de queijo). É novo! Da vontade de aprender (comer). Mas depois de pouco tempo, talvez não esteja tão saboroso assim. Então o que fazemos? Largamos. Deixamos de lado facilmente.

OK, tem seus lados bons e ruins... é uma questão de foco da pessoa. Você prefere estar por dentro de tudo que rola no mundo da tecnologia ou prefere gerar valor parar a sociedade ao seu redor? Gosto muito de desenvolver software, mas primeiramente penso em fornecer algo útil. Não tem jeito, software é um meio. Desconheço um negócio onde ele se encontra como fim.

Um momento natural em conversas entre devs é comentar sobre as tecnologias existentes no mercado pra solucionar o n^2 problemas existentes que surgem nessa mesma conversa. O profundo conhecedor de superficialidades está lá. Sabe n^3 tecnologias que poderiam resolver o problema (ele já fez até um HelloWorld com todas elas), agora usar aquelas tecnologias a seu favor para resolver esses problemas é outra história.

Eu particularmente vinha apanhando bastante tentando agarrar o mundo com as próprias mãos. No entanto, tenho refletido sobre isso há algum tempo. Aprendi um pouco a pisar o pé no freio com todas essas informações e ser mais produtivo. Evitar o desperdício de tempo precioso.

Encerro aqui. :)


¹ append bash
² array ruby
³ method call java

sexta-feira, 2 de setembro de 2011

Coloque suas idéias em prática com vraptor 3 rodando no GAE

Olá! :D

Afim de colocar idéias em prática com os conhecimentos de programação que tenho e querendo um baixo custo para isso (tempo, por enquanto), descobri um framework java web open source, o vraptor.

Comecei com ele como quase todos (creio), peguei a apostila gratuita da caelum - que é a empresa responsável pela criação e manutenção do vraptor - e fui lendo-a e fazendo os exercícios. Em um final de semana a apostila estava finalizada e na cabeça logo veio: "Sim, era essa facilidade que eu queria". E já que o meu pensamento é em baixo custo, não perder tempo é essencial, afinal, tempo é dinheiro.

Vou enumerar aqui algumas vantagens que eu vi ao utilizar o vraptor.

Primeiro, a preocupação que eu tenho que ter com o framework é baixíssima. Com a premissa de 'Convention over Configuration' (CoC), o vraptor consegue manter meu tempo de codificação em cima do problema que eu quero solucionar (o fim), e acaba com a preocupação de difíceis configurações e maiores problemas com a tecnologia (o meio). Poucas vezes eu tenho que alterar alguma convenção do vraptor. Gosto do nome das controllers, de jsps, dos padrões de URIs, etc.

Segundo, é um framework action-based. Me dá liberdade de escolhas sobre frameworks javascript (JQuery, ExtJS, YUI, etc.), template-engines (jsp, velocity, etc.). Eu gosto do modelo action-based também por me dar visualização daquilo que eu programei. Olho o código fonte no browser e vejo aquilo que eu escrevi e nada mais. A detecção dos erros também é algo mais simples.

Terceiro, o conteúdo sobre vraptor na internet é o que não falta (em português ainda!). Temos a documentação no site oficial com guias bem explicativos, sem linguagem formal chata de ler e sem enrolações. Tem o fórum do GUJ, que é o maior fórum de java em lingua portuguesa. Lá você encontra grande parte dos problemas pelos quais você ainda vai passar. E esses problemas são respondidos na maioria das vezes pelos próprios commiters do vraptor (principalmente @lucascs e garcia-jj), que te respondem sempre educadamente não importando o nível da sua dúvida. Eu mesmo já postei umas dúvidas ridículas lá.

Quarto, vraptor-scaffold! Baseado na idéia do rails de iniciar novos projetos e montar os 'andaimes' da nossa aplicação, o @rodolfoliviero criou essa gem em ruby. Com o vraptor-scaffold, o trabalho de um CRUD mecânico é extinto. Classes de teste são geradas, o código de view gerado é muito clean. Basta criar manualmente os relacionamentos do seus models, ajustar views e se preocupar com a parte complexa do seu sistema :).

Essas são algumas das vantagens que me vem a cabeça quando falo do vraptor.

Levando em consideração ainda o baixo custo, eu não precisava apenas de um framework web que não consumisse todo o tempo que tenho disponível. Eu precisava de um servidor barato para colocar minhas idéias em produção. Eu já tinha conhecimento da existência do Google App Engine (GAE) desde que foi lançado. Mas tinha feito apenas alguns pequenos testes com servlets e só. A Google te fornece um ótimo plugin para o eclipse onde você pode começar a desenvolver rapidamente sua aplicação e fazer seu primeiro deploy em segundos com sua conta google.

Eis que então eu vejo que há um blank project do vraptor pronto para ser deployado no GAE.

Agora era só me adequar ao formato de se manter meus dados no BigTable (Datastore do GAE) e pronto. Eu conseguiria colocar aplicações java web "de graça" no ar e melhor, sem dores de cabeça no desenvolvimento :).

Quero dizer agora que ainda não tive uma super-idéia que está dando certo e eu estou conseguindo ganhar dinheiro com isso. Porém eu já tenho um ambiente pronto para a matança e vou atrás de um dia ainda conseguir isso.

Esse post serviu para passar diversas referências (links) para começar a desenvolver. Nos próximos eu pretendo aplicar a prática aqui. Vou refazer passos e relembrar problemas pelos qual eu já passei. Até! o/