Artigos marcados com projeto

Programas essênciais para um webdesigner/programador web

Publicado por Sergio Novelli em 03/03/2010

Há tempos venho prometendo aos leitores que faria um post com toda a relação dos principais programas que utilizo diariamente em meu trabalho e que considero essenciais para qualquer profissional da área. Demorei a montar esse post exatamente porque quis fazer uma “filtragem” em todos os programas que tenho instalado no computador, separando os que são realmente necessários dos que não são tanto assim… :) .

Os critérios para considerá-los essenciais foram a frequência de utilização, a funcionalidade do software e a quantidade de similares que existe e a qualidade de todos os softwares de cada área. Para ficar mais fácil, vou separar por funcionalidades:

Desenvolvimento web (layouts):

Adobe Photoshop CS4

> Photoshop CS4: Quem trabalha com web com certeza utiliza ou já utilizou o bom e velho photoshop. Esta última versão trouxe grandes novidades na área de editoração de fotos e recursos de animações. Porém, para se montar um layout basta as funcionalidades básicas encontradas em todas as versões e, nesta versão, não houve muitas mudanças. O que posso destacar é a funcionalidade de abrir documentos por abas, a alteração de algumas teclas de atalho e a liberdade criada para navegar pela arte em qualquer modo de visualização.

> Fireworks: Este é um excelente software. Apesar de a Adobe ter feito a versão CS4, ele não será continuado e, provavelmente suas funcionalidades exclusivas serão adicionadas aos poucos nas novas versões do Photoshop. Tem muitos profissionais que preferem ele ao photoshop, mas eu particularmente nem o instalo em minhas estações de trabalho.

> Ilustrator: Esta é uma boa alternativa ao coreldraw para quem desenvolve logotipos, desenhos gráficos e artes impressas, principalmente pela sua ótima compatibilidade com os demais produtos Adobe.

Desenvolvimento web (estruturação/programação):

Adobe Dreamweaver CS4

> Dreamweaver CS4: Este é o mais famoso e mais utilizado software de estruturação de sites/sistemas e programação web. Sua principal vantagem em relação à grande maioria dos concorrentes é poder visualizar em tempo real a estrutura que se está montando (quando utilizando HTML, é claro). Esta última versão trouxe grandes novidades, principalmente para programadores.

> PHPDesigner: Este é um excelente software de edição de código que se assemelha muito ao Dreamweaver. Sua principal vantagem é um gerenciador de projetos/tarefas e também do destaque da linha atual (recursos não existentes no DW-CS4).

> Notepad++: Este é um editor de códigos essencial para quando queremos visualizar o código fonte de um arquivo de forma rápida, legível e fácil de enteder. Sinceramene, há até quem o utilize como editor padrão para programação, uma vez que ele tem suporte para dezenas de linguagens diferentes garantindo coloração e identação do código.

FTP:

> Filezilla: Este é disparado o melhor software para acesso direto via FTP ao servidor, muito útil para a transferência de grande quantidade de arquivos de uma única vez. O software tem atualizações constantes, o que garante segurança na transferência de arquivos e tem inúmeros recursos para serem configurados.

Banco de Dados:

> MySQL Query Browser: Se você precisa de um software para acessar seu banco de dados via acesso remoto, este é o mais indicado. Além de ser gratuito, é indicado pelo site oficial do mysql e tem inúmeros recursos importantes para a hora de criar e manipular seu banco de dados. É muito fácil de configurar e seu acesso remoto é aceito pela maioria dos servidores de banco de dados.

DBDesigner

> DBDesigner: Este é um dos mais utilizados e conceituados softwares para estruturação de banco de dados. Com ele você consegue criar todas as tabelas de sua base e todos os seus relacionamentos, criando uma visão perfeita de como será a estrutura inicial do banco de dados do seu projeto. Além disso, ele oferece recursos muito úteis como a exportação do código SQL e em forma de arquivo, além da possibilidade de sincronização com o banco de dados remoto.

Navegadores:

> Mozzila Firefox: Hoje o navegador da Mozilla está entre os melhores e mais seguros dos existentes. Ele se adapta à todos os padrões web ditados pela W3C, é rápido e tem um infinidade de complementos para serem adicionados à ele que traz ao nosso trabalho diário muito mais acessibilidade e facilidade.

> Google Chrome: Este é um navegador que está se destacando muito por suas características como leveza, rapidez, estabilidade e principalmente por inúmeros recursos em forma de complementos que aumentam ainda mais suas vantagens. Ele também se adapta muito bem aos padrões web e já tem suporte garantido aos caçulas HTML5 e CSS3.

Acessórios úteis:

Lightscreen: Este é um acessório indispensável para a hora de capturar toda ou parte de sua tela, com inúmeras configurações que deixam o programa suprindo todas as suas necessidades.

Edraw Mind Map

Edraw Mind Map: Este software tem uma função muito importante na hora de iniciar um projeto: a de estruturar visualmente todo o projeto de forma a exibir claramente todas as páginas que o site/sistema terá e dar uma base à toda a equipe de trabalho sobre o quê, quando e como fazer cada um dos recursos a serem desenvolvidos no projeto.

Google Picasa: Para quem tem uma infinidade de fotos ou imagens no pc esta é uma excelente alternativa como visualizador padrão de imagens. Ele é capaz de abrir dezenas de tipos de imagens, podendo gerar imagens de pré-visualização até mesmo de arquivos .psd, bastando configurá-lo para isso. Além disso, ele consegue fazer a sincronia perfeita com o picasa online, onde é possível criar dezenas de álbuns de fotos.

Free Download Manager: Esse é um gerenciador de download muito especial, que consegue rastrear os navegadores e a área de transferência do windows para, toda vez que você clicar em um link para baixar qualquer coisa da web, ele entrar em ação e fazer de forma rápida o download para você. Além disso, com ele é possível parar o download e continuar em outro momento, sem precisar reiniciá-lo do zero.

Esses são os prograrmas que uso diariamente e tenho instalado tanto no notebook como no meu pc do trabalho. Recomendo sua utilização, mas é claro que existem outros programas similares a eles que também podem ser utilizados.

E quem quiser, pode indicar outros programas nos comentários. Todas as dicas serão muito bem-vindas.


Você “desenvolve” sistemas?

Publicado por Sergio Novelli em 19/02/2010

Há tempos venho pensado (e passado por) – em situações em que nós, programadores somos cobrados no quesito prazo de entrega de projetos. Inclusive, dias atrás fiz, em minha cabeça, uma breve comparação em como cada uma das empresas que trabalhei e a que trabalho hoje, agem em relação à isto.

Hoje, meio que “sem querer, querendo”, encontrei um post que trouxe à tona exatamente a conclusão que cheguei na comparação que fiz anteriormente. Segue abaixo o post de Paulo Soares:

Eu sei o que é desenvolver?

Acredito que, muitos dos problemas que são enfrentados no dia-a-dia de um profissional de TI (Tecnologia da Informação), certamente, estão relacionados ao não entendimento dos conceitos que cercam a computação. Os gerentes de TI (entenda nossos chefes), talvez por pouca experiência, criam esperanças que as coisas poderiam ser melhores, que os prazos poderiam ser cumpridos, que os projetos poderiam ser entregues no primeiro prazo acordado etc.,  porém não analisam o contexto no qual submetem seus colaboradores.

Primeiro,  você sabe o conceito da palavra “desenvolver”? O melhor entendimento que extraí está no dicionário Michaelis:

de.sen.vol.ver: Adiantar, aumentar, melhorar, aperfeiçoar, fazer progredir

Pois bem, adiantar, aumentar, melhorar, aperfeiçoar, fazer progredir necessita que alguma coisa exista antes. E, geralmente, quando fazemos sistemas, a coisa nasce do zero. Tá bom, não é bem do zero, mas nada que se aproxime do que você realmente precisa existe. A menos que você esteja em uma manutenção evolutiva, as coisas nascem do zero, certo? Por que não usar a conotação bíblica? “No princípio, Deus CRIOU os céus e a terra”. Deixa eu repetir, CRIOU. Do zero… Então, se você parte do zero, você CRIA, e não DESENVOLVE.

Primeiro mito desvendado, você não desenvolve sistemas, você os cria. Eu criei isso.

Perceba que seu problema começou antes mesmo de você saber que estava em um problema. Quando você é nomeado/contratado para fazer parte de uma equipe de desenvolvimento de sistemas, você já está entrando em um barco furado e não tem noção disso. Mas, calma, como dizia Murphy: “Não há nada tão ruim que não possa piorar”.

No seu primeiro dia de trabalho, seu chefe lhe dará uma tarefa:

- Severino (esse é você), vamos iniciar o desenvolvimento do Sistema de Pagamento de Pessoal. A equipe é composta por todos os integrantes da Seção de Desenvolvimento de Sistemas, ou seja, somente você. Tudo bem?

É óóóóóóóbvio que você vai responder:

- Tudo bem, chefe. Estou aqui para desafios!

Detalhe, você nunca ouviu falar naquelas milhões de siglas que tangem a área de Pagamento de Pessoal, sem falar nos cálculos, consolidações, análises etc. Isso envolve pesquisa, seleção, construção, refinamento… Tranquilo, você sabe disso, mas seu chefe não. E não tarda para aparecer a pergunta matadora:

- Em quantos dias você me entrega isso?

Pode ter certeza, nessa hora dá vontade de “bater” num camarada desses. Pois bem, é melhor voltarmos à teoria.

Por que é tão difícil estimar?

O trabalho de criação de sistemas é tão complexo quanto o trabalho de criação de qualquer coisa inédita. Alguém, em sua sã consciência, teria a ousadia de perguntar ao Thomas Edison:

- Ei, Edison, em quantos dias você inventa a lâmpada?

Não há como medir a velocidade de criação de uma pessoa. Esse é um evento espontâneo que varia de pessoa para pessoa. Não existe regra, é o acaso que determina isso.

Por isso é tão difícil para qualquer técnica precisar, com eficiência, o prazo de criação de um sistema. Por mais que você envolva as melhores práticas de gerência de projetos, que você reduza os impactos dos riscos, que você derrube barreiras que geram atrasos, você vai acabar caindo na técnica do CHUTE, para emitir qualquer estimativa.

Segundo mito desvendado, a única técnica para mensurar o tempo de desenvolvimento de um sistema é o chute. Eu acho.

Bem, agora você deve estar achando que fiquei louco e estou falando abobrinha. Vamos ver se isso confere.

Se você é do tipo “Gerente de Projetos”, você deve estar falando: “Eu uso PERT (Análise de três pontos) e, geralmente, acerto meu cronograma”. Primeiro, acerta o cronograma um @#$%*… Você mexe no cronograma todo dia e a data de término é sempre mais longa. Segundo, o PERT usa a análise de três chutes: o prazo quando tudo dá errado, o mais provável e quando tudo dá certo. Daí se aplica um cálculo, alguma medida de dispersão, como: média ponderada, aritimética, desvio-padrão etc., e se chega a um valor que será usado para todas as atividades do projeto. Certo, é um chute calculado, mas não deixa de ser um chute.

O pessoal do XP (Extreme Programming) nem tem o que reclamar, é o chute da equipe. Então, quanto menor a equipe, maior a chance de erro. Esse é um chute bem às escuras mesmo. Mas quanto mais se treina, mais próximo do acerto estamos.

A galera da APF (Análise de Ponto de Função) se baseia numa tabela para analisar a complexidade de uma funcionalidade e daí aplica um percentual para saber quanto tempo o pessoal do desenvolvimento irá precisar. Olha só o absurdo, se você usa uma entidade com 51 atributos a complexidade é a mesma que se você usasse uma entidade com 151 atributos. Detalhe, a medida é usada para qualquer tipo de projeto. É claro que pode-se usar os Pontos de Função Ajustados, mas, isso ainda não deixa de ser um chute.

Bem, chute por chute, quanto mais simples melhor. XP, estou com vocês, viu?

Enfim, vamos aos finalmentes. E eu já inicio com o terceiro e último mito.

Terceiro mito desvendado, hoje é o seu último prazo, amanhã reavaliaremos a situação.

Já me aconteceu, salvo engano, em 100% dos casos, o último prazo não era o último. Sempre há espaço para mais uns dias de trabalho.

Não adianta você passar madrugadas em claro, sair correndo de casa, acelerar tudo que seu carro pode oferecer de potência para chegar mais cedo ao trabalho e adiantar aquele trabalho hiper-atrasado. Não precisa disso. Os prazos não são compromissos escritos em pedra. Eles mudam.

Geralmente, prazos para desenvolvimento de sistemas são negociados. Você é cobrado por prazos incumpríveis simplesmente para satisfazer o ego de alguém (chefes?). Neste caso, é a confiança que está em jogo.

Seu chefe prometeu algo para alguém e você é quem deve cumprir. Mas você não foi consultado disso. Normal, chefes adoram fazer isso. Seu chefe cobra que você entregue no prazo estipulado por ele, simplesmente, para que a confiança nele seja mantida perante os clientes. Mal sabe ele que, se entregar algo no prazo, isso, apesar de soar bem, é ruim para a equipe. Pois vão acreditar que, se você se esforçar um pouco mais, poderá entregar antes. E aí, meu querido, ninguém lembra que você dormiu 4 horas e levou duas multas de pardal para chegar ao trabalho. Você não está no seu limite, você está além.

Eu considero que há duas situações onde o rigor do prazo correto deva ser aplicado:

  1. Quando tem gente morrendo;
  2. Quando tem gente perdendo dinheiro.

Se esse não for o seu caso, dê um sorriso bem grande e relaxe! Sempre há uma luz no fim do túnel.

Bom. Nem preciso dizer que concordo com o que o Paulo disse em seu post, né? E você, o que pensa a respeito? Deixe seu comentário.