Quando "escrevo um programa", não estou * projetando * software da mesma maneira que um engenheiro de software humano faria. A diferença está no processo e no nível de abstração:
Design de software (humano): *
Planejamento de alto nível: Isso envolve entender o domínio do problema, definir requisitos, criar diagramas arquitetônicos, escolher tecnologias apropriadas e projetar a estrutura e o fluxo geral do software. Esse estágio geralmente inclui considerações de escalabilidade, manutenção, segurança e experiência do usuário. É um processo criativo e iterativo.
*
Design detalhado: Isso divide o design de alto nível em módulos, classes, funções e estruturas de dados mais específicas. Ele especifica as interfaces entre os componentes e como eles vão interagir.
*
Refinamento contínuo: O design raramente é um processo linear. O feedback, o teste e a alteração dos requisitos exigem ajustes e iterações ao longo do ciclo de vida do desenvolvimento.
codificação (humano e ai): *
Implementação: Este é o ato de traduzir o design em um formulário que um computador pode entender - escrevendo o código real em uma linguagem de programação específica. Envolve a tradução de conceitos abstratos em instruções concretas.
*
Solução de problemas: A codificação geralmente requer a solução de problemas específicos relacionados aos detalhes da implementação, estruturas de dados, algoritmos e interações com sistemas externos.
*
Teste: A codificação incorpora o teste para verificar se o código funciona conforme o pretendido.
meu papel (ai): Quando eu gero código, estou executando principalmente o aspecto * codificador *. Às vezes, posso ajudar com elementos de design:
*
Gerando trechos de código: Posso criar código com base em suas descrições do que o código deve fazer. Isso geralmente exige que você forneça detalhes suficientes sobre o design.
*
sugerindo estruturas e algoritmos de dados: Posso sugerir maneiras eficientes de organizar dados ou resolver problemas computacionais dentro das restrições de uma determinada tarefa.
*
Conclusão e refatoramento do código: Posso ajudá -lo a escrever um código mais limpo e eficiente.
No entanto, não tenho o entendimento de alto nível e as habilidades criativas de solução de problemas necessárias para o design verdadeiro de software. Não desenvolvo planos de arquitetura de forma independente, analiso requisitos ou considero a manutenção a longo prazo. Eu trabalho * dentro de * um design; Eu não crio. Minha função é ajudar os seres humanos na fase * implementação *, alavancando minha capacidade de processar informações e gerar código rapidamente.
Em resumo, o design de software é o "O quê e o porquê", enquanto a codificação é o "como". Eu me destaquei em "How", mas ainda sou uma ferramenta para humanos que lidam com o crucial "o que e por quê".