Este artigo é para você, o empreendedor corajoso com uma ideia de aplicativo em seu coração e um pouco de dinheiro no banco. Os diagramas que você rabiscou em guardanapos de coquetel vão perturbar o mundo inteiro, e caminhões de lixo cheios de dinheiro já foram despachados para sua casa. Para garantir que eles cheguem a tempo, aqui estão alguns conselhos simples para fazer seu ciclo de produção funcionar sem problemas.
“Os programas de computador são as coisas mais complexas que os humanos fazem”, diz Douglas Crockford. Você pode não ter ouvido esse nome antes, mas ele é muito famoso para um programador. Atualmente, ele é arquiteto de software sênior no PayPal e foi o pioneiro em todos os tipos de tecnologias interessantes que estão além do alcance deste artigo. Ele é alguém que sabe muito sobre como trabalhar em grandes projetos.
Quanto a mim, estou programando há 13 anos e, mesmo agora, em algum momento, todo projeto me leva a um território desconhecido. Existem tantas tecnologias diferentes por aí, e novas técnicas estão sendo desenvolvidas em um ritmo tão alarmante que nunca sinto que estou completamente por dentro do que está acontecendo. Embora cada projeto tenha seus desafios únicos, existem algumas constantes:
Claramente, precisamos de uma babá. Alguém deve intervir para estabelecer as regras básicas, manter todos honestos e garantir que não vamos esquecer nada importante. Alguém deve facilitar a comunicação entre todas as partes.
Esse alguém, esse herói, é o gerente de projeto.
O ApeeScape não ofereceu contratos com gerentes de projeto quando comecei a escrever este artigo, mas eles fazem agora . Sinergia! Só posso imaginar que os poderes que leram os seguintes conselhos e perceberam que estavam perdendo uma grande oportunidade.
Certificação pela Instituto de Gerenciamento de Projetos à parte, a coisa mais importante que um gerente de projeto pode trazer para a mesa é a experiência. Como resultado, muitos programadores seriam gerentes de projeto bastante decentes; temos mais experiência com projetos técnicos do que qualquer outra pessoa e nossas mentes analíticas são adeptas a catalogar informações e estabelecer metas concretas.
Deus sabe, você está nos pagando o suficiente, então parece razoável esperar que possamos nos cuidar em vez de forçá-lo a pagar pelo tempo de outra pessoa também, certo?
Bem, para começar, você está nos pagando para codificar.
Quando saímos de nosso atordoamento de programação para tomar decisões sobre o que priorizar ou para discutir sobre o quanto realmente será feito esta semana, o código não está sendo escrito. Em seguida, leva pelo menos 10 minutos para voltar 'à zona', especialmente se estivermos estressados com a conversa que acabamos de ter, o que é provável se estivermos discutindo a prioridade do recurso. Buuuuu, eu sei, mas isso tem a ver com fazer o uso mais eficiente de recursos caros.
Mais importante, nós realmente não podemos ver a floresta por causa das árvores. Se você não tirar mais nada deste artigo, por favor, entenda o seguinte: quando passo o dia todo olhando para alguns insetos específicos, meu cérebro perde o controle da imagem maior.
Meu cérebro me recompensa quando eu conserto esses bugs, e presumo que fiz ótimas coisas e posso jogar videogame agora. Quando alguém me lembra que a página inicial ainda está quebrada, é uma surpresa completa porque eu passei o dia enchendo meu cérebro com um conhecimento muito detalhado de uma pequena parte do projeto geral e meio que esqueci do resto. É assim que meu cérebro funciona, e muitos outros programadores têm uma constituição psicológica semelhante.
Bem, então, se nós, programadores, não queremos assumir a responsabilidade de fazer as coisas de gerenciamento de projeto, então deve cair para você, o cliente. É seu dinheiro. É a sua visão. Você é o responsável final por tudo, de qualquer maneira.
Você, no entanto, também tem muito o que fazer.
Muitos clientes são meros mortais com empregos diurnos como todos nós, e alguns até sofrem de procrastinação ou esquecimento. Embora isso não o descreva necessariamente, especificamente, pense em ter um Lembrador Profissional por perto para que possa voltar ao importante trabalho de manter todo o projeto vivo.
Se você trabalhou ou supervisionou um projeto técnico de escopo semelhante, pode realmente ser um bom gerente para seu projeto. Se ainda não o fez, não subestime o valor de alguém que pode prever os problemas que podem surgir. As estimativas de tempo são sempre apenas estimativas e os bugs tendem a aparecer nos momentos menos oportunos. Vale a pena o custo de outro funcionário (mesmo que apenas em meio período) ter alguém por perto que saiba quais partes do processo precisam, ou provavelmente precisam, de mais atenção.
Veja a garantia de qualidade (QA), por exemplo. O controle de qualidade adequado é essencial para obter o que você deseja de qualquer projeto e nunca recebe a atenção que merece. Um bom gerente de projeto aproveitará ao máximo os recursos limitados de controle de qualidade e também garantirá a qualidade dos seus programadores para você. Às vezes, saímos do nosso fundo e às vezes cometemos erros. Você precisa de uma pessoa tecnicamente proficiente em uma função de supervisão para determinar se o seu programador está apenas tendo um dia ruim ou se ele ou ela é, de fato, uma pessoa inadequada para o projeto. Eliminar problemas de pessoal logo no início pode significar a diferença entre a vida ou a morte do seu projeto.
Por último, mesmo você, cliente, às vezes precisa de um pequeno cheque e / ou saldo. É difícil para mim escrever, pois nós, programadores de computador, não somos muito conhecidos por nossa natureza franca. Basta dizer que trabalhei em muitos projetos em que o cliente era inflexível de que tudo era prioridade máxima e absolutamente tudo o que precisava ser feito. Embora eu não tenha dúvidas de que isso seja absolutamente verdade, esses clientes, infelizmente, não têm controle sobre o número de horas em um dia. Eles não obtiveram o resultado positivo que desejavam e / ou mereciam, e sinto que esse resultado poderia ter sido evitado se o cliente tivesse confiado a um gerente de projeto a autoridade para avaliar a carga de trabalho e com tato, mas com firmeza, manter as coisas sob controle . É difícil fazer o julgamento desapaixonado que a maioria dos projetos técnicos exige quando a ideia é sua e seu dinheiro está em jogo e o computador não se importa se você ou eu chorarmos e gritarmos com ele. (Eu sei que isso é verdade porque eu tentei muitas vezes.)
Se você decidiu ignorar as mil palavras anteriores e gerenciar seu projeto sozinho, ou se vai contratar alguém, mas deseja ter mais conhecimento sobre o processo, esta lista o ajudará. Eu nunca fui (oficialmente) um gerente de projeto, então não posso dizer quais ferramentas um determinado gerente de projeto usaria, mas tive um bom sucesso com todas essas técnicas:
Ao iniciar um novo projeto, a maioria das pessoas sabe intuitivamente que é importante dividir o projeto em partes ligeiramente mais gerenciáveis, com cada parte variando de algumas semanas a alguns meses de trabalho. No início do projeto, é bom ter uma reunião inicial para estabelecer esses marcos. Não há problema em ser um pouco vago sobre como você os alcançará, o mais importante é manter o controle após cada marco para se beneficiar da compreensão aprimorada de todos sobre o projeto e para se certificar de que os marcos do projeto ainda estão ( aproximadamente) do mesmo tamanho que inicialmente se acreditava.
Nós, programadores, detestamos as estimativas porque sabemos que elas estarão erradas e que serão usadas contra nós. Está tudo bem que eles estejam errados porque, por definição, eles são baseados em um punhado de incógnitas. Também está tudo bem que eles sejam usados contra nós porque nosso trabalho é muito confortável e não faz mal ter o chicote estalado de vez em quando.
Portanto, sinta-se à vontade para pedir estimativas sempre que o trabalho começar em um novo marco. Você deve esperar uma linha ou duas para cada recurso principal, juntamente com uma estimativa aproximada de quanto tempo esse recurso levará. Normalmente faço uma estimativa otimista e depois o dobro. Na maioria das vezes, esse tempo extra é responsável por armadilhas invisíveis.
As histórias de usuário são breves descrições de uma única funcionalidade do aplicativo. Eles são úteis como um registro de características importantes e devem ser redondos, caber em uma ficha e muitas vezes acompanhados de um pequeno desenho. Mais importante, eles servem como uma ponte entre o que o cliente deseja e o que o programador tem a dizer ao computador. Eles são simples o suficiente para que você, o cliente, descubra em alguns minutos, mas detalhados o suficiente para que nós, os programadores, possamos cravar nossos dentes.
Para obter algumas informações rápidas sobre histórias de usuários, encontrei esses tutoriais por Software Mountain Goat e Roman Pichler para ser de alta qualidade e sucinto. Para obter mais informações sobre toda a filosofia de gerenciamento ágil de projetos, experimente esta postagem do blog do ApeeScape A introdução definitiva ao gerenciamento ágil de projetos por Paul Barnes.
Este não é um artigo sobre por que você precisa de um designer, porque sinto que a maioria dos clientes já entende isso, mas vale a pena repetir porque você verá enormes ganhos de produtividade se colocar um design concreto e bem pensado na frente de seus programadores. Cada vez que temos que tomar uma decisão de design, temos que deixar “a zona”, e cada vez que temos que voltar e mudar algo porque não nos foi fornecido o rascunho final, bem, você faz as contas ... Eu ' Não estou reclamando, porque design é divertido, mas, pela minha experiência, essa é a fonte número 1 de horas extras faturáveis evitáveis.
A maioria dos designers fornece composições, também conhecidas como composições, em Adobe Photoshop, Adobe Illustrator ou Sketch. Se você está fazendo isso sozinho, pode usar uma das inúmeras ferramentas online, como Balsamiq ou InVision . O comp não precisa ter as mesmas cores e estilos do produto acabado (uma vez que eles podem ser facilmente alterados posteriormente), mas reserve um tempo extra para garantir que todos os elementos da IU estejam presentes e considerados.
Relacionado: Contrate os 3% principais designers UX freelance.Reuniões longas às vezes são inevitáveis, mas você realmente não quer sobrecarregar seus programadores ou tomar mais do seu tempo do que o necessário. Tive clientes que pareciam esperar que eu me lembrasse de tudo o que foi dito durante uma reunião de duas horas e meia; eles ficaram profundamente desapontados. Uma reunião stand-up é geralmente limitada a 15 minutos e é comum ficar de pé durante todo o período. O aspecto em pé deve garantir que todos estão participando, bem como para manter a reunião curta.
Durante os stand-ups, todos andam em círculo para fornecer um breve relatório de status, mantendo todos os membros da equipe atualizados sobre o progresso uns dos outros. Você pode encontrar mais sobre stand-ups em ExtremeProgramming.Org . Se todos vocês trabalham remotamente e não querem ter todo mundo no Skype todos os dias, você pode tentar uma ferramenta divertida como 15Five como uma alternativa aos stand-ups. O 15Five permite que os membros da equipe forneçam sua opinião sempre que for conveniente para eles, e isso os levará a perguntas de pesquisa para obter respostas mais detalhadas.
Embora qualquer pessoa possa manter um sistema de notas adesivas e Google Docs (com as tarefas de todos destacadas em cores diferentes), isso realmente não é necessário; muitas pessoas tentaram resolver esse problema para você. Basecamp e Trello são famosos por sua facilidade de uso, enquanto o Pivotal tenta encapsular toda a filosofia “ágil” em um pacote muito elegante. Seja qual for a sua escolha, um bom sistema de bilhetagem permitirá que você, no mínimo:
Quando um gerente de projeto mostra a você 40 tickets vermelhos brilhantes de alta prioridade, todos com vencimento no mesmo dia, você realmente entenderá o valor dessa visão panorâmica do projeto.
Você pode nem mesmo olhar para o código no sistema de controle de versão do seu projeto, mas o controle de origem (ou controle de versão) é uma das ferramentas mais importantes à nossa disposição, o maior sistema de backup imaginável.
A maioria dos projetos modernos usa Git, embora às vezes você encontre o Subversion (SVN) ao trabalhar em projetos que já existem há algum tempo. O Github permite hospedar repositórios públicos ilimitados gratuitamente (além disso, contém a maioria dos projetos de código aberto do mundo), enquanto o Bitbucket permite hospedar repositórios privados ilimitados e, portanto, é a escolha preferida para projetos comerciais.
Seja qual for o sistema de controle de versão que você escolher, ele armazena nosso código remotamente no caso de algo acontecer, além de rastrear cada vez que “enviamos” código para ele, enquanto nos forçamos a escrever uma pequena mensagem descrevendo no que estávamos trabalhando. Isso evita que diferentes desenvolvedores sobrescrevam o código uns dos outros, nos permite ver todas as mudanças que foram feitas em um determinado período de tempo e nos permite criar novos branches de código para armazenar recursos que não serão disponibilizados imediatamente. Tem até um comando chamado “blame” que mostra quem foi o responsável por uma determinada linha de código e quando ela foi confirmada.
O controle da fonte é o maior.
Esta é uma prática relativamente cara, o que significa que não é frequentemente empregada em projetos onde o orçamento é limitado a alguns freelancers. Então você, como um empreendedor de startups, não deve se sentir tão mal por não fazer isso, mas devo balançar a ideia na sua frente porque ela fornece a defesa definitiva contra bugs. Basicamente, seus programadores gastam horas adicionais preciosas escrevendo testes (pequenos blocos de código) que garantem que certas partes do aplicativo se comportem de maneiras específicas, previsíveis e repetíveis. Por exemplo, posso escrever um teste afirmando que, quando o botão “login” é clicado, um pop-up é aberto com um campo de nome de usuário.
A beleza dos testes é que, depois de escrevê-los, posso executá-los todos com um único comando. Se eu tiver 200 testes escritos, poderei executá-los depois de lançar uma nova versão do aplicativo para ter certeza de que nenhum bug foi introduzido em qualquer um desses 200 recursos. Não é perfeito, mas é o mais perto que podemos chegar de garantir aplicativos livres de bugs (bug-lite, pelo menos).
Isso é tudo que sei sobre gerenciamento de projetos. Não tenho certeza de quanto disso passaria para o Project Management Institute, mas é tudo que eu aprendi trabalhando em projetos da web ao longo da última década. Claro, eu recomendo que você contrate alguém para obter o benefício de sua experiência, mas espero que você considere essas informações úteis, mesmo que não seja algo que você seja capaz de fazer. Você será a autoridade suprema neste projeto; portanto, quanto mais entender sobre seu funcionamento interno, maior será a probabilidade de levá-lo à vitória.