Ciência e Tecnologia

Um guia prático para escrever especificações técnicas

Diminui as chances de algo dar terrivelmente errado durante a implementação e mesmo depois de lançar seu produto.

Como engenheiro de software, seu principal papel é resolver problemas técnicos. Seu primeiro impulso pode ser imediatamente saltar direto para o código de escrita. Mas isso pode ser uma péssima ideia se você não pensou na sua solução.

Você pode pensar através de problemas técnicos difíceis escrevendo uma especificação técnica. Escrever um pode ser frustrante se você se sentir como se não fosse um bom escritor. Você pode até pensar que é uma tarefa desnecessária. Mas escrever uma especificação técnica aumenta as chances de ter um projeto, serviço ou recurso bem-sucedido com o que todas as partes interessadas envolvidas estão satisfeitas. Diminui as chances de algo dar terrivelmente errado durante a implementação e mesmo depois de lançar seu produto.

Neste artigo, vou te acompanhar como escrever uma especificação técnica que garanta um produto forte.

 

O que é um documento de especificação técnica?

 

Um documento de especificação técnica descreve como você vai resolver um problema técnico projetando e construindo uma solução para ele. Às vezes também é referido como um documento de design técnico, um documento de design de software ou um documento de projeto de engenharia. Muitas vezes é escrito pelo engenheiro que construirá a solução ou será a pessoa pontual durante a implementação, mas para projetos maiores, ela pode ser escrita por leads técnicos, leads de projeto ou engenheiros seniores. Esses documentos mostram à equipe do engenheiro e a outros stakeholders qual será o projeto, o trabalho envolvido, o impacto e o cronograma de um recurso, projeto, programa ou serviço.

 

Por que escrever uma especificação técnica é importante?

 

As especificações técnicas têm imensos benefícios para todos os envolvidos em um projeto: os engenheiros que as escrevem, as equipes que as utilizam, até mesmo os projetos que são projetados a partir deles. Aqui estão algumas razões pelas quais você deve escrever um.

 

Benefícios para engenheiros

 

Ao escrever uma especificação técnica, os engenheiros são forçados a examinar um problema antes de ir direto para o código, onde eles podem ignorar algum aspecto da solução. Quando você quebra, organiza e cronometra todo o trabalho que você terá que fazer durante a implementação, você tem uma visão melhor do escopo da solução. As especificações técnicas, por serem uma visão minuciosa da solução proposta, também servem de documentação para o projeto, tanto para a fase de implementação quanto posteriormente, para comunicar suas realizações sobre o projeto.

Com esta solução bem pensada, sua especificação técnica o salva de explicar repetidamente seu design para vários colegas de equipe e partes interessadas. Mas ninguém é perfeito. seus pares e engenheiros mais experientes podem mostrar-lhe coisas novas a partir deles sobre design, novas tecnologias, práticas de engenharia, soluções alternativas, etc. que você pode não ter se deparado ou pensado antes. Eles podem pegar casos excepcionais da solução que você pode ter negligenciado, reduzindo sua responsabilidade. Quanto mais olhos você tiver em sua especificação, melhor.

 

Benefícios para uma equipe

 

Uma especificação técnica é uma maneira simples e eficiente de comunicar ideias de design de projetos entre uma equipe e outras partes interessadas. Toda a equipe pode resolver um problema de forma colaborativa e criar uma solução. À medida que mais colegas de equipe e partes interessadas contribuem para uma especificação, isso os torna mais investidos no projeto e os incentiva a assumir a propriedade e a responsabilidade por ele. Com todos na mesma página, limita complicações que podem surgir de trabalhos sobrepostos. Colegas mais novos que não estão familiarizados com o projeto podem embarcar e contribuir para a implementação mais cedo.

 

Benefícios para um projeto

 

Investir em uma especificação técnica resulta, em última análise, em um produto superior. Como a equipe está alinhada e de acordo com o que precisa ser feito através da especificação, grandes projetos podem progredir mais rápido. Uma especificação é essencial para gerenciar a complexidade e prevenir o escopo e o arrepio de recursos, estabelecendo limites de projeto. Ele estabelece prioridades, garantindo que apenas as partes mais impactantes e urgentes de um projeto saiam primeiro.

Após a implementação, ajuda a resolver problemas que surgiram dentro do projeto, além de fornecer insights em retrospectivas e postmortems. As melhores especificações planejadas servem como um grande guia para medir o sucesso e o retorno sobre o investimento do tempo de engenharia.

 

O que fazer antes de escrever uma especificação técnica

 

Reúna as informações existentes no domínio do problema antes de começar. Leia sobre quaisquer requisitos de produto/recurso que a equipe do produto tenha produzido, bem como requisitos/padrões técnicos associados ao projeto. Com esse conhecimento da história do problema, tente afirmar o problema em detalhes e pensar em todos os tipos de soluções que você possa pensar que possam resolvê-lo. Escolha a solução mais razoável de todas as opções que você criou.

Lembre-se que você não está sozinho nesta tarefa. Pergunte a um engenheiro experiente que tenha conhecimento sobre o problema para ser sua placa de som. Convide-os para uma reunião e explique o problema e a solução que você escolheu. Desça suas ideias e processo de pensamento e tente convencê-los de que sua solução é a mais apropriada. Reúna seus feedbacks e peça que eles sejam revisores de sua especificação técnica.

Finalmente, é hora de realmente escrever a especificação. Bloqueie o tempo em seu calendário para escrever o primeiro rascunho da especificação técnica. Use um editor de documentos colaborativo ao que toda a sua equipe tem acesso. Obtenha um modelo de especificação técnica (veja abaixo) e escreva um rascunho bruto.

Conteúdo de uma especificação técnica

 

 

Há uma ampla gama de problemas sendo resolvidos por um grande número de empresas hoje. Cada organização é distinta e cria sua própria cultura de engenharia única. Como resultado, as especificações técnicas podem não ser padrão mesmo dentro de empresas, divisões, equipes e até mesmo entre engenheiros da mesma equipe. Cada solução tem necessidades diferentes e você deve adaptar sua especificação técnica com base no projeto. Você não precisa incluir todas as seções mencionadas abaixo. Selecione as seções que funcionam para o seu design e desista do resto.

 

 

 

Pela minha experiência, há sete partes essenciais de uma especificação técnica: matéria de frente, introdução, soluções, considerações adicionais, avaliação de sucesso, trabalho, deliberação e matéria final.

 

 

 

1. Matéria frontal

 

 

 

Título

 

Autor(s)

 

Equipe

 

Revisores

 

Criado em

 

Última atualização

 

Link de referência épico, ticket, edição ou rastreador de tarefas

 

2. Introdução

 

 

 

a. Visão geral, Descrição do problema, resumo ou resumo

 

 

 

Resumo do problema (da perspectiva do usuário), do contexto, da solução sugerida e das partes interessadas.

 

B. Glossário ou Terminologia

 

 

 

Novos termos que você se depara ao pesquisar seu design ou termos que você pode suspeitar que seus leitores/partes interessadas não saibam.

 

c. Contexto ou Fundo

 

 

 

Razões pelas quais o problema vale a pena resolver

 

Origem do problema

 

Como o problema afeta usuários e metas da empresa

 

Esforços passados feitos para resolver a solução e por que eles não eram eficazes

 

Como o produto se relaciona com metas da equipe, OKRs

 

Como a solução se encaixa no roteiro e estratégia geral do produto

 

Como a solução se encaixa na estratégia técnica

 

d. Metas ou Requisitos De Produto e Técnico

 

 

 

Requisitos do produto na forma de histórias de usuários

 

Requisitos técnicos

 

e. Não-Objetivos ou Fora de Escopo

 

 

 

Requisitos técnicos e de produtos que serão desconsiderados

 

f. Metas futuras

 

 

 

Requisitos técnicos e de produtos programados para um tempo futuro

 

G. Suposições

 

 

 

Condições e recursos que precisam estar presentes e acessíveis para que a solução funcione como descrito.

 

 

 

3. Soluções

 

 

 

a. Solução atual ou existente / Design

 

Descrição atual da solução

 

Prós e contras da solução atual

 

B. Solução /Design sugerido ou proposto

 

 

 

Componentes externos com os quais a solução interagirá e que ela irá alterar

 

Dependências da solução atual

 

Prós e contras da solução proposta

 

Mudanças no modelo de dados / esquema

 

Definições de esquema

 

Novos modelos de dados

 

Modelos de dados modificados

 

Métodos de validação de dados

 

Lógica empresarial

 

Alterações da API

 

Pseudocódigo

 

Fluxogramas

 

Estados de erro

 

Cenários de falha

 

Condições que levam a erros e falhas

 

Limitações

 

Camada de apresentação

 

Requisitos do usuário

 

Mudanças de UX

 

Alterações na interface do usuário

 

Wireframes com descrições

 

Links para o trabalho do designer UI/UX

 

Preocupações móveis

 

Preocupações com a Web

 

Estados de interface do usuário

 

Manipulação de erros

 

Outras perguntas a responder

 

Como a solução vai dimensionar?

 

What are the limitations of the solution?

 

Como ele vai se recuperar em caso de falha?

 

Como ele vai lidar com os requisitos futuros?

 

c. Plano de Teste

 

 

 

Explicações de como os testes garantirão que os requisitos do usuário sejam atendidos

 

Testes unitários

 

Testes de integrações

 

Qa

 

d. Plano de Monitoramento e Alerta

 

 

 

Plano de registro e ferramentas

 

Plano de monitoramento e ferramentas

 

Métricas a serem usadas para medir a saúde

 

Como garantir a observância

 

Plano de alerta e ferramentas

 

e. Plano de Lançamento / Implantação e Implantação

 

 

 

Arquitetura de implantação

 

Ambientes de implantação

 

Plano de implantação em fases, por exemplo, usando bandeiras de recursos

 

Planeje como comunicar alterações aos usuários, por exemplo, com notas de lançamento

 

f. Plano de reversão

 

 

 

Passivos detalhados e específicos

 

Plano para reduzir passivos

 

Planeje como evitar que outros componentes, serviços e sistemas sejam afetados

 

g. Soluções Alternativas / Projetos

 

 

 

Instrução de resumo curto para cada solução alternativa

 

Prós e contras para cada alternativa

 

Razões pelas quais cada solução não poderia funcionar

 

Formas em que as alternativas eram inferiores à solução proposta

 

Plano de migração para a próxima melhor alternativa caso a solução proposta caia

 

4. Outras Considerações

 

 

 

Um. Impacto em outras equipes

 

 

 

Como isso vai aumentar o trabalho de outras pessoas?

 

B. Considerações de serviços e plataformas de terceiros

 

 

 

Vale mesmo a pena em comparação com a construção do serviço em casa?

 

Quais são algumas das preocupações de segurança e privacidade associadas aos serviços/plataformas?

 

Quanto vai custar?

 

Como vai escalar?

 

Que possíveis questões futuras estão previstas?

 

 

 

c. Análise de custos

 

 

 

Qual é o custo para executar a solução por dia?

 

Quanto custa para distribuá-lo?

 

d. Considerações de segurança

 

 

 

Quais são as ameaças em potencial?

 

Como eles serão mitigados?

 

Como a solução afetará a segurança de outros componentes, serviços e sistemas?

 

e. Considerações de privacidade

 

 

 

A solução segue as leis locais e as políticas legais sobre privacidade de dados?

 

Como a solução protege a privacidade de dados dos usuários?

 

Quais são algumas das trocas entre personalização e privacidade na solução?

 

F. Considerações regionais

 

 

 

Qual é o impacto da internacionalização e da localização na solução?

 

Quais são os problemas de latência?

 

Quais são as preocupações legais?

 

Qual é o estado de disponibilidade de serviços?

 

Como a transferência de dados entre as regiões será alcançada e quais são as preocupações aqui?

 

G. Considerações de acessibilidade

 

 

 

Quão acessível é a solução?

 

Quais ferramentas você usará para avaliar sua acessibilidade?

 

H. Considerações operacionais

 

 

 

Essa solução causa efeitos adversos posteriores?

 

Como os dados serão recuperados em caso de falha?

 

Como a solução se recuperará em caso de falha?

 

Como os custos operacionais serão mantidos baixos enquanto entregam maior valor aos usuários?

 

i. Riscos

 

 

 

Quais os riscos que estão sendo empreendidos com essa solução?

 

Há riscos que uma vez tomados não podem ser levados de volta?

 

Qual é a análise custo-benefício de assumir esses riscos?

 

J. Considerações de suporte

 

 

 

Como a equipe de suporte vai passar informações aos usuários sobre problemas comuns que eles podem enfrentar enquanto interagem com as mudanças?

 

Como garantir que os usuários estejam satisfeitos com a solução e possam interagir com ela com suporte mínimo?

 

Quem é o responsável pela manutenção da solução?

 

Como será realizada a transferência de conhecimento se o proprietário do projeto não estiver disponível?

 

B. Métricas

 

 

 

Lista de métricas para capturar

 

Ferramentas para capturar e medir métricas

 

6. Trabalho

 

 

 

Um. Estimativas de trabalho e cronogramas

 

 

 

Lista de tarefas específicas, mensuráveis e com tempo

 

Recursos necessários para concluir cada tarefa

 

Estimativas de tempo para quanto tempo cada tarefa precisa ser concluída

 

B. Priorização

 

 

 

Categorização das tarefas por urgência e impacto

 

c. Marcos

 

 

 

Postos de controle datados quando partes significativas do trabalho terão sido concluídas

 

Métricas para indicar a passagem do marco

 

d. Trabalho futuro

 

 

 

Lista de tarefas que serão concluídas no futuro

 

7. Deliberação

 

 

 

Um. Discussão

 

 

 

Elementos da solução que os membros da equipe não concordam e precisam ser mais debatidos para chegar a um consenso.

 

b. Perguntas abertas

 

 

 

Perguntas sobre coisas que você não sabe as respostas ou não tem certeza de que você posa para a equipe e as partes interessadas para sua contribuição. Estes podem incluir aspectos do problema que você ainda não sabe como resolver.

 

8. Matéria final

 

 

 

a. Trabalho relacionado

 

 

 

Qualquer trabalho externo à solução proposta que seja semelhante a ela de alguma forma e é trabalhado por diferentes equipes. É importante saber disso para permitir o compartilhamento de conhecimento entre essas equipes diante de problemas relacionados.

 

B. Referências

 

 

 

Links para documentos e recursos que você usou ao criar seu design e deseja creditar.

 

c. Reconhecimentos

 

 

 

Creditar pessoas que contribuíram para o projeto que você deseja reconhecer.

 

Depois de escrever sua especificação técnica

 

Agora que você tem uma especificação escrita, é hora de refiná-la. Revise seu rascunho como se fosse um revisor independente. Pergunte a si mesmo quais partes do design não estão claras e você está incerto sobre. Modifique seu rascunho para incluir esses problemas. Revise o rascunho uma segunda vez como se você tivesse a tarefa de implementar o projeto apenas com base apenas na especificação técnica. Certifique-se de que a especificação é uma diretriz de implementação clara o suficiente em que a equipe pode trabalhar se você não estiver disponível. Se você tem dúvidas sobre a solução e gostaria de testá-la apenas para ter certeza de que funciona, crie um protótipo simples para provar seu conceito.

 

Quando você analisar minuciosamente, envie o rascunho para sua equipe e as partes interessadas. Dirija-se a todos os comentários, perguntas e sugestões o mais rápido possível. Estabeleça prazos para fazer isso para cada questão. Agendar reuniões para falar sobre questões sobre as que a equipe está dividida ou está tendo discussões extraordinariamente longas sobre o documento. Se a equipe não concordar com um problema, mesmo depois de ter reuniões presenciais para avogo-los, faça a chamada final sobre ele como o dinheiro pára com você. Solicite engenheiros em diferentes equipes para revisar sua especificação para que você possa obter uma perspectiva de um estranho que irá melhorar a forma como ele se depara com as partes interessadas que não fazem parte da equipe. Atualize o documento com quaisquer alterações no projeto, cronograma, estimativas de trabalho, escopo, etc. mesmo durante a implementação.

 

Conclusão

 

Escrever especificações de teste pode ser uma maneira impactante de garantir que seu projeto será bem sucedido. Um pouco de planejamento e um pouco de previsão podem tornar a implementação real de um projeto muito mais fácil.

Mostrar mais

Artigos relacionados

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo