O pessoal da Software Engineering Podcast acabou de publicar a entrevista de Markus Völter com o consagrado Robert C. Martin, também conhecido como Uncle Bob Martin autor diversos livros como Clean Code e evangelista do movimento Software Craftsmanship. Recomendo que todos ouçam ao podcast (em inglês) na integra, mas gostaria de enfatizar alguns pontos importantes.
Segundo Uncle Bob, pensar arquitetura e design vale muito a pena, porém, ele não gosta nada da idéia de se separar a arquitetura da codificação. Os melhores arquitetos são aqueles que codificam e vivem no “mundo que constroem para os outros”, disse. Se um arquiteto não codifica ele fica desconectado das decisões que toma, porque não é afetado por elas, ele ”não tem que dormir na cama que faz”.
O importante é que arquitetos mantenham seus dedos no teclado, a final, você não pode liderar um time a menos que os conheça e entenda. Você tem que experienciar o que o time está fazendo para saber o que ele realmente precisa.
O código é documentação mais imporante. Todos os outros documentos devem refletir o que o código faz. O código digire todos o resto e não é apenas resultado de outros documentos como sugure o waterfall.
O termo foi criado com a publicação do livro de Pete McBreen em 2002. Fala-se sobre aprender com mestres. Aprenda as habilidades e como tomar decisões, mas você deve aprender com outras pessoas ajudando-as a fazerem seu trabalho.
Uncle Bob sugere como práticas TDD, Integração Contínua e Programação em par, e afirma que bons times trabalham em par na maior parte do tempo, no entanto, afirma que não se deve ser religioso quanto a isso, “você não precisa trabalhar em par 100% do tempo”, diz.
Não basta funcionar, o software deve ser bem escrito e fácil de manter. Foque em agregar valor. Deve haver um parceira com os clientes. Você deve realmente envolver-se com as decisões tomadas e garantir que o que cliente pede realmente vai agregar valor para ele. Não faça simplesmente porque é seu trabalho se você já sabe que não vai dar certo. Comprometa-se com o resultado do seu trabalho.
Aprenda os Shortkeys (atalhos de teclado). Tente fazer o máximo que você puder sem usar o mouse. Um desenvolvedor de software deve estar altamente integrado com seu ambiente.
Utilize uma boa ferramenta de SCM (Source Code Control), o CVS é razoável, o SVN é melhorzinho, mas meu favorito é o Git.
Bug Tracking Systems são importantes, mas use com certo cuidado. Devem ser leves e simples de usar.
Use ferramentas para teste como jUnit (xUnit), rSpec, Cucumber, JBehave e Fit.
Linguagens dinamicas são muito produtivas e se você faz TDD o “perigo” vai embora. Você não precisa mais de um compilador para te dar uma falsa segurança.
A coisa mais importante para um desenvolvedor de software é noção de aprendizado contínuo. Você nunca pode parar de aprender. É como um médico.
Você deve aprender o máximo de linguagens que puder, e deve conseguir escrever código em todas essas linguagens ainda que não seja um especialista em todas elas. Não adianta. Aprenda no mínimo uma linguagem estática, uma dinâmica e uma funcional. Robert diz que todos devem aprender LISP.
Uncle Bob Martin na RailsConf 2009 porFabio Akita no Vimeo
Um dos maiores problemas da sociedade moderna é a dificuldade de locomoção diária, a maioria das pessoas passa horas em seus carros, ou em meios de transporte públicos para irem de lugar a outro. Há alguns anos atrás quando morava na zona norte de São Paulo e trabalha na zona sul, essa era minha realidade. Uma vez que naquela época passar por isso era inevitável procurei formas de fazer com esse tempo pudesse de alguma forma torna-se produtivo, foi então que comecei a ouvir à podcasts.
De acordo com a Wikipedia, Podcasting é uma forma de publicação de arquivos de mídia digital (áudio, vídeo, foto, etc.) pela Internet, através de um feed RSS, que permite aos utilizadores acompanhar a sua atualização. Assim, é possível o acompanhamento e/ou download automático do conteúdo de um podcast.
Neste post apresentarei os podcasts aos quais escuto e os episódios principais para que você ouça. Sugiro que você utilize o iTunes para inscrever-se nos podcasts e sincronizar com seu iPod.
por Vinícius Teles
http://improveit.com.br/podcast
Português
Por AgilCoop
http://agilcoop.incubadora.fapesp.br/portal/agilcast
Português
Por André Faria e Luiz Faias Jr.
http://podcast.bluesoft.com.br
Português em Áudio e Vídeo
http://agiletoolkit.libsyn.com
Inglês
Inglês
http://www.agilepodcast.com
http://www.thoughtworks.com/what-we-say/podcasts.html
Inglês
por Leo Laport, Jono Bacon e Randal Schwartz
Inglês
Podcast da Comunidade JBoss
Inglês
http://asylum.libsyn.com
Por Tor Norbye, Carl Quinn, Dick Wall e Joe Nuxoll
Inglês
http://www.javaposse.com
Inglês
http://www.javaworld.com/podcasts/jtech
Por Glen Smith e Sven Haiges
http://grailspodcast.com
Por Jason Seifer e Gregg Pollack
Inglês
http://railsenvy.com
por Geoffrey Grosenbach
Inglês
http://podcast.rubyonrails.com/
Por Mike Moore
Ingles
http://rubiverse.com
Inglês
http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/
Inglês
http://yayquery.com/
Inglês
http://ajaxian.com/by/category/podcasts
por Cali Lewis
Inglês
http://www.geekbrief.tv
por Pragmatic Bookshelf
Inglês
http://www.pragprog.com/podcasts
por Software Engineering Radio
http://www.se-radio.net
Inglês
por Elegant Code Community
http://elegantcode.com
Inglês
http://code.google.com/p/google-developer-podcast/downloads/list
Inglês
http://herdingcode.com
Inglês
The Dev Show
Inglês
http://5by5.tv/devshow
The Changelog
Inglês
http://thechangelog.com/
http://itc.conversationsnetwork.org
Inglês
por Amber MacArthur e Leo Laport
http://www.twit.tv/natn
por Leo Laporte, Jeff Jarvis, Baratunde Thurston, e John C. Dvorak
http://www.twit.tv/twit
por Leo Laporte, Don McAllister, Paul Kent, and Andy Ihnatko
http://www.twit.tv/mbw
por Leo Laporte, Gina Trapani, Jeff Jarvis e Mary Hodder
http://www.twit.tv/twig
inglês
http://www.sitepoint.com/podcast
por 37 Signals
Inglês
http://37signals.com/podcast
por Max Gehringer
Português
http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm
por Heródoto Barbeiro
Português em Áudio
http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm
http://startuppodcast.wordpress.com
Inglês
por TED Talks
Inglês
http://www.ted.com
Se você quiser incluir algum outro podcast nesta lista, deixe um comentário. Espero que seja Útil!
Aconteceu nos dias 6 e 7 de novembro de 2009 a 3ª edição do evento The Developers Conference realizado pela Global Code. Diferente do ano passado houve apenas uma trilha, porém maior enfoque em palestrantes internacionais.
Em sua palestra “Major Trends in Enterprise Software Development”, Rod Johnson, fundador da SpringSource, apresentou um pouco sobre a sua visão do futuro da linguagem e da plataforma Java e as novas tendências que o mercado de Tecnologia da Informação deverá seguir nos próximos anos. Gostaria de explorar um pouco os tópicos que foram abordados e registrar minhas impressões.
Segundo Rod, o mercado de tecnologia da informação está sofrendo grandes transformações em virtude da computação em nuvem (Cloud Computing) e do fato de o maior custo ter sido movido de hardware para pessoas.
A computação em nuvem não é somente uma modismo imposto por fornecedores de ferramentas como foi SOA
Em meio a essa realidade uma série de suposições tornou-se questionáveis como, por exemplo, a forma com que os dados são armazenados. A maioria esmagadora dos softwares construídos na atualidade utiliza bancos de dados relacionais, porém, sabe-se que estes não famosos por sua habilidade de escalar aplicações. Neste cenário, bancos de dados orientados a documentos ou Document Stores vêm ganhando mais e mais espaço. O Google Big Table, o Hadoop e o Couch DB são exemplos de soluções inovadoras que devem ser consideradas. As aplicações do futuro deverão ser capazes de lidar com novos tipos de bancos de dados.
Google, Amazon, Facebook e LinkedIn utilizam bancos de dados NÃO Relacionais.
A computação em nuvem oferece escalabilidade dinâmica, a cobrança é realizada de acordo o consumo que as aplicações demandam, e a plataforma que suporta a aplicação passa a ser vista com um serviço (PaaS – Plataform as a Service). “A cada dia faz menos sentido para a maior parte das organizações possuírem e manterem seus próprios DataCenters” afirmou Rod, “É como fábricas que já não fabricam sua própria energia elétrica”.
É fato que com a popularização de linguagens dinâmicas como Ruby e Python e em virtude da produtividade de frameworks para desenvolvimento de softwares para a web como Rails e Django muitas pessoas já se perguntaram: ‘A final de contas será que Java está morrendo?’. Muitos também vêm se questionado sobre as intenções da Oracle (que recentemente comprou a Sun) em relação à plataforma.
Penso que quanto a isso, a resposta é muito simples:
As pessoas estão acordando e começando a utilizar as ferramentas certas para resolver os problemas que têm.
Como disse Fred Brooks: ‘Não existe bala de Prata!’, isso é, não uma única solução que resolva todos os problemas. Java ainda faz muito sentido resolver muitos problemas, Ruby faz muito sentido para resolver outros, Erlang para outros, Scala para outros…
Resumindo, Java não está morto, no entanto já não é uma linguagem inovadora, e outras linguagens estão ganhando seu merecido espaço, não se acomode, corrá atrás de entender as motivações por trás dessas novas tendências, e, sobretudo, os princípios por trás delas.
No DevInRio, o Guabanara gravou uma entrevista com Guilherme e Paulo Silveira da Caelum em que esse assunto foi tratado com autoridade. Ouça ao MP3 ou assista o vídeo no Vimeo do Guilherme Chapiewski.
Já em relação a Oracle, Rod, afirmou que a empresa depende de tecnologia Java para atingir o sucesso, não é novidade que muitas soluções da Oracle são altamente dependes da plataforma Java e é obvio que a empresa não vai arruinar com tudo sem mais nem menos.
Para Rod, Java provavelmente será a última linguagem genérica de adoção em massa e no futuro mais e mais linguagens para finalidades específicas ganharão espaço no mercado, e muitas dessas novas linguagens serão executadas na Java Virtual Machine (JVM). Soluções integradas como Rails, Grails e Spring Roo tendem a ganhar espaço em virtude da alta produtividade que proporcionam.
Parabéns a Global Code pela realização do Evento!