29 maio 2008

Ensino e mercado de trabalho

O link abaixo é sobre uma pesquisa realizada sobre demanda de mão de obra e qualidade ensino. Algumas das coisas que a pesquisa fala eu comentei aqui, outras completam o assunto. Leitura muito interessante.

http://www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=pesquisa-mostra-que--apagao-de-engenheiros--e-iminente

27 maio 2008

Rede Social Acadêmica

Hoje acabei tendo uma ideia um tanto quanto interessante. Depois de uma conversa com minha namorada sobre a faculdade EAD que ela cursa, juntando a experiência (não muito boa) que estou tendo na faculdade presencial e o post que escrevi sobre inovação na educação pensei: "Por que não fazer uma rede social voltada para fins acadêmicos?". Hoje em dia existem redes sociais para quase todas as finalidades, desde redes para pessoas que se gostam muito até para pessoas que se odeiam. A maioria dessas redes são utilizadas para fins inúteis, somente perda de tempo.

A princípio havia pensado apenas em um sistema para ensino que possibilitasse a iteração remota entre alunos e professores, isso totalmente em tempo real. Seria algo para vencer as barreiras das distâncias geográficas, sem ser aquela chatice que se vê em alguns cursos EAD, onde o professor fica em um telão explicando a matéria e a única iteração se da na forma de um chat, nada prático quando se esta em curso. Acho que se pode ir além. O ideal seria essa iteração ser por voz. Uma vídeo conferência com voz seria o ideal, onde os alunos pudessem conversar em tempo real com o professor e também com demais alunos. Tecnologia para isso existe... Você pode pensar "isso seria ótimo mesmo para cursos EAD", mas eu digo que cursos presenciais podem se beneficiar muito disso.

Imagine o seguinte cenário, pegando como exemplo o curso de ciência da computação: existem matérias que todo aluno deve cursar, porém algumas matérias são mais específicas, matérias que direcionam os alunos para certas áreas da informática (desenvolvimento, infra-estrutura, banco de dados, gestão...). Na minha opinião deveríamos poder escolher quais matérias cursar, porém para uma universidade dar essa escolha para o aluno ficaria inviável. E é aqui que entra o sistema citado acima. A universidade matéria cada matéria centrada em uma unidade (caso a universidade em questão tenha várias unidades), transferindo as aulas via vídeo conferencia. Sim, teria um gasto com isso, porém menor do que manter professores extras.

Essa foi a primeira parte da ideia que tive. Talvez ela não seja tão boa quanto pensei que fosse, e talvez eu não tenha conseguido descrever ela tão bem quanto a forma com a qual eu desenvolvi ela em minha cabeça. Porém a ideia evoluiu, e junto com ela evoluiu a complexidade. E aqui entra a parte de rede social acadêmica. E aqui novamente eu talvez não consiga detalhar tão bem como a forma que imaginei.

Do início desse século até agora vimos a tecnologia evoluir e se transformar muito, e muito rapidamente, e notamos isso principalmente quando olhamos para a Internet. Redes sociais foram criadas e se multiplicaram como coelhos, apareceu a Web 2.0 e as novas formas de compartilhamento da informação, a cada dia aumenta o número de pessoas que acessam a Internet... Enfim, aparentemente tudo gira em torno da Internet hoje em dia, porém a educação, algo tão importante, esta ficando de fora dessa evolução. Apesar da Internet ser um ótimo meio de pesquisa, quase todo conhecimento humano estar disponibilizado espalhado por sites, a evolução da tecnologia e da Internet ainda não atingiu a educação de forma satisfatória. Sei que existem empresas empenhadas em informatizar a educação, criar meios transmissão de conhecimento, aperfeiçoar aulas a distâncias, mas ainda não vi nada que use toda essa tecnologia apresentada hoje na Internet.

A minha imagem de uma rede social acadêmica englobaria (basicamente):
  • Aulas em vídeo conferência;

  • Iteração direta entre aluno, professor e demais alunos;
  • Aulas armazenadas para consulta posterior em uma área de vídeos;
  • Podcasts sobre aulas, matérias, assuntos disponibilizados tanto pelos professores quanto por alunos;
  • Listas de discussão e fóruns;
E o que temos disponível, em se tratando de tecnologia, par se construir tal rede social? Bom, vejamos:
  • Redes sociais por si só são iguais a mato, todo lugar tem;
  • Para aulas em vídeo conferência poderia ser utilizado algo como o Yahoo! Live;
  • Armazenamento de vídeos: You Tube;
  • Podcast: se vídeo não é problema, som também não é problema;
  • Lista de discussão e fórum: Google Groups, Yahoo Grupos;
Bom, esse é só um pequeno exemplo para mostrar que tecnologia par tal rede existe. Talvez algumas coisas precisem ser melhoradas em muito, como vídeo conferencia, mas acredito que o maior desafio esteja mesmo em integrar todas essas tecnologias.

Como disse, não consegui descrever tudo o que imaginei sobre o assunto. Na verdade o que escrevi é somente uma pequena fração, e a cada linha que escrevo a ideia cresce mais. Mas por hora eu fico por aqui.

26 maio 2008

Projeto criado

Acabei de disponibilizar os fontes do projeto pessoal que criei. A página do projeto é http://code.google.com/p/controlefinanceiropessoal/, não existe muitas coisas lá ainda, somente uma descrição do projeto, algumas das futuras features que pretendo adicionar ao projeto e, é claro, os fontes.

Caso alguém se interesse, fiquem a vontade para comentar.
Criei uma nova tag no blog para post sobre o projeto, a tag CFP.

GWT

Neste post informei que estava começando um projeto particular e que utilizaria as seguintes tecnologias: JSP, Servlet, Struts, Hibernate. Bom, após uma tentativa frustrada de utilizar o YUI (Yahoo User Interface) diretamente com o Struts, decidi tentar aprender somente o que precisava saber sobre Struts primeiro, antes de utilizar alguma coisa diferente no projeto, como interface com AJAX que é o caso do YUI. Novamente fiquei frustrado. Bom, aprendi os conceitos do Struts, fiz alguns testes que funcionaram perfeitamente, inclusive com acesso ao banco de dados utilizando Hibernate. Mas o que me frustrou foi em relação justamente à interface.

O motivo dessa frustração foi por que não existe uma padronização que todos todos concordem para integrar o Struts com o JSP. Pesquisando, alguns diziam que o melhor era utilizar as JSTL padronizadas, já para alguns casos a maioria dos desenvolvedores recomendavam a utilização das taglibs do próprio Struts... Não encontrando um censo comum, nem uma forma fácil de integrar o Struts com JSP (deixo claro que essa é minha opinião que formei com algumas horas estudando Struts), decidir abandonar os estudos desse framework.

Procurando alternativas optei por me dedicar ao GWT (Googlel Web Tookit), que é um framework para criação de interface web baseado em Ajax. O funcionamento dessa ferramenta, que era de uso interno do Google mas foi disponibilizado como código aberto para quem quiser utilizar, é bem simples. A ideia central é a de gerar código JavaScript através de código Java... Você desenvolve a interface com código Java, mais ou menos parecido com a forma como você desenvolve utilizando Swing, porém você só pode utilizar componentes do GWT. A partir desse código, o compilador do GWT o compila para código JavaScript, gerando assim a interface.

Porém o GWT somente utiliza poucos recursos do Java e, principalmente, ele não suporta recursos que sejam do Java 5 ou mais recentes, ou seja, só suporta até o Java 1.4. Mas isso não chega a ser problema, pois o GWT é uma ferramenta voltada para criação de interfaces gráficas, logo não são necessários muitos recursos a mais do que o próprio GWT disponibiliza. Bom, não são necessários muitos recursos extras, mas algumas vezes são necessários alguns recursos, como por exemplo para se utilizar Hibernate com anotações eu seu projeto. Não vou entrar nesse assunto agora, porém no próximo post pretendo dar uma esclarecida nisso.

Outro detalhe importante sobre o GWT é que, sendo ele somente uma ferramenta para a criação de interfaces gráficas para web baseado em Ajax, todo o código que não esta relacionado à interface deve ficar no que é chamado de Server-side Code, ou seja, a lógica de negócio fica nessa área do projeto. Basicamente o Server-side Code é um servlet que é acessado pela interface como serviço, e é aqui que podemos utilizar todos os recursos do Java.

Não vou me aprofundar sobre esse assunto, porém segue alguns links que falam sobre isso de uma maneira melhor do que eu poderia explicar (e que me ajudaram muito a entender sobre o funcionamento da ferramenta):

http://loogica.wordpress.com/2006/11/30/gwt-voce-entendeu/

http://www.pbjug.org/jugs/documentos/google_web_toolkit


Após essa breve introdução sobre o GWT eu paro por aqui. Quem chegou a meu post aprender sobre GWT, recomendo que leiam os dois artigos dos links acima. Nos próximo posts irei colocar exemplos de utilização do GWT, inclusive de como passar a limitação sobre recursos do Java 5 e mais recentes.