Wednesday, May 20, 2015

Frameworks, o lado bom e ruim de se adotar um

Introdução

O que é framework mesmo? Framework é aquela "biblioteca grandinha", ou melhor, aquele conjunto de bibliotecas que te fornece um ambiente de desenvolvimento pra facilitar todas as tarefas de um determinado escopo.

Esteja de olho nas novas tendências

Sempre é bom estar de olho nas bibliotecas que estão se tornando tendência, mesmo que você não adote elas. Quando você entende a maneira que ela resolve os problemas você também entende como a comunidade deste determinado escopo está pensando e pode ter novas idéias para resolver os seus problemas. Muitos Frameworks apresentam um novo paradigma de programação, uma nova perspectiva de lidar com o seu código em geral e pode acrescentar muito na maneira que você pensa.

Para Grandes Empresas

Em grandes empresas, adotar um framework famoso pode ser tão importante quanto adotar uma linguagem pois irá tornar o código mais homogêneo pois todos os desenvolvedores irão saber como resolver o problema da mesma maneira, e por consequência, saberão ler e dar manutenção no código alheio.

O Problema surge antes do Framework

Mas o framework pode trazer mais problemas do que soluções, é importante saber escolher, afinal, você precisa mesmo de um framework? O Framework deve vir pra resolver um problema que você já conhece. Quando você aprende uma nova linguagem, antes de ir procurando quais frameworks existem no mercado, você deve sentir como é desenvolver com essa linguagem e entender suas limitações e dificuldades, assim vai poder identificar quando o framework irá facilitar ou trazer complexidade desnecessária.

Desapegue-se

Também é preciso saber quando desistir de um framework, foi muito legal, muito divertido, tivemos ótimos momentos juntos, mas nosso relacionamento já não é como era antes, conheci novas técnicas e tecnologias e você está mais atrapalhando do que ajudando.
Quando eu comecei a desenvolver para Java Web fui apresentado logo de cara ao JSF (Java Server Faces), era o framework adotado na empresa e provavelmente eu não tinha escolha mesmo, mas depois de diversos meses usando a ferramenta, depois de me tornar um expert, saber tudo sobre o assunto, eu queria fazer coisas mais avançadas, pesquisei muito na internet como realizar algumas tarefas que ele não estava pronto e tudo o que pude fazer era gambiarra, estava na hora, e nos próximos projetos eu radicalizei, voltei ao básico: Servlet e javascript puro. Parece impossível, mas o puro foi mais produtivo que o framework. Mas isso não pôde durar muito.

O Framework Indispensável

Existem alguns frameworks indispensáveis, a linguagem as vezes está parada no tempo ou não quer abstrair tanto, mas a comunidade vê potencial, quer essa abstração e cria frameworks que as estendem totalmente de maneira que simplesmente não dá pra não usa-la. É o caso do Ruby on Rails, e no meu caso, era o jQuery para javascript.
Eu aprendi javascript puro, na época que não existia jQuery e era doloroso (IE6) e cansativo, eu considero o jQuery uma salvação para o javascript, é claro que a linguagem não iria morrer pois todo mundo usava o navegador e todas as empresas tinham um website, mas a linguagem estava largada as traças, você tinha que escrever muito, com métodos muito extensos, sem falar nos vários IFs para navegadores diferentes. Não tinha como não usar jQuery e ele era o framework perfeito.

Não seja um escravo do sistema

Hoje é muito frequente ver vagas de emprego com não só linguagens como requisitos básicos mas também frameworks. Pode isso Arnaldo? Como eu disse anteriormente, é bom adotar um framework em grandes empresas, porém você como desenvolvedor não pode se acomodar com essa situação, você não é apenas um operário para "aplicar" código usando uma arquitetura e sem ter que pensar em nada, não tire essa idéia da cabeça.

A Modinha dos Frameworks

Novos frameworks são criados com cada vez mais frequência, veja o caso de javascript, a velocidade que novos frameworks MVC são criados é incabível, e todos eles implementando o mesmo padrão de projetos, é um desperdício de mão de obra. Angular, Backbone, Knockout, Ember, Batman, Cappuccino, Spine, Sammy, entre tantos outros. E é incrível como continua a ser criados frameworks MVC, só porque eles parecem magica, fazer tudo automático, mas pra falar a verdade a maioria dos projetos web não se encaixam no padrão MVC. Para as aplicações web mais dinâmicas eu prefiro lidar com eventos.

A Difícil Quest do Framework perfeito

Conforme você vai adquirindo experiência e o tempo vai passando, eventualmente você terá que largar o seu framework favorito para seguir em frente, e alguns frameworks novos que você conhecer poderão te dar um bloqueio por tudo que você aprendeu ao longo dos anos, pois estes seguem padrões que você vê que não te darão tanta liberdade quanto gostaria. Quando chegar esse momento você terá que optar em continuar procurando o framework perfeito incessantemente, continuar com a porcaria que você tem ou criar o seu próprio conjunto de bibliotecas.

E se eu criasse meu próprio Framework?

A vantagem de usar o seu próprio conjunto de bibliotecas, fazer seu próprio framework com classes utilitárias, classes abstratas para processos e classes para models genéricos é que a curva de aprendizado é mínima, você poderá altera-lo para se adequar a suas novas necessidades, o código poderá evoluir sempre com mais facilidades, você terá certeza de como funciona e poderá abandonar ou adquirir módulos a qualquer momento. O lado ruim é que nunca conseguirá contratar um funcionário que já sabe usar seu framework.

Na Martin.labs

Na Martin.labs usamos diversas linguagens: Java para o servidor, javascript para a web, C# para Android e iOS; em cada um desses ambientes avaliamos qual seria a melhor estratégia de frameworks:
Para Java nós já conhecíamos muito de como desenvolver webservices sem um framework, e já sofremos muito com frameworks de terceiros, preferimos criar nosso próprio framework para lidar com Servlet, Transações, envio de E-mail, Conexão com Banco de Dados e Classes de Modelos padrão para respostas de WS e Exceptions;
Para javascript usamos essencialmente jQuery e Require, além de outras ferramentas para build e bibliotecas simples, mas juntamos um conjunto de bibliotecas e criamos nosso próprio framework também;
Para Android e iOS a situação é mais delicada, utilizamos um grande framework chamado Xamarin, bom não é exatamente um framework - nós desenvolvemos usando os métodos de Android e iOS porém em C#, e muitas funcionalidades de lógica de negócios fica em um único código - E como não encontramos nenhum ótimo framework para Xamarin e não sentimos a necessidade de um, fizemos nosso próprio conjunto de bibliotecas, e códigos reutilizáveis para vários projetos.

Conclusão

Não posso te dizer para usar o framework X ou criar seu próprio framework, depende de pessoa pra pessoa, da tecnologia que você usa, do seu ambiente de trabalho, e principalmente dos seus gostos e conhecimentos usando as tecnologias que possui. Você precisa enxergar os benefícios e malefícios de cada framework e não simplesmente seguir uma moda.

Tuesday, May 5, 2015

Plataformas Educacionais - Ficou fácil aprender.É só querer.

Sabemos que o estudo é um fator importantíssimo para o ser humano, aprender e repassar o nosso conhecimento é o que faz o homem evoluir de geração para geração.
Muitas vezes somos “obrigados" a estudar seja para passar de ano no colégio ou faculdade. Devido a esta obrigação nem sempre estamos dispostos a absorver este conhecimento naquele certo momento, seja por falta de interesse no assunto ou até mesmo falta de didática de professores que não motivam corretamente seus alunos.
Mas isto está mudando, uma área crescente na tecnologia são as plataformas de estudos on-line que oferecem cursos em diversas áreas : Física, Química, Economia, Marketing, Tecnologia (principalmente), etc. Algumas destas plataformas foram criadas com parcerias de grandes universidades de todo o mundo e outras por consultores e experts em diversas áreas.
Listamos abaixo quatro grandes plataformas de estudos que são ricas em conteúdo e que possibilitam aprender onde, quando e como melhor desejar :

Coursera - www.coursera.org - Gratuito

O Coursera é uma parceria de diversas universidades de todo o mundo e tem como missão oferecer acesso a melhor educação disponível no mundo. Algumas destas universidades são : Stanford University, University of Maryland, Columbia University, e até mesmo USP (Universidade de São Paulo) e Unicamp (Universidade de Campinas) estão entre as que colaboram com a plataforma.
Cursos de diversas áreas são oferecidos como : Biologia, Computação, Engenharia, Economia, Matemática, Física, Estatística entre muitos outros.
Sem dúvida é uma das plataformas mais completas disponíveis atualmente e o melhor de tudo é que seu conteúdo é gratuito.

EDX - www.edx.org - Gratuito

A plataforma foi fundada por uma parceria entre a MIT(Massachusetts Institute of Technology) e Harvard University e possui diversas parcerias de peso.
Com mais de cem mil certificados adquiridos pelos estudantes do site, possui mais de 400 cursos em diversas áreas como Ciência da Computação, Matemática, Humanas, etc. Os cursos são oferecidos por faculdades do mundo todo de peso como : Berkley University Of California, Georgetown University, Caltech, Columbia University, The University of Queensland (Austrália) entre outras.
A maioria dos cursos oferecidos são para as áreas de ciência da computação e tecnologia.

Lynda - www.lynda.com - Pago

O Lynda é uma plataforma de ensino on-line paga que reúne especialistas de várias áreas como: Computação, Fotografia, Design, Negócios, etc.
Atualmente é a plataforma educacional paga de maior sucesso na internet, isto se dá devido a qualidade dos vídeos e conteúdo diversificado de cursos (mais de 3 mil cursos atualmente), dando ao usuário do plano mais completo a possibilidade de baixar o conteúdo e assistí-lo offline.
Possui grandes clientes como Microsoft, Adobe e NBC.
Vale a pena conferir o site que dá a possibilidade de ter uma amostra dos cursos.

Udemy - www.udemy.com - Gratuito/Pago

O Udemy é um site educacional em expansão com mais de 6 milhões de estudantes cadastrados, nele é possível aprender e ensinar. Isto mesmo, o site oferece a possibilidade de se cadastrar como um instrutor, aumentar sua visibilidade no mercado de trabalho e ainda render uma grana extra.
Possui cursos de diversas áreas como Computação (grande parte dos cursos), Design, Marketing, Fotografia, Música entre outros. Alguns cursos são pagos, porém existe uma boa quantidade de cursos gratuitos.
O site foi reformulado atualmente e o número de cursos e instrutores vem aumentando consideravelmente.

Os sites listados acima possibilitam aos estudantes adquirir conhecimento em diversas áreas, com os melhores professores e instrutores de todo o mundo, quando e onde quiser.

Acabou a desculpa que o professor é ruim!