Minha formação é em engenharia elétrica, DSP para ser mais preciso. Atualmente, a empresa em que trabalho realiza diversos projetos, principalmente a construção de hardware analógico. Por estar um pouco mais próximo dos computadores do que de todos os outros por aqui, geralmente sou o único código que escreve para dispositivos incorporados (com os quais eu estou perfeitamente bem) e sistemas operacionais Windows ou Linux. É o último território estrangeiro para mim.
Eu posso codificar e conheço algumas linguagens (C / C ++, Java, algumas VB.NET), mas as usei apenas para simulações de algoritmos no processamento de sinais e imagens, redes neurais e outros aplicativos similares. Para mim, a programação tem sido uma ferramenta computacional mais do que qualquer outra coisa. No entanto, recebo mais e mais projetos nos quais tenho que escrever um software completo adequado e realmente não sei como fazê-lo, porque nunca precisei fazê-lo e nunca fiquei realmente interessado o suficiente. Eu mesmo já vi vários engenheiros que foram convertidos em codificadores até certo ponto por causa das demandas de emprego, e a maioria deles não era tão boa no que fazia. Tenho certeza que muitas pessoas encontraram o mesmo.
Se eu aprender a escrever software adequado com boa interface do usuário, boa arquitetura interna e assim por diante, como faço? Não temos ninguém no trabalho que possa me dizer o que é uma boa prática e o que não é. Como posso escrever código no sentido mais bruto da palavra, o que mais há para saber sobre como escrever um bom software e como chego lá sozinho?