Mostrando postagens com marcador diversos. Mostrar todas as postagens
Mostrando postagens com marcador diversos. Mostrar todas as postagens

segunda-feira, 18 de agosto de 2008

Nirvana em orçamento de projetos

Stock Photos Eu particularmente não gosto de usar (nem ler) as palavras sem esclarecer seu real significado. Portanto, significado de Nirvana no Wikipédia.

Com anos fazendo orçamento para projetos de desenvolvimento, aprendi que muito mais do que as questões técnicas e científicas (matemáticamente) desta tarefa, bem como teorias para se alcançar o melhor resultado possível para ambas as partes, acaba prevalecendo, pelo menos sempre foi assim com a maioria dos clientes que eu já tive até hoje, o fator: "o quanto o cliente quer pagar". Raramente podemos chamar esse fator de: "quanto o cliente pode pagar", embora isso seja contraditório em relação às alegações que ele faz.

Bom, mas isso não importa. Se o seu pensamento for o de arrancar o máximo que ele pode pagar, além disso ser um desvio de comportamento e uma indicação clara de amadorismo (na minha opinião e por mais capitalista que eu seja/tenha que ser), o que vou escrever aqui não lhe serve de nada, pois você só objetiva o seu resultado e não o do seu cliente.

Princípio: Bom resultado como objetivo sempre!

Já tive muitas vezes a sensação não ter cobrado um preço justo. Porém jamais saí com a sensação de não ter atendido as expectativas do cliente. Essa sensação sim seria extremamente frustrante para mim. Portanto, o que tenho praticado e quero relatar aqui, tem como princípio básico a satisfação de resultados. Parece óbvio, mas tentando sempre aplicar algo para atingir esse objetivo, até hoje eu ainda não tinha feito nada que atendesse em todos os sentidos: facilidade, praticidade, conveniência, transparência, objetividade e rapidez quanto ao processo de se desenvolver um orçamento e negociá-lo.

A matéria-prima da fórmula.

budget01Na grande maioria das vezes o seu cliente solicita um orçamento, mas por mais que ele não tenha a menor condição e critérios para tal avaliação (se ele as tivesse ele mesmo faria o projeto), ele já sabe o quanto ele quer (ou pode) investir.

Por outro lado, você como profissional absolutamente bem informado e capacitado quanto as possibilidades de resolver a questão para a qual o seu cliente necessita de solução, tende a oferecer justamente o que há de melhor e com base na sua visão de solução, definir o custo do projeto.

Na grande maioria das vezes, e falo por experiência própria, devido aos custos, após apresentar a sua proposta de solução, junto com o orçamento, o cliente vai solicitar a revisão, não por uma crítica, mas sim por ajustes orçamentários.

O que acaba sendo aprovado é justamente a solução reformulada que o orçamento atende. Ou em outras palavras, o melhor que você pode fazer, pelo melhor que o cliente pode pagar.

A fórmula: inverter a matéria-prima.

Isso mesmo! Simplesmente hoje eu pergunto ao cliente qual o orçamento que ele disponibiliza para aquele projeto e desenvolvo a proposta com a melhor mão-de-obra, técnica e tecnologia que aquele orçamento pode cobrir.

O impressionante desta forma de tratar o orçamento de um projeto, é que se você procura selecionar bem as tecnologias com as quais vai trabalhar, busca o melhor domínio possível sobre as mesmas, bem como as melhores e mais atualizadas técnicas de desenvolvimento com estas tecnologias, você apresentará ao seu cliente algo que atende e até mesmo supera as expectativas dele. E para isso, você não precisa se tornar minimalista. Pode manter a análise sobre o que você consideraria ideal (aquela primeira proposta que normalmente seria rejeitada), mas apresenta ao cliente um projeto escalonável, onde o resultado do primeiro investimento/fase do mesmo oferece o resultado que ele necessita no prazo requisitado. Ao mesmo tempo, ele terá em mãos suas sugestões de implementação que podem servir de base para investimentos futuros no mesmo projeto sob o qual você já tem domínio. Há aí uma grande possibilidade de demanda para você, sem contar que com isso você já apresentou comprometimento com os resultados esperados pelo seu cliente.

Requisitos

Claro, é importante ressaltar que, se você ainda não pensou: "Vicente, isso não é uma descoberta!", deve então tomar essa frase como uma afirmação minha. Embora eu não tenha pesquisado absolutamente nada a respeito para ter funcionado como base de raciocício e tendo usado somente minha experiência particular de 12 anos atuando com treinamento, consultoria e desenvolvimento de soluções web-based, é muito provável que exista algum estudo que analise e explique melhor esse tipo de forma de encarar o processo de orçamento e negociação de projetos.

Outro fator, talvez mais importante , que cabe a mim deixar claro, é que existem alguns princípios que tornaram para mim possível aplicar essa forma de tratar o assunto junto ao cliente:

  • Os clientes com os quais tenho aplicado essa forma de negociar o orçamento de um projeto, são clientes que já tiveram a oportunidade de avaliar o meu trabalho de alguma forma anteriormente.
  • O processo de análise (levantamento de requisitos, casos de uso e outros diagramas e documentações) é exatamente o mesmo. Extingue-se apenas o processo de reavaliar o projeto posteriormente. Portanto não encare o que estou colocando aqui como forma de otimizar o seu trabalho de formalização de um orçamento técnico.
  • Deve-se tomar o cuidado de não penalizar o cliente para favorecer a si mesmo. Ou seja, para tornar um projeto escalonável, acaba-se consumindo um esforço e consequentemente tempo, ligeiramente maior do que se considerar aquela etapa como única. Quero dizer, em favorecimento a sua previsão de melhorias futuras ao sistema, pode-se consumir um tempo/esforço de desenvolvimento a mais, para permitir certas implementações futuras, que acabará refletindo num custo para o cliente, na etapa para a qual ele está investindo em uma solução que o atenda já. Deixe isso claro na apresentação da sua proposta de projeto. Ele pode preferir, ao custo de tornar futuras implementações mais caras, melhorar o resultado da primeira etapa. Seja com custos relacionados a treinamento, implantação/homologação, etc. que poderíam ser extendidos, melhorados em recursos, caso eliminado algumas tarefas inerentes a recursos futuros imaginados para o produto em questão.

quarta-feira, 14 de maio de 2008

Utilidades do Subversion SVN

subversion O Subversion, também conhecido simplesmente como SVN, é um recurso que se tornou indispensável no meu trabalho de consultoria e desenvolvimento, assim como na verdade é para qualquer profissional desta área.

O Subversion foi a proposta da Tigris em substituição ao CVS, implementando muitas diferenças que estão bem documentadas com o produto.

Aos que iniciam ou procuram mais informações a respeito, resolvi colocar aqui um pequeno texto relatando a utilidade prática de uso do Subversion:

Introdução:

Numa apresentação mais breve e superficial possível, o Subversion é um sistema de gerenciamento e controle de versão de artefatos dispostos em um repositório. Este repositório compreende uma estrutura gerenciada pelo sistema servidor da solução. Através de ferramentas clientes, o usuário irá interagir com essa estrutura.

O sistema servidor permite designar usuários, para fins de identificar o autor de modificações no repositório e atribuir aos mesmos níveis de acesso.

O workflow de uso do SVN geralmente é o seguinte:

  1. O repositório é criado
  2. Os usuários e seus devidos níveis de acesso são determinados
  3. Algum conteúdo inicial é colocado no repositório para ser gerenciado (initial commit)
  4. Os usuários fazem uma cópia local dos arquivos para fins de consumo ou colaboração no desenvolvimento (checkout)
  5. Os usuário com permissão para modificar o conteúdo efetivam suas alterações locais no repositório (commit). Esse passo pode envolver ainda diversas outras situações como verificar conflito entre o codigo enviado neste momento e alguma modificação realizada no repositório feita por outro usuário, entre o "checkout" e essa tentativa de "commit" das alterações locais.
  6. Os demais usuários verificam modificações no repositório (synchronization) e atualizam suas versões locais (update). Se o usuário modificou algum arquivo, as situações de conflito entre modificações do conteúdo no repositório e conteúdo local do passo anterior podem ocorrer e o usuário terá como resolver as mesmas com instrumentos simples.

Estabelecido o servidor, suas utilidades podem ser apresentadas em basicamente 2 perfis, conforme relato adiante.

Para o desenvolvedor de conteúdo:

É um sistema que permite controlar a versão dos artefatos que fazem parte do repositório (geralmente códigos-fonte). Ao mesmo tempo, permite, de maneira imperativa (forçada) ou passiva (facultativa) documentar as modificações em cada artefato. Essa documentação se dá no momento de enviar para o repositório (commit) um artefato que foi alterado.

Para o consumidor

Ter uma maneira "atômica" de atualizar e acompanhar as modificações no mesmo. "Atômico" refere-se ao fato de que o sistema é capaz de atualizar somente a parte alterada de um arquivo modificado na fonte. Por exemplo, imagine um arquivo de 8MB no repositório. No primeiro momento (checkout) vc baixa os 8MB para estar em sincronismo com o repositório. Nas atualizações / modificações (updates), você vai baixar somente os "bytes" que diferem a sua versão local do arquivo. Se você for uma das pessoas autorizadas a modificar a fonte (repositório) o mesmo acontece na hora de "enviar" as modificações (commits). Você não precisará fazer o upload de 8MB e sim, apenas dos "bytes" que alteraram a versão no repositório.

Links:

  • TortoiseSVN
    Client para interagir com um servidor/repositório SVN, que integra-se ao sistema operacional.
  • VisualSVN
    Ferramenta de administração (criação de repositorios/controle de usuários).
  • Subclipse
    Plugin de integração com Eclipse IDE. Como o FlexBuilder da Adobe baseia-se no Eclipse, o plugin também é funcional nele.

quarta-feira, 16 de abril de 2008

dominios com sufixo .com.br para pessoa fisica

registro.br Acabei de receber a notícia por email. Muito interessante a decisão e certamente vai colaborar para que existam um número ainda maior de sites com conteúdo (bom ou não).
Mas o lado negativo, é que com isso, eu creio que o problema de "espertinhos" tentando lucrar com isso, registrando domínios visando lucro futuro, será também muito maior.
Notícia completa: http://registro.br/anuncios/20080416.html

domingo, 24 de fevereiro de 2008

Teclado Optimus Maximus

optimusmaximuskeyboard Definitivamente eu queria ter US$500 pra gastar com um teclado!

Não seria apenas um "brinquedo" interessante, mas é definitivament produtivo!

quinta-feira, 30 de agosto de 2007

Video Gmail


Para quem ainda não viu, vale a pena. O GMail compilou vários clips que eles receberam com o tema de "Como um email do GMail viaja pelo mundo" e montou este clip final.
Tem até gente fazendo a "dança do siri" é mole?

Veja mais em:
http://mail.google.com/mail/help/intl/pt_BR/gmail_video.html

Abaixo o clip original:

terça-feira, 10 de julho de 2007

Interscriptável


Mais uma palavra para o nosso meio? Pode ser...
Essa palavra surgiu no meio de uma discussão técnica entre o Rafael Neri da BDG e eu quando discutíamos uma questão interessante a respeito de uma funcionalidade peculiar da nova geração do FlashPlayer (9 em diante) a respeito do AVM (Actionscript Virtual Machine) que o compõe.

Pelo fato de termos 3 versões do Actionscript (1, 2 e 3 ou AS1, AS2 e AS3), o AVM é ainda "dividido" em 2 versões. Temos o AVM1 que interpreta o código Actionscript 1 e 2, e o AVM2 que interpreta a mais recente versão, o Actionscript 3.

Como o termo surgiu?
Finalizando o projeto de re-escrita do site promocional da Preview, o OQueSeFazPorAi (http://www.oquesefazporai.com.br . O que está no ar ainda é a versão original escrita em AS2. Publicarei aqui o anúncio da nova versão quando esta estiver no ar.), esse assunto ficou bastante em pauta quanto tivemos a necessidade de carregar um Movie escrito em AS2, no novo Core que desenvolvemos para o site, todo escritp em AS3. Ocorre que na versão anterior do site, todo escrito em AS2, embora o Core fizesse o carregamento do Movie, o descarregamento (unload) era feito pelo próprio Movie carregado. além de operar outras instruções no própio Core.
Dado o fato do FlashPlayer ser constituído pelo AVM1 e AVM2, podemos em um filme AS3 carregar um filme AS2 ou AS1.
Como isso é feito?
O AVM2 possui uma classe interna chamada justamente AVM1Movie sob a qual o filme AS1 ou AS2 carregado é instanciado, permitindo assim um controle básico e portanto muito limitado deste. Essa classe é constituída basicamente pelas propriedades (limitadas) da Classe MovieClip, a qual óbviamente ele extende, limitando-se também a não possuir nenhum método nem tão pouco acesso aos elementos que fazem parte deste Movie AVM1 carregado.

Daí o surgimento do termo INTERSCRIPTÁVEL!

Em nossa discussão técnica, tive que explicar ao Rafael que um dos procedimentos que teríamos que adotar no desenvolvimento da nossa solução, dava-se pelo fato de que o Core que desenvolvemos não era INTERSCRIPTÁVEL com o Movie escrito em AS2.
Portanto, nossa solução sería re-coordenar o controle dos itens antes controlados no Core, por parte do Movie carregado, para que esse controle fosse todo feito por parte do próprio Core, ou re-escrever todo o Movie geralmente escrito em AS2, traduzindo-o para AS3.

Por questões de prazo, a escolha foi por fazer pequenas alterações no Movie AS2, permitindo e transferindo todo o controle de interações para o Core em AS3.

Está aí a explicação para o termo INTERSCRIPTÁVEL!

Se a galera do AURÉLIO, MICHAELIS e outros dicionários precisarem de uma ajuda (à ser melhorada, claro), aí vai:

Interscriptável: Capacidade de um script (relativo a mini-programas escritos em determinadas linguagens. Ex: Actionscript, Javascript, etc) operar cooperativamente, ou ainda em conjunto, com outro script, da mesma linguagem e versão ou não.

quinta-feira, 24 de maio de 2007

Desktop de verdade!

É incrivel o resultado de um trabalho proveniente da união Design e Tecnologia.

Observando o Blog da Andrea Soares, minha amiga e parceira de trabalho, vi um post magnífico a respeito do BumpTop 3D. Trata-se de uma solução interessantíssima de modelo de Desktop para sistemas operacionais. Leia o post dela, e depois visite o site oficial do projeto para mais detalhes.

Houveram muitas criticas nos comentários do YouTube, mas particularmente digo que se isso estivesse disponível eu instalava agora. Veja abaixo o vídeo de demonstração deste protótipo que espero que esteja disponível o mais breve possível.



Ah! Pude ver no YouTube que existem diversos projetos parecidos em andamento e até mesmo alguns já disponíveis...