Ter uma ideia de software ou serviço que seja util e necessario para as pessoas e que talvez possa ser lucrativo para você ou a organização para qual você trabalha é um grande passo, no entanto foi-se o tempo em que idéia sem implementação valia alguma coisa (se é que isso ja teve valor um dia). Transformar um conceito em software exige uma serie de fatores que podem determinar a viabilidade ou não do produto.
O foco desta conversa são os primeiros passos e como se sai de uma ideia e se chega a algo tangível, seja um protótipo ou o produto final, na verdade são os passos que usamos para gerar nossos produtos, sejam nossos ou de clientes e gostaríamos de compartilhar um pouco dessa “metodologia”. Talvez aqui você encontre muito do Getting Real da 37Signals, nós mesmos nos surpreendemos de quanto temos em comum quando conhecemos o livro. e adaptamos alguns conceitos para a nossa realidade.
Simples
Saber o que você quer/precisa é essencial, ter conhecimento do negócio é indispensável para ser objetivo, então com a ideia em mente pense simples, qual a maneira mais simples de executar um processo, de criar uma interface, de exibir um grupo de informações, pense em como você gostaria que isso fosse disposto se você fosse o usuário (e muitas vezes será). Mantenha-se simples, você vai perceber que a simplicidade é sua maior aliada para desenvolver software rápido, usável e fácil de crescer, num curto período de tempo.
Expresse-se
Tendo o mind map da aplicação em mente é hora de mostrar aos outros, faça protótipos toscos, papel e caneta são suas melhores ferrametas, esqueça a maquina, transmita seus pensamentos e conceito mental de software para o papel, esboçe as telas, formularios e relatórios.
Revise seus esboços, se não gostou refaça, papel aceita tudo e é fácil de mudar, só prossiga quando achar que suas telas em papel refletem exatamente o que quer passar com o software. Estes papéis servem de base para as telas, caso seja uma demonstração interna (para a sua equipe) pode usar os esboços mesmo, caso tenha de apresentar para o cliente pode desenhar um wireframe mais detalhado ou até os protótipos HTML para o cliente ver.
Não invista muito nessa fase pois os requisitos podem mudar e você acaba jogando tempo fora, seja o mais simples possível nessa fase, ser simples não quer dizer incompleto, tenha o minimo de funcionalidades para sua aplicação ser usável e útil.
Escolha certo
Parece óbvio, ninguém quer fazer escolhas erradas, mas o ponto aqui é que de um tempo pra cá a onda é “se preocupe com os problemas quando eles acontecerem”, concordo plenamente e seguimos esta linha, no entanto ao se “startar” o desenvolvimento de uma aplicação já podemos ter uma ideia do quão grande ela será ou não, se exigira processamento pesado ou não, ou seja, do consumo de recursos necessários quando sua aplicação escalar entre ordens de grandeza. Tendo isso em vista é possível se ter ideia de qual tecnologia/ferramenta pode ser “escalável” o suficiente para adiar o problema, mudanças de estrutura e tecnologia não são fáceis e devem ser evitadas, mas se tudo der certo será um ótimo problema a se ter..
Mostre logo
Seja um produto seu ou uma aplicação de clientes, jogue aberto e mostre logo o que tem pronto, seja funcionalidade a funcionalidade ou em pacotes deixe as pessoas ver o que você esta fazendo assim que a app esteja usável e apresentável. Mostre qualidade, só torne publica uma tela ou funcionalidade que esteja pronta, testada e funcionando plenamente, as pessoas ficam frustadas ao verem telas de erro, isso faz com que seu produto fique desacreditado, bugs existem, mas devem ser minimizados ao máximo.
Ver a evolução de uma aplicação gera expectativa e isso é bom para a adoção do produto, as pessoas começarão a promove-lo e quando tiver uma versão final ou completa as pessoas já estarão familiarizadas com ela.
Espalhe
Se você esta construindo um produto é porque voce acredita nele, então deixe isso claro para as pessoas, explique o que tem de diferente no seu produto e porque as pessoas deveriam usa-lo.
Desfrute dos benefícios de blogs e redes sociais, quando pessoas veem alguem falando bem de algo elas querem conferir, se você conseguir que as pessoas usem seu produto e falem dele, então saberá que esta no caminho certo.
Aprenda
Aprenda com os feedback das pessoas, elas vão lhe dizer o que esta bom e o que não esta e principalmente o que elas gostariam, mas cuidado, de um simples to-do list pode sair um CRM ou ERP, defina e limite seu produto, não tente agradar a todos, se uma funcionalidade é importante os pedidos vão ser constantes, ai sim vale a pena pensar se realmente essa funcionalidade agregaria valor ao seu produto.
Não desista
Se seu software não deu certo, se as pessoas não usam ou seu concorrente é melhor, não desanime, pelo menos você usa seu produto e você conseguiu um problema que tinha.
Reveja seu produto e tenha a certeza que foi isso mesmo que você idealizou e que não se desviou no caminho, se for necessário adapte seu produto para suprir as necessidades que julgar importante e lembre-se que software é dinâmico e mutável (com raras exceções), diferentemente de um prédio você não precisa destruí-lo e recriar em outro lugar. Se você acredita no que faz um dia as coisas acontecem.

Rails é produtivo, divertido, tem muitos dos recursos que necessito pra agilizar o projeto, então o quedevo fazer? Ora … ora, um “Rails em PHP“, eis que estudando e pesquisando chego a conclusão que o
Estamos começando a atualizar nossas aplicações para Rails 3 e começamos enfrentando alguns problemas e erros ao instala-lo, coisas simples mas que pode acabar atrapalhando a vida dos mais novos em Rails, decidimos instalar um ambiente Rails 3 do zero (usando o Mint Linux – bastante compativel com Ubuntu e Debian em geral) para podermos identificar estes problemas e tentar ajudar a resolve-los, vamos começar instalando o Ruby (1.8.7, versão estavel até o momento).