segunda-feira, 24 de novembro de 2008

Face à Face com a Interface

Semana passada eu analisando alguns códigos de páginas .JSP e .XHTML, reparei que os códigos estavam se tornando muito complicados de manter, principalmente os .JSP, e também cada vez mais incompatíveis com as versões dos browsers(FF2, FF3, IE7 e agora o Chrome). Códigos desorganizados e feitos "de qualquer jeito", então queria tornar o código das minhas páginas mais organizado, limpo e compatíveis com diversos browsers.

Resolvi estudar Tabless/Css para tornar meu código cada vez mais simples de manter e entender. Além das vantagens das suas páginas carregarem mais rapidamente e melhorando a questão de acessibilidade(que acreditem não é nada fácil).

Percebi também que existem poucos desenvolvedores que se importam com a questão de acessibilidade e código simples para suas páginas. Se tornando um diferencial importante de mercado o conhecimento de Tabless/Css.

Durante a minha intensiva pesquisa e estudo durante o final de semana encontrei algumas páginas que merecem destaque tanto por ensinar Tabless/Css com tutoriais, exemplos e links, quanto pelas artes que foram produzidas com a técnica em suas páginas.

Cobre todas referências conhecidas não só Css, mais XML, SOAP, HTML,
JavaScript, DHTML, entre muitos outros.


Possuí vários exemplos de Css aplicados a listas, posicionamento, Tutoriais,
artigos, div´s, posicionamento, entre outros.


Site interessante onde você pode validar seu código Css de acordo com os
padrões do W3C.


Diversos post´s sobre Css, exemplos, testes feitos em outros browsers. Blog em
constante sempre com novidades, atualizado mais de uma vez por semana.


Muito interessante esse site, para quem quer montar seu site de forma simples
com div´s. Simples e direto com relação a navegabilidade.


Site muito interessante com diversos artigos sobre Css, acessibilidade, usabilidade,
HTML, Javascript. Achei interessante esse artigo Introduction to Writing Copy for the Web,
apresentando dicas básicas para escrever na web.


Blog atualizado quase que diariamente, vários artigos sobre Blog, Css, Css
com Javascript. Cheguei a ver até um webcast How to use Css Sprites. Interessante
e diversificado o conteúdo desse blog.

Mais um site com diversos assuntos interessantes não só sobre Css, mas também
sobre Fonts, Tutoriais, How-to entre outras coisas.

Por último e não menos importante seu conteúdo e voltado para webdesigners em geral. Selecionado
não só por causa do seu conteúdo, mas também pela criatividade do desenvolvedor
e o que com Tabless/Css pode fazer.

Bom não vai ser difícil aprender já que sempre gostei de webdesign e usabilidade,
mas ainda tenho muito que aprender.

Postar um comentário

segunda-feira, 17 de novembro de 2008

Lançado MK vs DC

Finalmente lançado para o mercado o tão esperado game Mortal Kombat vs DC Universe, onde tudo começa com um cataclísma que une os dois mundos e que o conflito é inevitável, que heróis e vilões se unem para defender seu mundo.



Para ver como começa tudo isso, veja o video aqui.

Pelo que tenho visto nos videos divulgados, os super-heróis, como todo super-herói que se prese lógico, não matam seus oponentes, ao contrário dos vilões e dos personagens do Mortal Kombat.

Os fatalities do Coringa[1][2] estão bem seu estilo mesmo, mas deixou muito a desejar no quesito Mortal Kombat, que deveria ter um pouco mais de violência. Os desenvolvedores do jogo deram uma "suavizada" nos fatalities. Deve ser por causa dos apreciadores dos super-heróis que não queriam ver seus heróis decepando seu inimigo, cortando-o ao meio. Mas com certeza seria bem legal ver o Superman utilizando sua visão de calor pra fritar o inimigo ou partí-lo ao meio.

O jogo também tem diversas modalidades de combate como mostrados aqui.

Para adoradores dos antigos Mortal Kombat's, o clássico fatality de Liu Kang do fliperama caindo em cima do seu inimigo, do beijo de Kitana, o beijo da Sonya e o inesquecível fatality de Scorpion ficaram muito legais nessa versão.

Foram removidas features como Babalities, ainda bem, e adicionadas novas features como o Rage que por causa do cataquísma que uniu os mundos cria uma fúria no personagem que ele não tem mais controle sobre o que ele está fazendo querendo apenas bater em quem estiver por perto.

Acho que faltou o Kung Lao, o primeiro vencedor do Mortal Kombat pela Terra, não poderia ter ficado fora dessa batalha. E por parte do DC Universe acho que o Arqueiro Verde deveria participar, já que ele é bom de porrada.

Mas o personagem destaque é o Coringa. Ele está realmente sinistro e mais louco ainda nesse jogo. Veja o trailer dele com destaque para sua risada no final. Sinistro...


E então, de que lado você está?

Postar um comentário

segunda-feira, 10 de novembro de 2008

Como finalizar um grande projeto e se tornar um herói

Acabei de sair do cinema e após assistir 007 Quantum of Solace, filme que recomendo assistir, não baixe vá para o cinema, e quando chego em casa vou para internet e dou de cara com um artigo How To Finish A Big Software Project And Be The Hero, ser um herói, ser o 007 de um projeto, vencer desafios, quebrar barreiras, conquistar, só faltam carros importados, mulheres gostosas e perigosas, cartões de créditos infinitos...

O artigo me chamou atenção, pois ainda estava com adrenalina correndo nas veias das cenas do filme, então não perdi tempo e o li. Achei interessante então o trans-codifiquei para uma identidade conhecida, português, para compartilhar com todos. Enjoy!

Como terminar um grande projeto e se tornar um herói

Todos já passamos por isso! Projetos de softwares “monstros” simplesmente não terminam/morrem. A Microsoft resolve seus próprios problemas. Vista, SQL Server, XP todos eles são grandes projetos que, no final, tinham características massivas de corte, mas que novos lideres foram alocados para salvar o dia e lançar o produto! No fim de cada dia, se você está constantemente desenvolvendo, desenvolvendo e nunca lançando nada, você está arruinado.


Como pegar um projeto de software “fora d´água” e se tornar um heróico desenvolvedor de software? Vamos dizer como...

Primeiro, um pequeno histórico sobre inicio de projetos fracassados. O tão sonhado projeto de software é desenvolvido para resolver problemas complexos. Ótimo, isso é tudo sobre o software! Mas coisas ruins começam a acontecer no primeiro dia! Como? Bem, os gerentes e executivos decidem que eles irão planejar cada detalhe projeto minuciosamente. Eles então contratam um gerente de projetos para gerenciar todos os desenvolvedores que começam a desenvolver cada pedaço de software. Umas semanas antes do lançamento, os gerentes de projetos tentam e combinam tudo, e tudo está correto tudo bem? Errado... um Desastre! O projeto está atrasado! Dias se passaram, semanas, meses, anos! Qual foi o alerta que aconteceu aqui? O que temos que fazer?

É como construir um prédio

Você já viu a construção de um prédio? Cada um com seus pequenos silos e constroem suas próprias coisas? Não! Como são os prédios arranha-céus? Primeiro a criação, depois coloca os andares, as colunas dos elevadores, depois piso após piso, e então o interior, etc. Você poderia imaginar o que poderia acontecer se cada pedaço fosse feito em diferentes lugares, e então depois tudo fosse largado no local da construção para ser montado? Mesmo se você tivesse o melhor plano de montagem já feito, você poderia ter problemas! Coisas que não se adequam e poderiam ter que ser refeitas, arquitetos iriam mudar de idéia, pedaços poderiam faltar, e o prédio poderia parece com um “monte de palitinhos juntos”.

Seja um desenvolvedor heróico, e termine esse projeto

Como você se sente em relação ao seu projeto como um desastre esperando pra acontecer? É realmente um desastre? Você está pronto para resolver um projeto desses? Então vamos lá...

1. Controle de versão de código

Você tem um sistema de controle de versão de código? Se você não tiver, esse é seu maior problema! Sem um controle de versão, bem que você poderia ir jogar roleta Russa. Em seu código você não poderá dar rollbacks em alterações, backups de código fonte, histórico, e é quase impossível de configurar propriedades de uma integração continua!

2. Integração contínua

Você tem um servidor de integração contínua configurado? Integração contínua automaticamente irá fazer o build do seu projeto, e apresentar os resultados dessa build. Você pode adicionar testes unitários, padrões de testes, etc. Mas deixá-lo simples é o melhor caminho!

3. Sistema de Bug Tracking

Sem um sistema de bug tracking não tem formas de como você saber em que ponto está a qualidade do seu software facilmente. A qualquer momento que quisesse ver quais features estão sendo desenvolvidas, testas, aprovadas, com problemas, etc. Se você está contando em um “Excel List” ou escrevendo em um bloco de notas, invista dinheiro em um sistema de bug tracking o mais cedo possível.

4. Sistema de Patching

Eu não vou entrar em detalhes sobre instalação aqui, mas você precisa de um sistema de patching. Você não quer criar vários deploys da sua aplicação para os testadores.

5. Desabilite funcionalidades não testadas

Desative as funcionalidades que não foram completamente testadas e aprovadas por seus usuários. Se seu projeto está com problemas, você tem milhares de funcionalidades implementadas até 80%, e você provavelmente pensará que estão em 90% - 95%, mas não estão.

6. Liste suas principais funcionalidades

Faça uma lista de todas as funcionalidades que estão envolvidas no projeto. Comece por de maior prioridade. Isso é o passo chave para começar a conhecer seu projeto. Você irá escolher suas batalhas aqui, pequenas batalhas, vitórias, ao invés de lutar em uma batalha sem fim com milhares de funcionalidades.

7. Liste 20% das principais funcionalidades

Ok! Então você tem uma lista de todas as suas funcionalidades, agora pegue 20% delas e faça outra lista. Essa são as funcionalidades que tem que ser implementadas para uma versão de pré-realease do seu software.

8. Detalhe 20% das funcionalidades listadas

Para 20% das funcionalidades listadas, faça outra lista detalhada de cada funcionalidade que precisam ser implementadas na ordem em que esses 20% dos itens sejam completados. A ordem dessas funcionalidades por importância. Eu gosto de escolher as mais complexas primeiro e depois as mais fáceis. Ficando mais fácil saber se você está no caminho certo, terminando as funcionalidades mais fáceis primeiro, você realmente não tem uma indicação, uma precisão de quanto tempo vai levar.

9. Planeje a semana

Cuidadosamente descubra quais dessas funcionalidades podem ser implementadas nas próximas semanas. Aloque cada funcionalidade para os desenvolvedores na equipe. Quando você alocá-los, tente e mantenha as funcionalidades juntas. Tenha certeza que cada um está comitando seus códigos regularmente. Quando eles comitarem, caso quebre a build, eles tem que corrigir a build imediatamente!

10. Crie branch

Usando o sistema de controle de versão que você escolheu, crie um branch. Seu objetivo aqui é criar um branch, nomeá-lo como versão de testes, e então entregar um patch no próximo passo. Quando você começa trabalhando nos itens para aquela semana, enquanto seus Testers testam.

11. Faça builds para os Testers testarem

Coloque uma “build master” o mais rápido possível. Um patch de uma build para sua equipe de garantia de qualidade de software.

12. Testers “livres”

Esperamos que você tenha uma equipe de garantia de qualidade, se você não começar com pelo menos uma pessoa e pegá-lo para configurar com um sistema de bug tracking. Obtenha um patch mais cedo possível, e deixe-o testando! De qualquer forma, se você pode incluir cliente ou usuários finais em sua equipe de garantia de qualidade, vá em frente! Tão cedo possível seus Testers encontre bugs, questões sobre implementações das features, etc. Tenha certeza que eles os reportem para os desenvolvedores! Se você tem um bom sistema bug tracking, o sistema deveria automaticamente enviar email para os desenvolvedores então seus Testers dando feedback ou mudanças de status dos bugs.

13. Desenvolvedores de software trabalham no “trunk”

Enquanto seus Testers testam, seus desenvolvedores continuam trabalhando nos itens nas próximas semanas. Com os bugs aumentando, eles voltam pro branch, resolve os problemas, e voltam para o desenvolvimento “Trunk”.

14. Aprove os patch

Seus Testers completaram os testes? Tudo parece bem? MARAVILHA!!! Você apenas completou sua primeira coleção de features que agora estão prontos para serem instalados! Tecnicamente, se você tem seguido os procedimentos descritos acima, um cliente ou testador poderia ser capaz de instalar este software, pegue o patch e use-o.

15. Continue o passo 9 ao passo 14.

Continue seus esforços até você ter os 20% feitos, esperamos que isto não esteja não longe quanto você pensa!

Seu objetivo é focar em pequenas features, terminá-los, e enviá-los para os Testers. Este é uma mudança enorme para tentar completar os 100% de seu projeto e corrigir seus bugs.

Sua equipe estará extremamente motivada para entregar software funcional toda semana! Eles

produzirão mais, e durante o projeto ganharão um dinamismo inacreditável.

Enquanto os Testers procuram bugs, seus desenvolvedores os consertam o mais rápido possível por que o código que eles escreveram está fresco em suas mentes! Se features precisam ser ajustadas e mudadas, façam o mais cedo possível e mudanças com muito mais cuidado!

Seu cliente começará a ver os resultados! Eles fornecerão mais recursos, ferramentas melhores e mais respeito! E terá pessoas mais felizes eu suas mãos!

É só isso que tenho que fazer? Depende em como é o ciclo de vida do seu desenvolvimento. Se você não tem nada sobre configuração, você passará por momentos difíceis, mas se você foca e executa rapidamente, você não deveria ter problemas com configuração num ambiente ideal eficiente.

Aproveite essas dicas e seja um “Desenvolvedor Heróico”!

Postar um comentário