New Post

Rss

Showing posts with label Parte. Show all posts
Showing posts with label Parte. Show all posts
Tuesday, July 3, 2012
no image

Dicas para o desenvolvimento de um software funcional – Parte IV

O quarto e último artigo sobre dicas para desenvolver um software funcional abrange alguns conceitos ligeiramente mais avançados. Após as doze dicas abordadas nos três primeiros artigos, este último envolve aspectos relacionados ao aperfeiçoamento das funcionalidades de um sistema. Agradeço novamente a todos os leitores que acompanharam os artigos, e espero que de alguma forma essas dicas tenham agregado um pouco mais de conhecimento.

Normalização de dados

Na maioria dos cursos relacionados a desenvolvimento de sistemas, é comum encontrar uma disciplina que mencione a Normalização de Dados, fundamental para a formação de analistas e programadores. Este assunto sugere uma série de procedimentos aplicados ao levantamento de requisitos para garantir a boa modelagem de um banco de dados. Essa modelagem será responsável pela integridade, confiabilidade e desempenho das operações realizadas nas tabelas. Alguns dos pontos mais importantes abordados pela normalização de dados é a utilização imprescindível de chaves primárias, chaves estrangeiras, criação de tabelas para relacionamentos muitos-para-muitos (N:N) e criação de tabelas para campos multivalorados, como e-mails e telefones. Além de ser uma prática essencial para o projeto de um sistema, a Normalização de Dados também garante a organização dos relacionamentos entre as tabelas e facilita futuras manutenções na estrutura.

Os requisitos de um sistema devem passar basicamente por algumas formas normais da Normalização de Dados, que consistem em eliminar campos repetitivos entre tabelas, impedir valores redundantes e relacionar todas as tabelas por meio de chaves estrangeiras.

Consultas compostas

A maioria dos sistemas atuais possuem uma padronização de consultas de dados, normalmente pelos campos mais comuns da tabela. Por exemplo, em um cadastro de clientes, a consulta pode ser realizada somente por nome, cidade ou CPF. No entanto, há situações onde o usuário pode precisar consultar clientes por endereço, telefone, estado, profissão ou estado civil. Basta então adicionar estes campos às opções de consulta, correto? Bem, é uma alternativa, mas imagine que o usuário também possa querer pesquisar os clientes que moram no estado de São Paulo, são do sexo masculino e trabalhem como motorista. Neste caso, a solução é criar uma consulta composta, que consiste em uma busca por vários campos ao mesmo tempo. Uma ideia para suprir essa necessidade seria utilizar os mesmos campos de cadastro para consultar os dados. Dessa forma, o usuário pode preencher quaisquer campos por qual deseja consultar, e ao clicar no botão de pesquisa, o sistema verifica os campos preenchidos e concatena uma SQL internamente para enviar ao banco de dados. É uma funcionalidade bem interessante, mas caso for utilizá-la, atente-se às cláusulas “where” e “and“, e confira se a busca corresponde ao que foi digitado pelo usuário.

Integração com serviços web

Com o advento da internet e de recursos online, tornou-se comum a integração de sistemas desktop com serviços web para facilitar ou agilizar operações rotineiras. Um exemplo bem prático é a validação de arquivos de Nota Fiscal Eletrônica. Nos primórdios da sua utilização, os usuários geravam um arquivo XML pelo sistema, acessavam outro aplicativo para envio de arquivos, validavam o arquivo e em seguida imprimiam a DANFE. Todo este processo era considerado burocrático e criou uma resistência dos usuários. A integração dos sistemas desktop com os web services possibilitou que este procedimento fosse realizado diretamente pela aplicação, sem a intervenção do usuário para manipular os arquivos XML. Além deste exemplo, outros serviços web também podem ser agregados à aplicação, como consulta de endereços por CEP, mapas de localização (Google Maps), feed de notícias e outros tipos de informações online. Os desenvolvedores podem ainda disponibilizar um módulo do sistema na web interligado com o sistema desktop, permitindo, por exemplo, que um usuário tenha acesso às informações pela internet, sem necessariamente usar o sistema desktop.

Cuidado com o que o seu cliente pede

Há muito que ser abordado neste último item, por tratar-se de uma questão mais voltada para análise do que desenvolvimento. Normalmente, os usuários que operam o sistema no dia-a-dia sentem a falta de um determinado campo em uma tela, um botão para uma nova funcionalidade ou atalhos para agilizar as operações. É muito comum ouvirmos frases como:

“Há possibilidade de colocar um ‘botãozinho’ aqui?”
“Eu precisava de um campo aqui para digitar tal informação…”

É claro, bons analistas e desenvolvedores devem prestar o máximo de suporte, visando suprir qualquer necessidade do cliente. Mas há casos onde é preciso rejeitar a sugestão do cliente para garantir a integridade e simplicidade do software. Quando o cliente pede um novo campo na tela, deve-se fazer um estudo da real utilidade da inclusão deste campo, e se este também será útil para outros clientes que operam o sistema. Há situações onde o campo já existe, mas não é de conhecimento do cliente. Neste ponto vale ressaltar a importância da apresentação e de treinamentos do sistema, além da capacitação de equipe de suporte em identificar esse tipo de situação. Uma simples orientação sobre a tela pode evitar que a equipe de desenvolvimento adicione uma nova funcionalidade sem fundamento. Além disso, adicionar um novo campo, botão ou funcionalidade no sistema pode comprometer o visual, trazer inconsistências no cadastro ou causar redundância de informações. Analisar detalhadamente as sugestões de clientes sempre será uma prática essencial para o desenvolvimento de um sistema.

Obrigado novamente pela atenção, leitores!

Desenvolvedor de sistemas há 6 anos em linguagens Delphi, C# e PHP. Bacharel em Sistemas de Informação, colunista sobre tecnologia e entusiasta em Desenvolvimento Ágil. Atualmente trabalha com processamento de dados e desenvolvimento de sistemas voltados para gestão administrativa.

Veja perfil e 8 post(s)

Thursday, June 7, 2012
no image

Dicas para o desenvolvimento de um software funcional – Parte III

Este é o terceiro artigo sobre algumas dicas para o desenvolvimento de um bom software. Aproveito a oportunidade para agradecer a todos que leram, comentaram e compartilharam o primeiro e o segundo artigo sobre este assunto. Espero que as dicas neste artigo tragam um pouco mais de conhecimento aos leitores, e mais uma vez, quero que sintam-se à vontade para expressar qualquer opinião sobre este texto.

Padronização de código

Este item é bastante importante quando o projeto é desenvolvido por mais de uma pessoa, ou melhor, uma equipe de desenvolvimento. Definir uma padronização do código auxilia na legibilidade e no entendimento do que está sendo executado na aplicação. Identar o código nos blocos de condição “if-else” e nos laços de repetição são uma das práticas que ajudam os desenvolvedores a identificar facilmente a execução de um método. Identação significa “estruturar” as linhas do código em tabulações de acordo com o nível de execução.

Quando há uma grande quantidade de aninhamento de blocos no código-fonte, a identação se torna ainda mais importante para associar o início e o fim de cada bloco aninhado. Algumas ferramentas de desenvolvimento, como o NetBeans e o Visual Studio, possuem o recurso de destacar o aninhamento quando o cursor do mouse é posicionado na chave que abre ou fecha o bloco. Desenvolvedores em Delphi também podem adquirir essa funcionalidade com o addon gratuito cnWizards.

As variáveis, classes, métodos e funções também devem possuir nomes sugestivos de acordo com o seu objetivo. Portanto, uma variável com o nome “SomaTotalPedidos” é bem mais fácil de ser identificada do que uma variável chamada “vSTotPed”. Mesmo que o nome seja ligeiramente maior, o código fica mais legível quando se trabalha com esse tipo de nomenclatura.

Tratamento de exceções

Por mais que o desenvolvedor faça testes na aplicação antes de publicá-la, é natural que alguns erros ainda possam ocorrer inesperadamente para o usuário. Estes erros são decorrentes de problemas de semântica, gravação de dados inconsistentes, falhas de acesso à memória ou até mesmo eventos inesperados do sistema operacional. No ambiente de programação, os erros são conhecidos tecnicamente como “exceções”. Uma boa prática de programação exige que exista um tratamento de exceções em todos os pontos mais sensíveis do código. Inserções e atualizações no banco de dados são exemplos de operações que possivelmente podem retornar algum erro para o usuário.

A recomendação é envolver este código em um bloco de tratamento de exceção e executar uma função de rollback (desfazer as alterações no banco de dados) caso algum erro seja encontrado. Ao utilizar tratamento de exceções, também é possível criar mensagens mais transparentes para reportar a exceção ao usuário. Dessa forma, faz mais sentido exibir a mensagem “Ocorreu um erro. Tente novamente.” ao invés de “An error occurred. Access violation at address 004068EC“. Estes tipos de mensagens em inglês técnico geralmente são desconhecidas para o usuário e não trazem nenhum tipo de informação para auxiliá-lo.

Atualização do sistema

A cada atualização do sistema, normalmente é necessário substituir o executável no computador do cliente, rodar scripts SQL e alterar alguns parâmetros de configuração. Sendo assim, é preciso ir até o cliente e fazer todo o processo manualmente no computador local. Para evitar a viagem, uma alternativa é realizar a atualização remotamente através de softwares como o TeamViewer, LogMeIn ou VNC. O problema surge quando há dezenas ou até centenas de computadores para serem atualizados. Se a atualização for feita em um computador por vez, pode demorar dias para terminar a atualização em todos as máquinas.

Portanto, ao invés de realizar a atualização manualmente, crie um módulo exclusivo para automatizar este processo. A atualização automática está presente na maioria dos softwares atuais, como navegadores e antivírus. O objetivo é permitir que o próprio sistema verifique novas versões, baixe o arquivo de atualização e realize todo o processo automaticamente, sem a intervenção do usuário. Este tipo de módulo não é simples de ser desenvolvido, mas é plenamente funcional e permite atualizar vários computador simultaneamente.

Programação Orientada a Objetos

No mundo da programação, a maioria dos métodos e componentes são modelados em classes para facilitar a reutilização de código e a manipulação de objetos. Trabalhar com classes e objetos pode ser relativamente complexo, mas sem dúvida garante um maior controle de tudo o que acontece dentro da aplicação. Através da Programação Orientada a Objetos (POO), é possível reaproveitar várias linhas de código por meio de técnicas como herança e polimorfismo. Além disso, definir a visibilidade dos atributos de uma classe e criar métodos para manipulação de valores permitem que a estrutura interna da aplicação não seja exposta a nível de usuário.

Utilizar POO no desenvolvimento de um sistema também facilita a produção de regras de negócio, abstração de dados e a integração com padrões de projeto.

Durante a fase de projeto, a Programação Orientada a Objetos é amplamente praticada por projetistas e analistas de sistemas através da linguagem UML para modelagem de dados. O Diagrama de Classes, por exemplo, fornece uma grande quantidade de informações detalhadas para simplificar a modelagem das classes do projeto e das tabelas do banco de dados. Em conclusão, a utilização da POO na modelagem evita que o sistema sofra constantes alterações e adaptações durante o andamento do projeto, reduzindo o tempo de desenvolvimento e minimizando os erros de implementação.

Muito obrigado mais uma vez pela leitura. Um abraço a todos!

Desenvolvedor de sistemas há 6 anos em linguagens Delphi, C# e PHP. Bacharel em Sistemas de Informação, colunista sobre tecnologia e entusiasta em Desenvolvimento Ágil. Atualmente trabalha com processamento de dados e desenvolvimento de sistemas voltados para gestão administrativa.

Veja perfil e 7 post(s)

Thursday, May 24, 2012
no image

Dicas para o desenvolvimento de um software funcional – Parte II

Em continuidade ao artigo anterior, esta segunda parte abrange mais algumas boas práticas para o desenvolvimento de um sistema. Espero que tais práticas sejam úteis e ofereçam mais algum conhecimento aos leitores. Sintam-se à vontade para postar comentários ou críticas sobre o artigo!

Exportação de relatórios

Criar relatórios bem elaborados é fundamental, mas é importante que exista opções para exportá-lo em outros formatos, caso o usuário queira salvá-lo no computador ou enviá-lo por e-mail. O formato PDF é um dos mais utilizados entre as opções de exportação, principalmente por ser um tipo de arquivo com tamanho pequeno e não permitir modificações após ser criado. A maioria dos componentes atuais para elaboração de relatórios já possuem métodos que permitem a exportação para os formatos mais comuns, mas caso esta opção não exista, basta utilizar o software CutePDF Writer, que adiciona uma impressora virtual no computador para criar arquivos PDF a partir da impressão de qualquer documento.

Exportar dados de uma tabela ou de uma grade de registros também pode ser de grande utilidade para o usuário, como uma tabela de preços em formato XLS (Excel) ou a ficha completa de um cliente em formato DOC (Microsoft Word). Esse tipo de prática garante uma maior versatilidade do sistema por meio da integração com aplicações externas comumente utilizadas pelo usuário.

Teclas de Atalho

Quando um menu é acessado com bastante frequência, pode ser interessante associar teclas de atalho para acessá-lo com mais agilidade. Quem utiliza o Microsoft Windows já deve conhecer algumas combinações de teclas disponíveis para abrir as janelas mais comuns do sistema, como o “Windows + E” para abrir o Windows Explorer e o “Windows + F” que abre a janela para pesquisa de arquivos. O mesmo pode ser adaptado a um sistema, por exemplo, para abrir a tela de cadastro de clientes e a tela de consulta de vendas. As teclas de atalho também podem ser atribuídas a determinados eventos do sistema, como recalcular a soma de um valor ou preencher um campo automaticamente. Usuários mais experientes geralmente preferem utilizar teclas de atalho ao invés de acessar as funções do sistema utilizando o mouse, principalmente por agilizar as operações rotineiras. Porém, atribuir teclas de atalho em todos os menus e sub-menus no sistema é desnecessário, além de confundir a memória do usuário. Procure atribuí-las somente nas principais funções do sistema e utilizar combinações de teclas simples para facilitar a memorização.

Utilitários

Quanto mais recursos úteis o sistema possuir, mais ele atenderá as necessidades eventuais do usuário. A ideia é incluir calendário, calculadora, campo de anotações e telas informativas dentro do sistema, para evitar que o usuário tenha que instalar ou recorrer a outros aplicativos com essas utilidades. Uma boa prática é associar teclas de atalho globais à essas funcionalidades, como o F6 para Calculadora e F7 para Calendário, por exemplo.

Outra utilidade importante é permitir que o usuário configure o sistema conforme o seu perfil. O sistema pode possuir uma tela de configuração e armazenar as preferências do usuário em um arquivo do tipo “INI”. Todas as vezes que o sistema for inicializado, as preferências contidas neste arquivo são carregadas e aplicadas ao sistema. O arquivo de configuração pode conter o diretório do banco de dados, ordenação padrão dos registros de uma tabela, agendamento de backup e outras configurações internas do sistema. Este arquivo se torna ainda mais útil quando existe mais de um usuário utilizando o sistema e cada um possui preferências diferentes. Assim, não é preciso criar uma versão exclusiva para cada usuário, basta apenas guardar as configurações em um arquivo INI.

Threads e telas de espera

Algumas operações do sistema podem demorar um certo tempo para serem processadas, principalmente instruções SQL complexas que envolvam cálculos ou consultas em tabelas com vários registros. Quando isso ocorre, normalmente o sistema “congela” ou pára de responder durante o processamento até que a operação seja finalizada. Porém, o usuário pode pensar que a aplicação parou de funcionar e forçar o encerramento do processo, comprometendo a instrução em execução.

Para evitar este tipo de transtorno, é conveniente criar telas de espera para informar o usuário de que um processamento está em execução. Essa tela fica ainda mais intuitiva quando há alguma imagem animada (GIF) ou uma barra de progresso indicando o processamento. Entretanto, como a tela de espera e a instrução SQL compartilham o mesmo processo na memória, é provável que a aplicação fique travada da mesma forma, sem resposta. A solução é utilizar unidades chamadas Threads, capazes de criar fluxos paralelos ao processo principal para executar uma operação em segundo plano. Basta então exibir uma tela de espera e transferir a execução da instrução SQL dentro de uma Thread para que o sistema não se torne instável.

A verificação automática de ortografia no Microsoft Word é um exemplo de Thread. Repare que o programa não trava enquanto a verificação é realizada a cada palavra digitada. No Microsoft Outlook, observe também que é possível utilizar normalmente o software ao mesmo tempo que novos e-mails são baixados na caixa de entrada. Portanto, Threads não servem apenas para desenvolver telas de espera, mas sempre quando for necessário executar instruções em paralelo sem afetar o desempenho do sistema.

Em breve segue o terceiro artigo sobre este tema. Muito obrigado pela leitura. Até a próxima!

Publicado originalmente em O Núcleo

Desenvolvedor de sistemas há 6 anos em linguagens Delphi, C# e PHP. Bacharel em Sistemas de Informação, colunista sobre tecnologia e entusiasta em Desenvolvimento Ágil. Atualmente trabalha com processamento de dados e desenvolvimento de sistemas voltados para gestão administrativa.

Veja perfil e 6 post(s)

Monday, May 21, 2012
no image

Dicas para o desenvolvimento de um software funcional – Parte I

Embora a internet esteja repleta de tutoriais e dicas sobre desenvolvimento, sempre surge a dúvida de como um sistema deve ser devidamente desenvolvido dentro de padrões. Na verdade, não há uma regra geral ou um processo único para o desenvolvimento de um sistema, mas existem boas práticas que, quando adotadas, podem trazer grandes vantagens em um projeto, tanto para o cliente quanto para o próprio desenvolvedor. Em muitas empresas de software, tais práticas são consideradas como uma metodologia de desenvolvimento, principalmente por facilitar a manutenção e atualização do software, além de garantir uma personalidade única para o sistema. Este é o primeiro de três artigos sobre este assunto, onde o objetivo é transmitir um base sólida sobre alguns pontos importantes para o desenvolvimento de um sistema, envolvendo a implementação do código e o visual da aplicação.

Facilidade de uso

Colocar vários botões e informações em excesso em uma janela pode comprometer a usabilidade da aplicação. Simplicidade e objetividade devem estar casados com a funcionalidade do sistema para proporcionar um maior “conforto” ao usuário. Procure simplificar o visual das janelas, adicionando somente os componentes necessários que o usuário irá utilizar. Estruture a janela de forma que os campos fiquem em uma sequência objetiva, agrupados por assunto ou categoria. Em um cadastro de clientes, por exemplo, divida os campos por seções, como dados pessoais, dados profissionais, contato e informações adicionais. Assim a localização de informações fica bem mais fácil e evita que o usuário fique confuso em meio a tantos componentes. Procure também organizar a ordem de tabulação dos campos, para que a digitação de dados se torne mais rápida através do TAB ou ENTER para avançar o cursor entre os campos.

A questão do visual das janelas deve ser discutida em fase de planejamento do projeto durante a análise e levantamento de requisitos. Para garantir que o visual fique conforme a expectativa do usuário, os projetistas utilizam uma técnica conhecida como Prototipação, que consiste em uma prévia da tela desenhada em um documento. Este desenho é apresentado ao cliente para avaliação, e após a aprovação ela finalmente passa a ser desenvolvida.

Splash Screen

Durante o desenvolvimento de um software, é natural que haja a necessidade de executar uma série de instruções e validações durante a inicialização do sistema, como verificar o caminho do banco de dados, criar backups, carregar módulos e abrir tabelas. Essas instruções podem atrasar a inicialização e a exibição do sistema para o usuário. Consequentemente, o usuário pode pensar que o sistema não foi aberto e tentar abri-lo novamente, criando duas instâncias iguais do sistema na memória. Para evitar este problema, desenvolvedores criam telas de inicialização, também conhecidas como Splash Screen. Essa tela geralmente contém o nome do software e uma barra de progresso indicando o andamento da inicialização enquanto todas as instruções necessárias são executadas em segundo plano.

Backup

Sem dúvidas, este item é indispensável! Manter cópias do banco de dados garante uma maior confiabilidade no sistema quando for necessário recuperar informações. Porém, de nada adianta criar backups no próprio computador do cliente já que existe a possibilidade do disco rígido local ser danificado. Neste caso, o banco de dados e todos os seus backups serão perdidos, a menos que exista uma cópia em outro computador. Portanto, procure disponibilizar no sistema a opção para criar backups em locais remotos, como discos externos ou em outro computador na rede local. Outra opção bastante segura é salvar o backup em um diretório virtual na internet, popularmente conhecido como “nuvem”. Mesmo que aconteça uma falha geral na rede e nos dispositivos móveis do cliente, o backup estará armazenado na internet e poderá ser recuperado através de um simples download.

Embora este recurso esteja disponível, é provável que o usuário esqueça de salvar backups do banco de dados periodicamente. A solução é criar caixas de diálogo para avisá-lo do backup ou realizar a cópia silenciosamente, sem a intervenção do usuário. Um bom exemplo disso é configurar o sistema para salvar o backup em um diretório FTP todas as vezes que o sistema for finalizado ao final do dia.

Visual da aplicação

Este item não é obrigatório, mas com certeza é um diferencial importante em uma aplicação. Um visual agradável, com letras nítidas e cores leves traz uma maior comodidade para o usuário. A aplicação fica ainda mais rica quando dispõe a opção de personalização do visual, como aplicação de cores e temas. Atualmente é comum encontrar componentes na web com a finalidade de aperfeiçoar o visual de uma aplicação. Por exemplo, a interface Ribbon, presente nas versões 2007 e 2010 do pacote Microsoft Office, é uma das opções para modernizar a tela principal do sistema. O Ribbon pode ser utilizado no Visual Studio com o componente Elegant UI ou no Delphi com o pacote TMS Component Pack.

Procure também utilizar imagens bem definidas em menus e botões, de preferência no formato PNG. Na internet há dezenas de sites com pacotes de ícones e imagens para serem utilizadas em aplicações desktop e páginas web, como o IconArchive. Utilize imagens sugestivas de acordo com a função e procure padronizá-las nas telas em comum. Por exemplo, utilize a mesma imagem para os botões de relatórios e a mesma imagem distinta para os botões de Salvar, Alterar e Excluir. Essa prática permite que o usuário “associe” a imagem à funcionalidade do botão, minimizando a complexidade do sistema.

Em breve postarei o segundo artigo sobre este tema! Um abraço!

Publicado originalmente em O Núcleo

Desenvolvedor de sistemas há 6 anos em linguagens Delphi, C# e PHP. Bacharel em Sistemas de Informação, colunista sobre tecnologia e entusiasta em Desenvolvimento Ágil. Atualmente trabalha com processamento de dados e desenvolvimento de sistemas voltados para gestão administrativa.

Veja perfil e 5 post(s)

Wednesday, May 16, 2012
no image

Será que devo usar o Facebook como parte da estratégia digital?

Essa é uma das perguntas com bastante presença em salas de reuniões na hora de conversar sobre o que o cliente espera de uma estratégia digital e de como ele considera viável para seu mercado essa mesma estratégia. Afinal, ninguém melhor do que o próprio cliente para compreender o seu mercado.

Isso não quer dizer que o cliente irá guiar o projeto por completo, mas quer dizer que ele tem um valor extremo no processo de guia da compreensão maior do mercado para um profissional de marketing digital. Vale lembrar que se ele soubesse o que fazer nesse ambiente, ele não contrataria um profissional, portanto, é bom ressaltar que o profissional contratado passa a ter papel também decisivo no processo de desenvolvimento da marca no ambiente digital.

Voltando ao ponto principal, o Facebook. A resposta para a pergunta que deu título a esse post é: SIM!

O Facebook, apesar de ter atingido recentemente o número de 900 milhões de usuários, é uma rede em expansão. Crescendo aceleradamente e, por mais que alguns profissionais reclamem ou discordem, existem regras rígidas que estão mantendo o Facebook mais Clean - organizado ao máximo possível – e isso é ótimo para os negócios.

Mas não se engane, 900 milhões não quer dizer que realmente grande parte do seu público-alvo está por lá. Mas quer dizer que as possibilidades são imensas.

Nem só de Fãs vive uma FanPage…

Uma boa estratégia de Social Media aplicada em Facebook não está relacionada somente ao número de fãs que a página possui. Esqueça por alguns minutos aqueles cases de milhões de fãs que você tem visto aos montes, principalmente se você é uma micro ou média empresa. Normalmente investimentos necessários não são aprovados pelos diretores dessas empresas de menor porte. Algumas se quer tem rendimento para tanto…

Uma boa estratégia no início prepara possibilidades e faz testes de conteúdo na rede, posteriormente começa a publicar de acordo com o que foi possível relacionar de informações no primeiro período de testes, logo aplica algumas novas ou velhas estratégias e continua a mensuração de resultados – Sim, aqui também se faz presente a lógica de Web Analytics.

O que preciso para um estratégia ser eficiente?

Antes de tudo, disposição para permitir que o Analista de Social Media possa trabalhar com todo o conhecimento que tem adquirido durante seu tempo de trabalho, o que chamamos de expertise.

Esteja aberto a negociação de uso do FacebookAds que, em resumo, é a maneira de anunciar conteúdo dentro do Facebook trazendo maior atenção para sua Fanpage ou links externos.

Esteja ciente que uma dobradinha muito eficiente é ter um Analista de Social Media e também um Gestor de Conteúdo. Um Analista de Social Media não necessariamente criará conteúdo, pois ele é responsável pela estratégia, por encontrar maneiras de criar interatividade, gerenciar a Fanpage e a publicidade no Facebook. Já um Gestor de Conteúdo pode muito bem usar os caminhos apontados pelo seu Analista de Social Media para o desenvolvimento de materiais de campanhas envolventes.

Outra dica importante é: Contrate ferramentas de apoio para facilitação do trabalho desses profissionais (pergunte a eles ou aceite as indicações que irão te fazer), além de maximizar o uso do tempo através dessas ferramentas, existe a redução de erros através de automatização de processos de muita interação humana.

Espero poder ter ajudado em algo. Um forte abraço e sucesso a todos.

Diretor da Alpis Consultoria.
Consultor Certificado 8 Ps - Marketing Digital, Planejamento Estratégico digital, Gestor de Projetos.

Veja perfil e 69 post(s)

Friday, April 20, 2012
no image

Especificação de Requisitos – A parte mais importante de seu projeto (será?)

“O levantamento de necessidades e especificação de requisitos pode ser considerada a etapa mais importante do projeto de um sistema de informação”

Que atire o primeiro mouse quem nunca ouviu a frase acima. Mas será mesmo que podemos dizer que ela é verdadeira?

Bom, se me perguntarem, eu diria que “em partes”.

O levantamento de requisitos é uma parte extremamente importante em um projeto, contudo o responsável por essa atividade deve ter conhecimento não somente do negócio, mas da sua equipe, tecnologia a ser empregada e suas limitações. Por melhor que seja a especificação, esta por si só não poderá gerar valor (lucro) para o cliente, já que o produto com que este trabalha diretamente é o software. Fazendo uma analogia com o mercado da construção civil, os engenheiros e arquitetos devem fazer o levantamento das necessidades do cliente, projetando a obra e definindo um escopo. Esse levantamento tem valor para o cliente, o serviço é cobrado e o cliente receberá a documentação. Todavia, somente o projeto não satisfaz as necessidades do contratante. O cliente tem a tendência de ver como produto somente a parte funcional que lhe é entregue, e como é esta que será trabalhada diretamente, sua importância não deve ser considerada inferior ao do levantamento de requisitos.

Tão importante quanto realizar o levantamento das necessidades corretamente, é implementar essas necessidades da maneira ao qual foram especificadas. Para otimizar o processo as equipes de levantamento e implementação devem trabalhar em sintonia, de modo que tudo que seja especificado e documentado seja possível de ser implementado, respeitando-se as limitações da tecnologia, pessoal, entre outros. Algumas pessoas acreditam que de posse do levantamento, qualquer desenvolvedor poderá implementa-lo, mas isso não é exatamente tão simples. Mão de obra qualificada é um problema recorrente nas empresas de TI, além do fato de que certas funcionalidades “prometidas” na especificação podem não ser viáveis ou até mesmo impossíveis de serem realizadas por limitações de tecnologia e/ou verba ou prazo, por exemplo.

Por fim, a importância do levantamento de requisitos e da etapa de implementação não devem ser comparadas em uma escala de importância. Elas se auto complementam e devem caminhar juntas para que o produto final seja entregue com excelência.

E você, o que acha?

Publicado originalmente em Eu Faço Programas

Gabriella Fonseca Ribeiro tem 21 anos e cursa Sistemas de Informação. Trabalha com desenvolvimento, pesquisa e otimização de websites - SEO, marketing digital, redes sociais e comunicação interativa. || www.eufacoprogramas.com

Veja perfil e 41 post(s)

Friday, April 6, 2012
no image

Gestão com Pessoas: Liderança Perfeita (Parte I)

Quando converso com colegas, de diversas áreas de atuação, sempre surgem questões como: “… meu chefe não sabe o que eu faço…”, “… nunca recebo uma palavra de apoio do meu supervisor…”, “… se faço tudo certo, não fiz mais do que a minha obrigação, se faço algo errado o meu gerente não perdoa…”, etc. Então assim como eu, você deve estar se perguntando: – Existe liderança perfeita?

O volume de livros que leio sobre o tema liderança e como eles ganharam força nos últimos anos me levaram a crer que existe um modelo de liderança perfeito, mas alcança-lo não é uma tarefa fácil.  Augusto Cury, James C. Hunter, Peter Drucker, Tom Peters e muitos outros, exploraram de maneira explicita ou implícita o estilo de liderança de Jesus.  Ouso explorar mais uma vez esse modelo com reflexões, da minha experiência corporativa e observações pessoais, sobre algumas competências importantes.

Primeiro não basta o título de líder para que o grupo venha a obedecer automaticamente a todas as ordens recebidas pela pessoa que assumiu ao cargo. Faz-se necessário uma gama de competências para que o líder possa efetivamente liderar uma equipe.  E esta começa pela influência, sem dúvida um líder não necessariamente é o chefe, o gerente ou o supervisor, mas aquele que consegue agregar todo o grupo de maneira natural e convergi-los a uma direção.  Pessoas dotadas de influência usam a razão e o raciocínio lógico, para produzir convicção no grupo.

O poder de mando envolve fatores espirituais, educacionais, intelectuais e psicológicos, dentre outros.  Sabe-se também que um dirigente insensível pode não só aniquilar a iniciativa e o espírito de cooperação no ambiente de trabalho, como também influir na felicidade da vida familiar do subordinado.  Uma das missões da liderança deve ser eliminar tensões e atritos dentro da organização, e de ajudar a criação de um ambiente de respeito e de cooperação.

Então vamos definir o que você quer ser, pois como líder imperfeito que somos, por mais que busquemos a melhor forma de liderar, cometeremos erros e nesse momento precisamos mostrar que temos força.  A força vem de reconhecermos que erramos e em pedir desculpas de maneira sincera, pois só assim se constrói uma relação de confiança.  É imprescindível que um líder tenha um senso profundo de segurança quanto aos princípios e valores que o regem, além de ter um espírito de respeito mutuo para com os seus liderados.  Se você não está pronto a reconhecer seus erros então repense seu papel como líder.

Outra competência interessante é a empatia, que está em colocar-se no lugar do outro, assim você saberá o que dizer ou fazer, mas uma vez eu digo que não é fácil agir assim.  Eu sempre gosto de pessoas sinceras e transparentes, que dizem o que pensam logo de cara.  Mas ouvir algo tão direto nem sempre é fácil.  Geralmente quando vem de uma pessoa que você confia ou ainda se essa pessoa já passou pela mesma situação que você, é mais fácil de aceitar.  Mas se vem de alguém que você não admira e respeita é mais difícil de “digerir”.

Na rotina de qualquer líder há conflitos de ideias, a empatia é uma das formas de buscar a convergência de ideias.  E mesmo com toda boa intenção da liderança ainda assim, os problemas de comunicação no processo afetarão a relação.  Romper a barreira levantada no meio da relação é um desafio.  Se informar, aplicar, errar, corrigir, estudar e avançar passo a passo no estabelecimento de uma ponte de confiança é um processo lento, mas deve ser construída como a base da tão sonhada liderança perfeita.

Deixo uma frase do Samuel Johnson para reflexão: “Não pode haver amizade sem confiança, nem confiança sem integridade.“1

Bibliografia:
1 Covey, Stephen R. – “Os 7 hábitos das pessoas altamente eficazes” – 30ª. Edição – FranklinCovey
Armstrong, David – “A gerência através de histórias” – Editora Campus
Gabi,Wagner – “Relações Públicas e Humanas para Líderes Cristãos” – Editora CPAD.
Youssef, Michael – “O Estilo de Liderança de Jesus” – Editora Betânia
Dusilek, Nancy G. – “Liderança Cristã” – 5ª. Edição – editora JUERP

Profissional com mais de 20 anos na área de Tecnologia da Informação. Graduada em Processamento de Dados e Pós-graduada em Gestão Empresarial.

Veja perfil e 11 post(s)

Tuesday, September 6, 2011
no image

E-commerce: Inteligência competitiva é não imitar os erros da concorrência. Faça melhor, seja melhor. Parte 01

Como é um tema mais complexo vou separar em duas partes, a fim de não ficar extenso demais o texto. O conteúdo é uma forma de pensar fora da caixa – apesar de tão obvio, porém, não tão aceito no mercado ou pelo menos aceito e não praticado – não é pela ausência de necessidade e sim pelo comodismo de fazer mais do mesmo.

É certo que existe um futuro promissor para quem aproveitar e entrar agora no mercado virtual, portanto, já passamos da primeira fase, onde tudo é experimental no contexto geral, existe sim alguns campos que estão sendo experimentados, como é o caso de Social Media.

Como costumo falar, na verdade não existem ainda PROFISSIONAIS GURUS nesse mercado, o que temos hoje são pessoas de formações diferentes que por experiência em outros setores e por uso de ferramentas como inteligência competitiva, monitoramento, testes em ambientes seguros (versões Betas) e gestão de projetos fazem com que esse mercado não seja tão indisciplinado ou imaturo como é na realidade. Não é possível termos com tão pouco tempo de e-commerce no Brasil pessoas que possam dizer que são detentoras de um grande conhecimento e que esse garante tal sucesso, o que podemos ter hoje são pessoas empenhadas, profissionais que buscam qualificar-se a ponto de discernir as melhores estratégias e os melhores investimentos a serem feitos, isso sim é o que temos – e por sinal é pouca quantidade.

Não é por menos que o mercado carece de mão de obra, alguns dizem que é simplesmente pelo crescimento do mercado, na verdade não. Vamos analisar de uma forma mais crítica esse julgamento de crescimento de mercado – é muito fácil você vender uma solução e-commerce colocando dados globais na tela, ou informando cases de sucesso no exterior (onde culturas são diferentes e a tecnologia já está na maioria dos lares em quantidade e qualidade) quando na verdade o que temos é uma quantidade de “eu acho” muito grande. O mercado cresce em números de lojas ativas por um simples motivo – o empreendedor brasileiro (em sua grande maioria) gosta de novidade e tenta (sem analisar) fazer uso dessa novidade para gerar receita. Estou falando por experiência, atendo projetos que estão a anos engatinhando (com grande investimento por sinal) e que o ato de investir novamente para fazer o que é certo é amedrontado pelo fato de por anos terem sido assessorados por aqueles que apenas acham que já possuem conhecimento suficiente e não aprenderam que esse mercado está em desenvolvimento e portanto estar atento aos movimentos, as novidades, a cultura do povo, as finanças da empresa, a gestão de pessoas, a gestão de material, de estoque, de logística, de atendimento, de marketing digital e tudo o que pode envolver um projeto e-commerce é fundamental.

Quando iniciei meus serviços sempre ensinei e-commerce com a visão de – “Fazer um comércio virtual o mais humano possível”, o que chamo de Humanizar processos. Vocês já devem imaginar o quanto fui zombado por aqueles que fazem do “eu acho” uma bandeira.

Mesmo assim, confiante de estar no caminho certo ainda prego essa forma de comércio virtual, o comércio humanizado. Não podemos esquecer que apesar da estarmos atrás de monitores de um computador temos outra pessoa no outro lado, não é pelo uso da tecnologia que deixamos de ter sentimentos, bons ou não tão bons como o desejado – pelo contrário, o sentimento de expectativa e desejo aumenta consideravelmente podendo ser bom ou uma grande bomba.

Muitos projetos são baseados em faturamento. Faturamento é consequência de um ato bem feito, certo disso, considero ser mais interessante basear um projeto em sentimentos. Agora você me pergunta se estou louco ou – como assim?

Basear projetos e-commerce em sentimentos é simplesmente querer ser a melhor escolha de seus clientes. Tão simples quanto 2 + 2 = 4, só que você, quando criança, levou um tempo para entender isso e para entender teve que abrir mão de teimosia de que 2 + 2 poderia ser qualquer número imaginário.

Normalmente em um planejamento, ou já no executar do projeto pensamos em tudo – menos no principal, a experiência do consumir final.

Humanizar processos é pensar desde que classe social você atenderá a como contratar pessoas e se perguntar:

O preço que pratico é viável para o meu público?O meu público alvo, onde ele está?Qual é a hora que tenho a atenção do meu público?As pessoas que contratei são as pessoas ideais para cuidar de um projeto com uma visão mais humana? Eles possuem flexibilidade, atenção, carisma, educação, humildade, inteligência emocional…?

Essas são apenas algumas perguntas que podemos fazer pensando nos clientes a fim de humanizar processos. Portanto, sempre e convictamente divulgo a idéia de que o cliente recebe o que você entrega para seus funcionários. Isso é uma lógica de inteligência emocional, não existe profissional capaz de excluir seus sentimentos, esqueça isso ou contrate máquinas.

Profissional emocionalmente estável se faz na empresa. Pode estar com problemas familiares, pode estar com problemas financeiros, com o amigo no hospital ou qualquer coisa que tire a sua atenção, portanto, se a empresa tem interesse em entregar o melhor para seus clientes tem que investir nos funcionários – sem eles você não existe meu amigo, mais dependente nessa relação é o empresário e não o assalariado.

Algumas empresas já estão aderindo a essa prática louvável de gestão de pessoas, estão parando de querer fazer festinhas que só servem para bajular ou mascarar os problemas internos, fazer encontros de treinamentos que nada são válidos para a vida do funcionário e deixando principalmente de prestar atenção no que seu funcionário está sentindo.

Tuesday, August 16, 2011
no image

Ferramentas de testes em Django – Parte 1

Dando continuidade à série de posts sobre Django, vou indicar algumas ferramentas de testes para que você também possa deixar com que os testes guiem o desenvolvimento de suas aplicações.


Afinal, testar é preciso ;)


Sem dúvida nenhuma! Mas não espere que o framework adeque-se a você, você precisa ter a iniciativa de tentar compreender as melhores maneiras para escrever testes em Django.


Por exemplo, se você tem por hábito isolar os modelos para testá-los de forma unitária, pode passar por certa dor de cabeça com o Python/Django. Não que seja impossível, mas o comportamento default do framework é criar uma base de dados “fake” para você não precisar ter este trabalho.


Enfim, talvez a forma de utilizar estas ferramentas caiba em um outro post, o objetivo deste é apenas apresentá-las.


A unittest é uma biblioteca padrão do Python que ajuda (e muito) a escrever testes automatizados com a linguagem.


Os testes são escritos através de classes, onde utilizamos os esquemas de assertions para garantir o comportamento do código testado (nenhuma novidade até aqui). Para quem utiliza testes unitários no Java não vai sentir grandes mudanças na abordagem, já que a unittest é inspirada na JUnit (sendo muitas vezes até chamada de PyUnit):

import unittestfrom myapp.models import Animal class AnimalTestCase(unittest.TestCase): def setUp(self): self.lion = Animal.objects.create(name="lion", sound="roar") self.cat = Animal.objects.create(name="cat", sound="meow")  def testSpeaking(self): self.assertEquals(self.lion.speak(), 'The lion says "roar"') self.assertEquals(self.cat.speak(), 'The cat says "meow"')

O test runner padrão do Django irá procurar por subclasses de unittest.TestCase nos arquivos models.py e tests.py. A suíte de testes tenta facilitar ao máximo a sua vida… execute a seguinte instrução e confira se a sua aplicação está ok ou não:


Peraí que não acabou! Apresentando a TestCase


Testar aplicações Web com a unittest pode ser dureza. Pensando nisso o Django disponibiliza a TestCase, que estende a unittest adicionando funcionalidades como carregamento de fixtures, roteamento de urls e um client para fazer requisições Web e testar as suas views (o TestClient, detalhado mais abaixo).


Admito que escrever documentação de software não é o meu forte… mas com doctests pode-se documentar métodos ao mesmo tempo em que escreve-se testes!


A doctest é uma biblioteca padrão do Python que procura e interpreta docstrings na aplicação. A sintaxe nesses trechos de docstrings é diferenciada, simulando um interpretador interativo do Python:

# models.py from django.db import models class Animal(models.Model): """ An animal that knows how to make noise  # Create some animals >>> lion = Animal.objects.create(name="lion", sound="roar") >>> cat = Animal.objects.create(name="cat", sound="meow")  # Make 'em speak >>> lion.speak() 'The lion says "roar"' >>> cat.speak() 'The cat says "meow"' """ name = models.CharField(max_length=20) sound = models.CharField(max_length=20)  def speak(self): return 'The %s says "%s"' % (self.name, self.sound)

Assim como com a unittest, o test runner padrão do Django procurará por ocorrências de docstests em models.py e tests.py.


E como fazer para testar requisições Web? Por exemplo, você não quer testar a sua view de forma isolada, quer testar desde a parte de roteamento ao comportamento com o banco de dados, como se você se estivesse realmente visitando a página. Neste caso entra a test client.


Toda a classe TestCase possui uma instância da Django Test Client. Então escrever testes com requisições à sua aplicação fica muito simples utilizando classes:

from django.test import TestCase class SimpleTest(TestCase): def test_details(self): response = self.client.get('/customer/details/') self.assertEqual(response.status_code, 200)  def test_index(self): response = self.client.get('/customer/index/') self.assertEqual(response.status_code, 200)

É perfeitamente possível utilizar a test client em doctests também:

""">>> from django.test.client import Client>>> c = Client()>>> response = c.post('/login/', {'username': 'john',... 'password': 'smith'})>>> response.status_code200"""

Particularmente, tive a oportunidade de implementar testes unitários já no início do meu aprendizado em Django. Deixar os testes te guiarem é uma prática excelente!


Tudo parte do bom senso, óbvio. Nenhum processo ou ferramenta deveria substituir o “feeling” do profissional… também não é muito sadio ser extremamente “by the book“. Mas se puder utilizar testes para guiar o seu desenvolvimento, use-os!


Na segunda parte deste post pretendo apresentar algumas ferramentas que irão turbinar ainda mais o seu desenvolvimento orientado a testes.


Até lá!


Fonte: Klaus Laube

Saturday, August 13, 2011
no image

Ferramentas de testes em Django – Parte 2

No post anterior, conhecemos as ferramentas default para construção de testes automatizados em Django. Acontece que você pode “sair um pouco da caixa” e usufruir de ferramentas “third-party“, que enriquecerão o seu ambiente de desenvolvimento e lhe trarão maior segurança em seus testes de software.

É perfeitamente possível criar testes de aceitação em Django com a TestClient e lxml. Mas vamos ser sinceros, é deveras trabalhoso “parsear” os resultados das suas views.

Com a Splinter, uma ferramenta para testes de aplicações web, você pode automatizar ações executadas por navegadores, como visitar uma página, preencher um formulário ou clicar em um link; tudo isso sem preocupar-se com parsing, nós, DOM, nem nada do tipo:

from splinter.browser import Browserbrowser = Browser()# Visitar uma URLurl = "http://search.twitter.com"browser.visit(url)browser.fill('q', "#cobrateam")  # Procurar e clicar no botão 'search'button = browser.find_by_css("#searchButton input").first  # Interagir com os elementosbutton.click()if browser.is_text_present("No results for #cobrateam"): print "nobody likes us =("else: print "we're popular =)"

O que eu acho mais bacana nesta ferramenta são os seletores, facilitam muito na hora de checar resultados e comportamentos.

A comunidade em volta desta ferramenta está em constante crescimento e atividade. Portanto, caso você queira contribuir com o projeto, vá agora mesmo para o repositório no GitHub e colabore.

E quando queremos fugir da regra? Aposto que chegará um momento em que a estrutura de diretórios padrão, necessária para a execução dos seus testes em Django, não te satisfará mais. O que fazer neste caso? Simples, recorra ao Nose!

O Nose estende os recursos da unittest e facilita a escrita e carregamento dos testes em projetos Python. De uma forma mais detalhada, ele percorre o seu projeto (ou uma determinada região de seu escolha) executando subclasses da unittest.TestCase ou funções que contenham “test”. Por exemplo:

# test_subclasse.pyimport unittest class SubclasseTest(unittest.TestCase): def test_um_eh_verdadeiro(self): self.assertTrue(1) # test_funcao.pydef test_zero_eh_falso(): assert 0 == False

Ao executar o comando nosetests o nose se encarregará de procurar e carregar os testes:

$ nosetests..----------------------------------------------------------------------Ran 2 tests in 0.005s OK

É claro que existe uma “mágica” aí. Na verdade o nose pesquisará por arquivos Python com “test” em seu nome, por funções com “test” em seu enunciado, e por classes com métodos “test” em sua declaração. Ele age mesmo como um “runner“, tendo a capacidade de lidar com testes escritos com unittest ou não.

Essa é só a ponta do iceberg. É possível construir plugins para o nose, permitindo melhorar ainda mais o seu ambiente de testes (como por exemplo, permitir que o nose funcione em subprocess separados).

Caçando testes em seu projeto (Django)

Para facilitar ainda mais a escrita de testes em Django existem plugins como o django-nose, que permite que você substitua o Test Runner padrão da framework por um específico que utiliza o nose, unindo assim a facilidade e “add-ons” do nose com o ambiente de testes do Django.

E se você estava se perguntando sobre BDD em Django, eu apresento a Lettuce!

Esta ferramenta, baseada na Cucumber, permite com que você escreva estórias utilizando linguagem ubíqua, mais próxima da área de negócios do que da área técnica, e automatize a validação delas.

O mais bacana é que ela já vem preparada para o Django, permitindo que a gente execute os testes de comportamento de forma fácil e rápida:

Feature: Rocking with lettuce and django  Scenario: Simple Hello World Given I access the url "/" Then I see the header "Hello World"  Scenario: Hello + capitalized name Given I access the url "/some-name" Then I see the header "Hello Some Name"Estória escrita, vamos escrever o script Python que validará se está tudo de acordo:

from lettuce import *from lxml import htmlfrom django.test.client import Client @before.alldef set_browser(): world.browser = Client() @step(r'I access the url "(.*)"')def access_url(step, url): response = world.browser.get(url) world.dom = html.fromstring(response.content) @step(r'I see the header "(.*)"')def see_header(step, text): header = world.dom.cssselect('h1')[0] assert header.text == text

Basta executá-lo da seguinte maneira:

Confira mais informações sobre como utilizar o lettuce com Django.

O Fudge é um módulo Python que auxilia na construção de objetos “dublês” (mocks e stubs), que permitem escrever testes sem necessariamente possuir um serviço ativo ou um objeto construído.

Um caso comum: Você está construindo uma API que autentica via OAuth ao Twitter e está utilizando testes para guiar o seu desenvolvimento. Não é interessante que nossos testes sejam dependentes da disponibilidade do serviço do Twitter, portanto, escrevemos um “objeto mentiroso”, que simulará este serviço, aceitando uma entrada e gerando um saída:

import fudge@fudge.patch('oauthtwitter.OAuthApi')def test(FakeOAuthApi): (FakeOAuthApi.expects_call() .with_args('', '', '', '') .returns_fake() .expects('UpdateStatus').with_arg_count(1)) post_msg_to_twitter("hey there fellow testing freaks!")

Pronto! Sabendo que valores serão passados, e quais os resultados, podemos simular o comportamento daquele serviço. Prático, não?

Estas são as ferramentas que eu costumo utilizar em meus projetos Python/Django. É claro que existem outras, na verdade existem várias. Tenha em mente que a ferramenta é apenas um meio de garantir, através de testes, que você está guiando a sua aplicação para o lugar certo. Os testes automatizados no final servem para garantir que ela ainda segue este caminho, que contribuições realizadas tardiamente não “quebraram” o comportamento que você escreveu no início do desenvolvimento.

Tenho a intenção de escrever um post mais prático sobre testes e Django. Fiquem no aguardo ;)

E você? Tem alguma ferramenta para recomendar? Utilize os comentários abaixo para compartilhá-la.

Até a próxima…

Fonte: Klaus Laube

Thursday, August 11, 2011
no image

Ferramentas de testes em Django – Parte 1

Dando continuidade à série de posts sobre Django, vou indicar algumas ferramentas de testes para que você também possa deixar com que os testes guiem o desenvolvimento de suas aplicações.

Afinal, testar é preciso ;)

Sem dúvida nenhuma! Mas não espere que o framework adeque-se a você, você precisa ter a iniciativa de tentar compreender as melhores maneiras para escrever testes em Django.

Por exemplo, se você tem por hábito isolar os modelos para testá-los de forma unitária, pode passar por certa dor de cabeça com o Python/Django. Não que seja impossível, mas o comportamento default do framework é criar uma base de dados “fake” para você não precisar ter este trabalho.

Enfim, talvez a forma de utilizar estas ferramentas caiba em um outro post, o objetivo deste é apenas apresentá-las.

A unittest é uma biblioteca padrão do Python que ajuda (e muito) a escrever testes automatizados com a linguagem.

Os testes são escritos através de classes, onde utilizamos os esquemas de assertions para garantir o comportamento do código testado (nenhuma novidade até aqui). Para quem utiliza testes unitários no Java não vai sentir grandes mudanças na abordagem, já que a unittest é inspirada na JUnit (sendo muitas vezes até chamada de PyUnit):

import unittestfrom myapp.models import Animal class AnimalTestCase(unittest.TestCase): def setUp(self): self.lion = Animal.objects.create(name="lion", sound="roar") self.cat = Animal.objects.create(name="cat", sound="meow")  def testSpeaking(self): self.assertEquals(self.lion.speak(), 'The lion says "roar"') self.assertEquals(self.cat.speak(), 'The cat says "meow"')

O test runner padrão do Django irá procurar por subclasses de unittest.TestCase nos arquivos models.py e tests.py. A suíte de testes tenta facilitar ao máximo a sua vida… execute a seguinte instrução e confira se a sua aplicação está ok ou não:

Peraí que não acabou! Apresentando a TestCase

Testar aplicações Web com a unittest pode ser dureza. Pensando nisso o Django disponibiliza a TestCase, que estende a unittest adicionando funcionalidades como carregamento de fixtures, roteamento de urls e um client para fazer requisições Web e testar as suas views (o TestClient, detalhado mais abaixo).

Admito que escrever documentação de software não é o meu forte… mas com doctests pode-se documentar métodos ao mesmo tempo em que escreve-se testes!

A doctest é uma biblioteca padrão do Python que procura e interpreta docstrings na aplicação. A sintaxe nesses trechos de docstrings é diferenciada, simulando um interpretador interativo do Python:

# models.py from django.db import models class Animal(models.Model): """ An animal that knows how to make noise  # Create some animals >>> lion = Animal.objects.create(name="lion", sound="roar") >>> cat = Animal.objects.create(name="cat", sound="meow")  # Make 'em speak >>> lion.speak() 'The lion says "roar"' >>> cat.speak() 'The cat says "meow"' """ name = models.CharField(max_length=20) sound = models.CharField(max_length=20)  def speak(self): return 'The %s says "%s"' % (self.name, self.sound)

Assim como com a unittest, o test runner padrão do Django procurará por ocorrências de docstests em models.py e tests.py.

E como fazer para testar requisições Web? Por exemplo, você não quer testar a sua view de forma isolada, quer testar desde a parte de roteamento ao comportamento com o banco de dados, como se você se estivesse realmente visitando a página. Neste caso entra a test client.

Toda a classe TestCase possui uma instância da Django Test Client. Então escrever testes com requisições à sua aplicação fica muito simples utilizando classes:

from django.test import TestCase class SimpleTest(TestCase): def test_details(self): response = self.client.get('/customer/details/') self.assertEqual(response.status_code, 200)  def test_index(self): response = self.client.get('/customer/index/') self.assertEqual(response.status_code, 200)

É perfeitamente possível utilizar a test client em doctests também:

""">>> from django.test.client import Client>>> c = Client()>>> response = c.post('/login/', {'username': 'john',... 'password': 'smith'})>>> response.status_code200"""

Particularmente, tive a oportunidade de implementar testes unitários já no início do meu aprendizado em Django. Deixar os testes te guiarem é uma prática excelente!

Tudo parte do bom senso, óbvio. Nenhum processo ou ferramenta deveria substituir o “feeling” do profissional… também não é muito sadio ser extremamente “by the book“. Mas se puder utilizar testes para guiar o seu desenvolvimento, use-os!

Na segunda parte deste post pretendo apresentar algumas ferramentas que irão turbinar ainda mais o seu desenvolvimento orientado a testes.

Até lá!

Fonte: Klaus Laube

Tuesday, June 7, 2011
no image

Como versionar projetos Django com o Mercurial – Parte 1

Olá pessoas!

Se você está começando em Django, e nunca utilizou uma ferramenta de controle de versão (as vezes por trauma do SVN ou por simples desinteresse) esta será uma grande oportunidade para você conhecer o Mercurial, e saber a forma que venho utilizando para versionar meus projetos Django.

Sem dúvida o Git é a ferramenta do momento em se tratando de controle de versões, e vem sendo muito utilizada por rubistas e pythonistas (eu incluso nessa última galera).

Por que não falar de Git aqui? Simples! Você vai ouvir falar sobre Git em todo o lugar. O Google vai te trazer toneladas de informações sobre Git. Você vai “ouvir” o pessoal falando que Git é melhor do que qualquer outra ferramenta. Você vai até enjoar de tanto ouvir falar sobre Git.

O Mercurial foi o primeiro DVCS que utilizei (de verdade). Na minha opinião, ele é mais simples que o Git, é feito em Python, e me atende no desenvolvimento dos meus projetos pessoais.

Concordo com o pessoal que diz que o Git é bom, e concordo com o pessoal que fala que o Mercurial é bom. É perfeitamente possível utilizar estas duas ferramentas, não precisamos ser radicais e iniciar um flame em cima deste assunto. A opção é melhor que não ter opção…

Agora uma coisa eu não posso deixar de concordar: O GitHub é (na minha opinião) melhor que o Bitbucket.

Ambos são repositórios de código na nuvem, o primeiro usando Git e o segundo usando Mercurial. O detalhe é que o Git tem algumas funções mais apuradas que o Bitbucket, principalmente as funcionalidades que tornam a ferramenta muito mais “social”.

Embora o Bitbucket recentemente tenha sido adquirido pela Atlassian e tenha recebido uma forte injencão de melhorias… o GitHub ainda é, para mim, a melhor forma de compartilhar código que existe no momento.

Venho utilizando o Bitbucket pela opção de poder manter repositórios de código “fechados”. Coisa que com o “rival” só é possível através de uma conta paga.

Mais uma vez… é perfeitamente possível viver utilizando as duas ferramentas.

Na próxima parte deste post vamos abordar o básico do Mercurial, e também pretendo mostrar como organizo os meus projetos Django “versionando-os” com o Mercurial e Bitbucket.

Até a próxima…

Fonte: Blog Klaus Laube

Friday, February 11, 2011
no image

Trabalhar no Exterior: Desvendando o mito – Parte 4!

Boas a todos!

Primeiramente, peço desculpas pelo atraso na continuação da série. Muitas coisas aconteceram e acabei voltando ao Brasil por motivos familiares. Os últimos 3 meses foram bastante intensos e da mesma forma que sair do Brasil não é fácil, o mesmo vale para a volta!

Dando seguimento ao que interessa, no último post falamos das maneiras em se conseguir uma vaga a distância! Hoje o tópico é: Consegui a vaga! E agora?

Essa é a pergunta que faço: Conseguiu a vaga? E agora? Não sabe por onde começar ou que fazer? Vou te ajudar…

Primeiramente, antes de acertar o primeiro salário que te oferecerem, faça uma pesquisa salarial no Google e veja se o que estão te oferecendo é justo e suficiente para sobreviver! Lembre-se que não dá pra ficar insatisfeito, pedir demissão e correr pra casa dos pais até encontrar outro emprego! Muita calma nessa hora!

Pesquise sobre internet, telefone, tv a cabo, plano de saúde, preços nos supermercados etc… assim você já terá uma noção de gastos básicos mensais e pode ter uma noção do quanto gastará em média por mês.

Passado o extase inicial da satisfação em ter conseguido emprego em outro país, é hora de começar a preparar a partida.

1) Passaporte na mão. De preferência um renovado.

2) Ligue na Embaixada ou Consulado do país de destino e peça a relação de documentos necessários para retirar o visto que lhe será permitido. Esse processo é burocrático e geralmente demorado! Tem muita coisa a ser feita, pois uns países pedem documentos a mais e outros a menos.

3) Acertou uma data com sua nova empresa para começar a trabalhar? Hora então de começar a olhar a passagem aérea! Compre ida e volta, pois as companhias não deixam você embarcar só com bilhete de ida, saindo do Brasil!

4) Já passeou pela cidade onde você irá morar através do Google Street View? Fez uma pesquisa no Google sobre bairros, transporte público, escolas, etc? Ainda não fez? Não deixe pra última hora, jamais!

Reserve um hotel, de preferência, perto do seu trabalho para não se perder pegando ônibus para o lugar errado.

Pesquise no Google o nome de imobiliárias na cidade em que irá morar, anote o nome dos bairros e veja a localização dos mesmos no Google Maps! Toda cidade no mundo tem áreas nobres e áreas mais “pesadas”, que você certamente não gostaria de morar. Para não ser surpreendido na chegada, jé entre em contato com alguns agentes imobiliários bem antes da partida, informe que você está de mudança e que precisa de ajuda para conseguir um imóvel para aluguel. Já informe o nome de alguns bairros que você pesquisou e diga que procura por algo nessa região. Informe se você procura imóvel vazio ou mobiliado. Essa escolha irá influenciar no tamanho da sua bagagem…

O custo de vida varia muito entre países. Uma boa dica seria verificar se perto do bairro de seu escolha, tem bom acesso a transporte público (na Nova Zelandia ia para o trabalho de ônibus e em Portugal, de metrô.  Carro só no fim de semana!). Transporte público é essencial morando fora do Brasil. Faça uma pesquisa sobre as tarifas de trem, metrô, ônibus, etc…

Pesquise também o preço de carros! Dependendo do país, você pode comprar carro extremamente barato.

Pesquise se há comércio perto do bairro e se tem tudo que você precisa. Supermercados, cafés e lanchonetes, lavanderia e farmácia são essênciais perto de casa…

5) Se você tem filhos, pesquise sobre escolas e creches, que ao contrário do Brasil, são excelentes e não sao baratas!

6) Compre um guia de viagem do país e se informe sobre todos os pontos necessários sobre a nação. Política, religião, cultura, clima, vegetação, dinheiro, comida… parece bobagem, mas isso é de extrema importância! Há muita diferença entre o Brasil e demais países do mundo. Atitudes que consideramos normais aqui são consideradas desrespeitosas em outros locais! Portanto, informação é tudo!

7) Levar uma lembrança do Brasil para a pessoa que te contratou tambem é válido, pois demonstra cortesia… mas não vá levar um berimbau, né?! Uma camisa da seleção brasileira é sempre disputada…

Planejamento é essencial para evitar surpresas!

Ate o próximo post, onde falaremos do desembarque!

Wednesday, January 19, 2011
no image

Os segredos das grandes realizações na Web – Pesquisa de Mercado (Parte 03)

Parte 1 e Parte 2

Tipos de pesquisas comuns

Existem algumas situações comuns e tipos de pesquisas utilizadas para elas, vou tentar aqui reunir algumas dessas pesquisas:

Preço de venda e/ou preço de compra – Sua utilidade se dá quando se tem a necessidade de avaliar a viabilidade de um investimento, também para saber quanto poderá cobrar ou de quem poderá comprar. Outra forma de uso dessa pesquisa é para reposicionamento de mercado ou até para comparação entre concorrentes e estudo de avanço de mercado e estratégias.

Market Share – Para quem não está acostumado com o tema o seu significado simples é “participação de mercado”, ou seja, a força ou participação da empresa em determinado território ou mercado. Esse tipo de pesquisa visa medir a força de mercado tanto dos concorrentes como do seu próprio projeto, é excelente pesquisa para criar esforços promocionais, vendas e propagandas. Dá a noção do tipo de terreno que se está pisando e de suas mutações ao longo do tempo. Mas lembre-se guerra de preço é a ultima opção, tente antes agregar valor a sua marca ou produto, bater de frente com os preços é arriscar o faturamento, chegar perto da margem de manutenção e acabar chegando ao vermelho, conte sempre com as três atitudes mágicas do empreendedor, Critique, Duvide e questione. Às vezes seu concorrente tem comprado melhor do que você e isso permite a ele fazer guerra de preço tendo uma margem mais alta que você quando seu produto se igual no preço com o dele, já que o custo de produção foi menor, essa prática comercial é usada em conjunto com as informações geradas pela pesquisa de concorrência.

Potencial de consumo – Simplesmente serve para avaliar se sua idéia ou produto vai vingar se tem futuro ou não no mercado, ou quanto tempo poderá permanecer. Uma boa dica, sempre que tiver uma idéia questione-se: isso servirá em que meu cliente? Esse tipo de pesquisa começa por você.

Satisfação – Pesquisa de satisfação é abrangente, você pode utilizá-la tanto externamente como internamente, ter sucesso no mercado hoje não se trata apenas de vender muito e satisfazer clientes, também é satisfazer seus funcionários, fazer deles divulgadores da marca, impulsionadores de ações que promovam marketing boca-a-boca, para isso serve a pesquisa interna – Lembre-se, funcionário que acredita na idéia da empresa, que é justamente tratado pela empresa ele compra a idéia, divulga a idéia e vende a idéia, não só isso, cria novos interessados que fazem disso um ciclo. Claro, é algo pequeno, mais imagine o poder de mercado que você tem quando sua marca torna-se reconhecida porque seus funcionários acreditam nela, o Google, o Facebook e outras tantas marcas de sucesso usam desse artifício.

Pesquisa de satisfação do cliente é simples, existem diversas formas: SAC, pesquisa de rua, pesquisa dentro do ambiente físico, eventos, enfim, tantas formas de fazer, mas vale ressaltar que esse resultado não deve ser considerado 100%, o que tem interferência humana tem haver com o emocional e o que tem haver com o emocional é inevitavelmente impossível de classificar exatamente como verdade, leve isso em consideração, crie uma margem de erro para esse tipo de pesquisa.

Share-of-mind – Esse tipo de pesquisa visa em união com a Market Share compreende a capacidade de elasticidade do mercado em questão, ou seja, mostra a possibilidade que se tem de trabalhar determinado projeto ou produto em comparação com a concorrência já muito bem posicionada. Ajuda a entender o quanto deve investir em comunicação, divulgação e manutenção de canais de marketing e campanhas. Um exemplo disso foi a Primeira fábrica de Pepsi no Rio Grande do Sul o qual entrou no mercado com uma garrafinha com um valor x de ml o que era mais do que os ml que a Coca-Cola fornecia para seus clientes, só que o detalhe, não era só mais produto, era mais produto e com menor preço. Trocando em miúdos, a Pepsi entrou no mercado fornecendo um novo tipo de embalagem (visibilidade diferenciada – destaque nas prateleiras), maior quantidade de produto por menor preço, fez isso porque seu custo de produção era mais baixo, também, porque a garrafa maior fornecia mais tendência a venda e isso causava giro, mesmo que entradas e saídas de caixa se igualassem naquele momento era ótima estratégia para combater a total dominadora do mercado (Coca-Cola).

Comportamento do consumidor – Seu uso se dá mais em análises de desenvolvimento de produtos, também se pode utilizar para escolha de campanhas de marketing.

Teste – A pesquisa embasada em teste serve para colocar o produto ou serviço Beta no mercado e avaliá-lo sem muitos riscos, permitindo interatividade – Cliente x Produto – o que permite melhor desenvolvimento e planejamento de produtos e serviços.

Até a próxima.

Não se esqueça de enviar assuntos para meu e-mail de contato, terei prazer em fazer um Artigo sobre o assunto desejado.

Wednesday, January 12, 2011
no image

Os segredos das grandes realizações na Web – Pesquisa de Mercado (Parte 01)

Pesquisa de Mercado – Um exemplo simples.

Quero primeiro agradecer aos leitores dos artigos que produzo. Pessoas em busca de conhecimento que eu acabo tendo a oportunidade de ajudar com o pouco que sei. Lembrando que essa série de artigos foi criada justamente para isso: distribuir conhecimento. Para chegar até aqui foi feita uma pequena pesquisa de “Mercado”, de modo simples. Vou relatar o que fiz.

1 – A busca – Observei que faltava uma série de artigos abrangente sobre um determinado tema.

2 – A idéia – Surgiu uma pergunta… Porque ninguém fez isso, ou se fez, porque não tenta espalhar rede a fora?

3 – Decisão – Eu posso dedicar uma parte do meu tempo e fazer isso.

4 – A pesquisa – Pude ver que muitos autores dedicavam-se apenas a TI, outros somente a Marketing e outros em Administração, por fim como Gerente de Projetos acostumado a trabalhar com todas as pessoas que dominam essas distintas áreas, adquiri conhecimento amplo, o que me possibilita distribuí-lo com certeza de que posso ajudar pessoas. Logo também percebi que as buscas eram feitas em grande parte sobre os três temas (TI, ADM e Marketing), também descobri que a maior parte dos interessados estava na classe de novos empreendedores ou, empreendedores com projetos em fase de desenvolvimento. Então concluí que – se procuram algo é porque consideram que alguém o tenha para passar – se não encontram é porque é um segredo ou quase isso – a minha área de atuação é Web e também as pesquisas apontam para essa área – todos buscam no fim é a realização de seus projetos, então, tive a idéia da série – Os segredos das grandes Realizações na Web.

5 – O impulso – Fiz todo o dever de casa, agora faltava a prova real… colocar a mão na massa. Comecei a pesquisar sobre quais temas dentro dessas áreas desejariam inicialmente, já que, se não se chama a atenção no início não se pode mensurar ou imaginar o sucesso do projeto.

6 – A escolha – Comecei a escolher os portais para quais divulgar meus Artigos – onde buscam mais? Onde se concentram esses tantos que quero atingir com essas informações?

7 -  O resultado – Sim, somente após esses passos, depois de divulgar o conteúdo já desenvolvido e começar a fazer alguns esforços de marketing simples e gratuito em redes sociais é que o retorno veio, não falo de dinheiro, pois em nada financeiramente isso me beneficiou, o retorno que falo aqui é a visibilidade, é o prazer de ajudar, a capacidade de compreender as necessidades alheias quando buscam a realização de seus sonhos. Fazer parte disso, fazer parte do conhecimento que uma pessoa leva pela vida toda, mesmo que uma pequena parte dele, isso já me faz FELIZ. Claro que eu não reclamo se gerar frutos financeiros (risos).

No próximo artigo sobre Pesquisa de Mercado vou abordar o assunto de forma mais profissional, algo mais consistente Esse foi apenas um ensaio que serve para abrir a mente e perceber que o complexo pode tornar-se simples, e quem faz isso é você.

Até a próxima.

Não se esqueça de enviar assuntos para meu e-mail de contato (contato@alpisconsultoria.com), terei prazer em fazer um Artigo sobre o assunto desejado.

Thursday, December 23, 2010
no image

Os segredos das grandes realizações na Web – Investimento On-line (Parte 02)

Leia a parte 1 desta série. Abaixo segue a continuação…

Existem muitos modelos de contratos usados para acordos comerciais entre prestador de serviços e cliente. Na Web os mais comuns são: Fee e Job

Por Fee:

O Contrato de Serviço estabelecido por Fee é o contrato mensal que abrange criação, divulgação e manutenção, as vezes apenas uma ou outra característica das mencionadas. Esse modelo é viável para empresas que desejam manter o mesmo padrão ou apenas alterações no percorrer do processo criativo, até mesmo em alguns casos inovadores. A vantagem principal desse modelo de contrato é a eliminação do processo de amadurecimento da idéia de quem é o cliente e de como alcançá-lo, enfim, faz com que não se necessite gastar tempo e dinheiro sempre que uma nova idéia seja colocada em pauta. Elimina inúmeras etapas de todo o processo.

Clientes desse modelo de contrato são considerados clientes de base, são os clientes que obtêm maior atenção, pelo motivo de serem estes os que mantêm as portas das agencias e prestadoras de serviços abertas, são estes que fazem o fluxo de caixa e mantém a empresa ativa. Por esse motivo são estes também os que conseguem melhor negociar os valores de serviços extras ou de novos modelos de planejamento. Detém o poder de negociação.

Por Job:

Simplesmente um contrato por ação, desenvolvimento e sem garantias de manutenção ou reestruturação sem que se tenha a necessidade de um novo contrato.

Esse modelo define limitações e restrições na conclusão do serviço, cabendo apenas ao cliente solicitar outro serviço posterior a esse. Manter alguns serviços na Web necessitam de consultoria ou administração profissional, nesses casos o ideal é a contratação por Fee. Caso sua necessidade seja apenas de uma campanha isolada será interessante a contratação por Job. Outra utilidade desse modelo é o teste que pode ser feito em uma agencia ou prestadora de serviço antes de uma contratação por Fee, para avaliar e mensurar o valor do investimento e resultado.

Agora que compreendemos duas das formas mais usuais de contratos estabelecidos entre cliente e fornecedor de serviços, fica mais simples a criação de um planejamento de investimento Web.

Até a próxima.

Não esqueça de enviar assuntos para meu e-mail de contato (contato@alpisconsultoria.com), terei prazer em fazer um Artigo sobre o assunto desejado.

no image

Os segredos das grandes realizações na Web – Investimento On-line (Parte 02)

Leia a parte 1 desta série. Abaixo segue a continuação…

Existem muitos modelos de contratos usados para acordos comerciais entre prestador de serviços e cliente. Na Web os mais comuns são: Fee e Job

Por Fee:

O Contrato de Serviço estabelecido por Fee é o contrato mensal que abrange criação, divulgação e manutenção, as vezes apenas uma ou outra característica das mencionadas. Esse modelo é viável para empresas que desejam manter o mesmo padrão ou apenas alterações no percorrer do processo criativo, até mesmo em alguns casos inovadores. A vantagem principal desse modelo de contrato é a eliminação do processo de amadurecimento da idéia de quem é o cliente e de como alcançá-lo, enfim, faz com que não se necessite gastar tempo e dinheiro sempre que uma nova idéia seja colocada em pauta. Elimina inúmeras etapas de todo o processo.

Clientes desse modelo de contrato são considerados clientes de base, são os clientes que obtêm maior atenção, pelo motivo de serem estes os que mantêm as portas das agencias e prestadoras de serviços abertas, são estes que fazem o fluxo de caixa e mantém a empresa ativa. Por esse motivo são estes também os que conseguem melhor negociar os valores de serviços extras ou de novos modelos de planejamento. Detém o poder de negociação.

Por Job:

Simplesmente um contrato por ação, desenvolvimento e sem garantias de manutenção ou reestruturação sem que se tenha a necessidade de um novo contrato.

Esse modelo define limitações e restrições na conclusão do serviço, cabendo apenas ao cliente solicitar outro serviço posterior a esse. Manter alguns serviços na Web necessitam de consultoria ou administração profissional, nesses casos o ideal é a contratação por Fee. Caso sua necessidade seja apenas de uma campanha isolada será interessante a contratação por Job. Outra utilidade desse modelo é o teste que pode ser feito em uma agencia ou prestadora de serviço antes de uma contratação por Fee, para avaliar e mensurar o valor do investimento e resultado.

Agora que compreendemos duas das formas mais usuais de contratos estabelecidos entre cliente e fornecedor de serviços, fica mais simples a criação de um planejamento de investimento Web.

Até a próxima.

Não esqueça de enviar assuntos para meu e-mail de contato (contato@alpisconsultoria.com), terei prazer em fazer um Artigo sobre o assunto desejado.

Wednesday, December 22, 2010
no image

Os segredos das grandes realizações na Web – Investimento On-line (parte 01)

Como dizer que não há possibilidade de realizar bons negócios na Internet de hoje? Impossível, existem lojas de artigos comuns vendendo pelo Twitter, micro lojas no FaceBook, construtoras fechando bons negócios também via redes sociais, enfim, um grande mundo de oportunidade nessa janela chamada Internet, basta olhar com atenção através dela que poderemos observar que lá, tudo é possível.

Com investimentos reais impulsionados pela grande participação de consumidores em redes sociais e canais de comunicação dentro do ambiente web, essa forma de obter resultados lucrativos vem se potencializando.

Quem não entrar no mercado enquanto ele ainda pode absorver e amadurecer sem exigir grandes esforços e investimentos gigantescos, vai ter que abrir mão do seu espaço ou de seu investimento para tentar uma pequena fatia do bolo dessa festa.

Investir em ações no universo digital tem como principal agente a capacidade de divulgar a permanência da sua marca na Web, por exemplo, em uma boa parte das campanhas de Adwords a proposta não é somente aparecer como principal resultado na busca no Google e sim fazer com que após acessar seu Site a experiência de navegação seja tão atraente que seu possível cliente não necessite mais do Google para acessar seu site, e sim fazer com que ele entenda que ali, no seu Site, ele encontra o profissionalismo e respeito pelo cliente que ele tanto procura. Fazer com que ele se lembre da sua marca e do seu domínio ao invés de procurar algo no Google, isso é o que considero cliente real, os que acessam diretamente a sua marca.

Nesse caso específico as campanhas de Adwords funcionam como uma porta de entrada para uma fantástica experiência de navegação proporcionada por uma empresa realmente preocupada com seus clientes. Perguntar se isso dá resultado é a mesma coisa que ter que aprender os princípios básicos de se trabalhar com Internet. É trabalhar a expectativa do cliente e encontrar nela a sua oportunidade.

Em falar de trabalhar com Internet, tem gente que acha ser simples fazer as coisas acontecerem na Web, consideram que porque ela existe e nela encontram-se uma multidão de pessoas seu produto ou serviço vai estar visível. A realidade vai muito além, sim a Web concentra uma multidão, portanto estão dispersas, prontas para receber informações sólidas e valiosas. Mas como e quando encontrar esse consumidor?

Investimento no universo digital requer cautela, primeiro para não cair na pegadinha que já está mais que sem graça do “sobrinho” que faz sites, do amigo do amigo que aprendeu a mexer no FireWorks em uma vídeo aula do Youtube, ou no gerente de e-commerce (essa é boa) formado por YouTube, por “achismo” ou por tentativa e erro. Esses existem aos montes, não que sejam uma ameaça, na verdade poucos de nós começamos fora dessa realidade, o problema é que pelo menos nesse período do nosso amadurecimento profissional fomos íntegros de não oferecer serviços profissionais sem na verdade ter competência para isso.

Não considero formação como ponto decisivo. Não, por também não ser formado e minha opção por parar minha faculdade de direito para me lançar ao mundo da Internet foi totalmente saudável, hoje pretendo sim uma formação, mas não tê-la em nada me impede de trazer resultados mais que satisfatórios para meus clientes. Conheço aos montes autodidatas com quem tive oportunidade de trabalhar que são mais competentes e apaixonados por seus trabalhos do que muitos formados que ficam estagnados. O segredo profissional é a paixão. Observe a paixão pelo trabalho, se trata o trabalho com carinho, se investe em um bom ambiente, bons livros, bom conhecimento, se está atento a realidade do mercado, fique de olho em tudo sobre esse profissional.

Para não cair nessas armadilhas uma boa dica que eu posso dar é: pergunte-se, será que esse “profissional” já trabalhou em um projeto antes? O que ele fez? Como fez?

Contratar serviços web não é simples e necessita seriedade. Também existem estilos de consultoria ou administração diferenciados, por exemplo, minhas consultorias são feitas em sua grande maioria através de contatos via Internet, procuro assim ser o mais flexível possível para realizar um bom trabalho. Mantenho-me informado e o cliente recebendo as mesmas informações, porém reescritas de uma forma de fácil compreensão. Existem outros que se dão melhor presencialmente, consideram que trabalhar totalmente com Internet não é o ideal. Começam nesses detalhes as características profissionais que quem vai investir tem que se ater para não contratar equivocadamente um serviço em grande parte profissional mas que não lhe agrada em sua forma de agir.

Estilos de trabalho também podem resultar em um melhor aproveitamento do investimento feito.

Na próxima parte irei comentar sobre as formas de contratos mais usadas na hora da contratação de serviços Web.

Até a próxima.

Não esqueça de enviar assuntos para meu e-mail de contato (contato@alpisconsultoria.com), terei prazer em fazer um Artigo sobre o assunto desejado.

Tuesday, December 21, 2010
no image

Os segredos das grandes realizações na Web – Pesquisa On-line (Parte 03)

Leia a parte UM e DOIS da série. Continuação abaixo…

Sites de Busca

Para usá-los com eficácia faça previamente uma relação de palavras chaves sobre seu produto ou mercado. Procure segmentar, procure ser óbvio, pois esse é o momento que você poderá observar a sua concorrência e como ela se posiciona no Marketing Digital de busca orgânica (SEM) e também quais são os sites que linkam ou falam com mais relevância sobre seu concorrente.

Fóruns

Aqui as informações são inúmeras, porém, também são inúmeros os fóruns que tratam do mesmo assunto. Para não ter erros centralize seus esforços em dois ou três que traduzam a realidade esperada nessa pesquisa, quantidade de visitantes, quantidade de discussões sobre o tema da pesquisa e relevância.

Esse momento demanda tempo para uma profunda análise, use o campo de busca que os fóruns tem para agilizar o processo, pesquise sobre sua marca, sobre a concorrência e sobre seu produto ou mercado. Relacione os questionamentos e as respostas do fórum de uma forma que consiga compreender depois. Eu pessoalmente uso planilhas eletrônicas para esse procedimento, e preparo os campos da mesma de uma forma que para mim sejam mais eficazes e que mostrem claramente as respostas que busco sobre as questões que são importantes naquele momento.

Essa planilha poderá servir posteriormente para comparar a eficácia da campanha quando estiver no ar.

Redes Sociais

A febre do momento no mercado Eletrônico. Elas representam uma forma barata e eficaz de Marketing, porém uma forma mais inteligente de pesquisa é o uso inicial dessa ferramenta. Em sua grande maioria tem-se a possibilidade de criar comunidades de perfis que se interessam naquele produto/marca e que internamente falam sobre o mesmo e fazem um pequeno fórum. Da mesma forma que foi feita a pesquisa dos Fóruns você poderá segmentar os resultados em uma planilha para posterior conferência.

Mais lembre-se, foque nas comunidades que tenham mais participantes e relevância em suas discussões.

Blogs

Blogs permitem que haja interatividade entre consumidor e fornecedor, permitem uma melhor compreensão de determinados critérios dos consumidores para concretizar uma compra ou torna-se fiel à causa de sua empresa.

Procure por Blogs do seu mercado de atuação, procure informações sobre ele, verifique sua relevância para os buscadores (Google, Yahoo…) e após isso observe os comentários que se relacionam ao seu produto ou mercado.

O momento em que o lobo se veste de lebre

Comparar o que a concorrência faz e quais as brechas que elas permitem para você atuar faz com que sua campanha possa ser mais agressiva e resulte em sucesso.

Compreenda o que estão fazendo, como reagem às críticas, como atendem às dúvidas e necessidades de seus consumidores, enfim, crie o hábito de ser cliente de sua concorrência. Eu mesmo muitas vezes compro serviços de outros concorrentes para examiná-los e compreender como pensam e como reagem a pressão de um cliente ou do mercado. Esse é o momento em que a pesquisa precisa de um envolvimento pessoal baseado em seus gostos e por que não trazer para esse momento os gostos de seus consumidores e encarnar um personagem criado a partir de todo o resultado das pesquisas anteriores, já que seu concorrente está diretamente ligado a esse perfil de cliente, ele vende para o seu público, nada mais interessante de saber como ele pretende fazer isso ou melhor como ele está fazendo isso.

Achou que para conquistar um mercado era simplesmente entrar no mercado?

Horrível engano meu caro, o mercado é terra minada, parte dessas minas escondidas e posicionadas por seus concorrentes que fizeram mal aos clientes do mesmo mercado que você pretende atuar, tornando os clientes menos sensíveis as práticas de marketing diversas, amedrontados com as más experiências oferecidas por produtos e serviços de baixa qualidade ou pela falta de respeito e ética comercial. Eu sofro muitas vezes com esse tipo de minas plantadas por outros “Consultores” de E-commece, “Gerentes” de Projetos, “Profissionais” de Marketing Digital que no meu ramo de atuação fizeram uma baderna desenfreada dizendo-se especialistas em uma área delicada como essa e trazendo a ilusão de sucesso de um determinado projeto que resultou em perdas financeiras e motivacionais de muitos empreendedores, que por sua vez não mais flexíveis as mudanças que agora sim são necessárias para levantar seus respectivos comércios e empreendimentos.

Vejo muitas lojas Virtuais não alcançarem o resultado esperado ou até conseguirem um certo êxito, porém, estagnadas nesse patamar quando na verdade poderiam chegar mais longe do que estão simplesmente porque quem prestou ou presta consultoria, ou gerencia, ou faz e administra as campanhas de Marketing Digital para esses empreendimentos não possuem realmente um Feeling de mercado, uma carga de experiência diversificada e sequer talento para o mercado em que se propõem prestar serviços.

Não digo aqui que um profissional na área de comércio eletrônico é exatamente aquele profissional de TI, ou Administrador ou quem sabe da área contábil, mas na verdade, o que interessa é qualidade e a capacidade de desenvolver alternativas inteligentes em momentos de crise.

O mercado On-line tem uma característica única que o diferencia das demais formas de comércio: ele cresce e modifica-se em uma velocidade absurdamente incompreensível aos outros modelos de comércio, ele é exclusivamente feito por pessoas e suas opiniões e não por empresas e o que elas falam de si mesmas, esse mercado é apaixonante por ser diferente, por trazer tantos desafios para o dia-a-dia.

A melhor dica desse artigo é – Tenha critérios bem identificáveis para seus clientes, faça-os entender que o respeito é característica essencial de sua marca e que a ética e a paixão acompanham seu empreendimento desde do inicio. Faça-o compreender que você é um bem necessário e que comprometesse em ser uma experiência feliz e saudável – benéfica em sua totalidade.

Quer ser respeitado por seu consumidor? Então o respeite, dessa forma sua marca terá apoiadores gratuitos. A melhor mídia – o boca-a-boca da Web. Perpetue sua marca ou seu produto conscientemente e de forma eficaz através de seus clientes.

Concluimos aqui o primeiro capítulo da série – Os segredos das grandes realizações na Web – Leia a parte UM e DOIS da série para um entendimento completo.

Até a próxima