Quais são as principais diferenças entre administradores de banco de dados e engenheiros de software? Até que ponto um Engenheiro de Software deve conhecer os detalhes do banco de dados subjacente? Onde está a fronteira entre essas duas profissões?
Quais são as principais diferenças entre administradores de banco de dados e engenheiros de software? Até que ponto um Engenheiro de Software deve conhecer os detalhes do banco de dados subjacente? Onde está a fronteira entre essas duas profissões?
Depende inteiramente da divisão do trabalho em uma organização e da responsabilidade de cada pessoa. Mas são apenas rótulos; alguém intitulado 'engenheiro de software' em uma empresa pode ser 'programador/analista' em outra empresa ou mesmo 'programador de sistemas', etc. Não há fronteira rígida entre os dois.
Onde eu trabalho, o 'engenheiro de software' tende a ser a pessoa que faz o design e a implementação real, e não temos ninguém com o título de 'DBA'; As tarefas do tipo de manutenção que normalmente seriam de um DBA recaem sobre os 'administradores de sistema' gerais, com base na orientação que o 'engenheiro de software' lhes deu.
No que eu pessoalmente acho que é o melhor cenário, você dividiria o design em várias partes:
E então as tarefas do tipo manutenção:
Para a maioria deles, eles não precisam ser feitos por um DBA; isso pode ser feito por um engenheiro de software ou, no caso de algumas das tarefas de manutenção, por um administrador do sistema.
Se você tiver pessoas em ambas as funções, poderá fazer com que contribuam e colaborem com o design e o ajuste (o que eles chamam de construção 'design-build') ou, se for um trabalho urgente, você pode atribuir as várias tarefas entre os dois. Você também pode ter outras pessoas envolvidas: um 'arquiteto de software', 'arquiteto de dados', um arquivista, vários programadores, administradores de sistema, administradores de rede, segurança, etc.
Matemática. Estou tentado a deixar por isso mesmo, mas sei que sem explicação, serei criticado, então aqui vai.
Na minha experiência, a matemática do DBA é diferente da matemática do engenheiro.
A matemática do DBA envolve o impacto na capacidade que uma implantação terá. Por exemplo, nós, como DBAs, examinamos a implantação de uma tabela quanto ao espaço por milhão de linhas que ela consumirá no disco, quais consultas ideais executar nela, estratégias de indexação, etc.
A matemática do engenheiro será baseada na notação Big-O. Um engenheiro examinará os algoritmos e como otimizá-los. O impacto downstream (planejamento de capacidade) é uma preocupação secundária para a eficiência do aplicativo. No entanto, se a capacidade for um requisito inicial, ela receberá o escrutínio adequado.
Alguns de nós desempenham as duas funções e, portanto, criamos um nicho como desenvolvedor de dba de aplicativos corporativos.
BTW: por favor, leve isso com um grão de sal, porque é apenas minha opinião.
"Engenheiros de Software" ou "DBA" são títulos. Em vez de perguntar: quem eu vou "SE" ou "DBA"?, pergunte apenas: "devo aprender C# ou java ou oracle ou sql server para atingir meus objetivos". Você já viu "precisamos apenas de DBA"? Não :) (exceto alguns casos estranhos de RH). Você pode ver: "queríamos XX, que conhece e tem experiência nessas tecnologias."