Ontem tive uma discussão com um dos meus colegas. Ele (analista de negócios, anteriormente programador) acha que deve estar ciente da tecnologia usada para implementar o sistema, para que possa tomar melhores decisões de design. Na minha opinião (eu sou um programador), uma análise não deve ser acoplada de forma alguma à tecnologia e acredito que um bom analista pode criar um ótimo design sem se preocupar com os detalhes da implementação.
Estou certo em pensar assim? Existem razões pelas quais um analista de negócios precisaria conhecer a tecnologia usada para implementar o sistema?
EDIT: Acredito que usei o termo errado ao dizer business analyst
. Talvez eu quis dizer arquiteto ou analista de sistemas. Não estou acostumado a esses termos. Eu quis dizer algo como arquiteto ou analista de sistemas, se você preferir.
Obrigado a todos por suas respostas impressionantes! Ainda não sou muito experiente e estou feliz que você tenha aberto meus olhos para isso.
fonte
Respostas:
Certamente há casos em que faz sentido para um analista de negócios entender a tecnologia pelo menos o suficiente para entender onde faz sentido questionar um usuário de negócios sobre a importância de um determinado recurso. Por exemplo, se a empresa estiver acostumada ao comportamento de um aplicativo cliente gordo enquanto o novo aplicativo for baseado na Web, é provável que existam muitos "requisitos" que seriam triviais em um cliente gordo, mas relativamente difíceis com um aplicativo baseado na Web. Se o analista de negócios entender se uma solicitação da empresa será trivial para a equipe de desenvolvimento ou se envolverá 20 horas de desenvolvimento do AJAX,
Para qualquer projeto, é provável que haja um grande número de conjuntos de requisitos que, na realidade, satisfizessem os negócios fazendo vários tipos de trocas. Quanto mais o analista de negócios entender sobre quais trocas eles estão fazendo, maior a probabilidade de entregar um conjunto de requisitos que maximiza o benefício para os negócios e minimiza o custo.
fonte
Tendo trabalhado nos dois lados desta questão, tenho que concordar com o analista. Vi alguns projetos espetacularmente ruins, resultantes da falta de entendimento dos recursos da tecnologia. Em alguns casos, isso foi resultado de tomar o hype do marketing como verdade. Em geral, o problema tem gerado especificações que não correspondem às capacidades técnicas.
O analista deve especificar o que precisa ser feito, quando e por quem. Eles devem saber por que está sendo feito. A prioridade do desenvolvimento deve ser mais dependente do Por que do que dos outros fatores. A equipe de design e desenvolvimento precisa lidar com o Como. Para desenvolver sistemas econômicos, os analistas precisam especificar o que precisa ser feito em termos que não ultrapassem os limites da tecnologia disponível.
Ultrapassar os limites pode aumentar os custos de várias maneiras, mas em alguns casos pode ter um retorno significativo. Alguns dos fatores de custo são:
fonte
Se a tecnologia que será usada for conhecida, ela deverá ser levada em consideração pelos analistas ao criar o design. Diferentes tecnologias fazem as coisas de maneira diferente e um design que não leva em conta essas diferenças terá problemas.
No entanto, os analistas de negócios não devem se preocupar com a tecnologia usada, o trabalho deles é reunir regras de negócios e torná-las compreensíveis para a equipe técnica. Os analistas de sistemas / arquitetos / designers ou qualquer outro nome que eles possam receber devem conhecer as tecnologias que estão sendo usadas e o design em torno delas, porque devem ser as que estão realizando o design real, não os analistas de negócios.
fonte
Acredito que há um ponto entre as duas linhas de pensamento que provavelmente é mais realista. Embora um design de alto nível possa ser melhor quando mantido independente da tecnologia, deve-se considerar as restrições e requisitos conhecidos do mundo real que devem ser incorporados ao design. Que nível é esse design? Você tem requisitos suficientes? Quão flexível é o ambiente? A gerência investe em uma direção técnica específica?
Não existem parâmetros operacionais que o direcionem em uma direção específica? Você tem uma ampla variedade de recursos capazes de implementar uma solução em qualquer pilha de tecnologia? Existem problemas de interoperabilidade que exigem acesso a outros sistemas?
São necessárias respostas para essas perguntas antes que você possa dizer definitivamente se a tecnologia deve fazer parte da equação ou se o design deve orientar a seleção da tecnologia.
Não havendo restrições e sendo um design de nível muito alto, posso concordar com o seu pensamento de que o design seja verdadeiramente independente. No entanto, nos meus mais de 20 anos de experiência, raramente estive em uma situação em que não houvesse restrições que limitassem minhas escolhas - e que levassem meu projeto a tecnologias ou famílias de tecnologias específicas.
fonte
A interface de usuário ideal seria onde o usuário pensa um pensamento, e o que eles queriam fazer é simplesmente feito. Tudo isso é prejudicado pelas limitações tecnológicas que temos à nossa disposição; portanto, é claro que o BA precisa entender em que contexto ele pode projetar o sistema.
fonte
Diferentes tecnologias podem ter estruturas de custo e eficiência muito diferentes para resolver um determinado problema. Esses custos podem incluir itens como custos de contratação na área local, custos de energia e refrigeração para sistemas específicos, código existente e possibilidades de reutilização de equipamentos existentes etc. etc. Então, sim, talvez seja possível ignorar essas restrições e detalhes de tecnologias específicas se alguém estiver trabalhando em um projeto em que custo e eficiência não sejam nem de longe tão importantes quanto outras considerações (como segurança da aviação, controle de usinas nucleares, implantes médicos, etc.). Mas para a maioria das situações de negócios, o gerenciamento pode se preocupar com a estrutura de custos das soluções em potencial versus os benefícios da implementação do sistema.
fonte
O analista de negócios deve saber que tipo de aplicativo estamos desenvolvendo, como * Aplicativo da Web / Aplicativo de console / Aplicativo móvel / Aplicativo de relatórios etc *, para que ela possa criar um bom conjunto de recursos para o aplicativo ou pressionar o usuário novamente em expectativas impossíveis, como arrastar e soltar aninhados no terceiro nível (por exemplo).
Ele / ela não precisa estar ciente de qual tecnologia como Java / C # / Python / SQL etc.
fonte
O processo de análise em si precisa ser totalmente independente da tecnologia. Quando você está pesquisando sobre o cliente e suas necessidades, precisa fazê-lo com uma mente completamente aberta. O outro lado da moeda, no entanto, é que muitas vezes o analista é solicitado a fornecer recomendações e também pode ser necessário para lidar com a arquitetura do sistema. Essa é uma faceta totalmente diferente do papel no qual uma compreensão mais ampla das tecnologias disponíveis é crucial, pois pode fazer uma enorme diferença para o cliente, não apenas em termos da capacidade de iniciar um projeto, mas também em termos das necessidades de longo prazo do cliente e da sustentabilidade do próprio projeto.
Embora seja verdade que a maior parte do design de software é essencialmente a mesma, independentemente da tecnologia usada, sempre há áreas em que o design será influenciado pela escolha da tecnologia. As escolhas de plataforma podem influenciar as opções de idioma e API, enquanto a disponibilidade de conhecimento, suporte e até custo também terão impacto nas escolhas feitas. Portanto, de uma perspectiva, parte da sua posição é justificada, pois a análise real deve ser realizada sem a influência de qualquer tecnologia específica; no entanto, o uso da análise para determinar um projeto sempre exigirá um conhecimento mais amplo da tecnologia, para que o analista possa fazer recomendações. o que permitirá a aplicação de projetos destinados a atender às necessidades do cliente.
fonte
Cada tecnologia tem limites e restrições, portanto, faz algum sentido para um analista considerar esses limites. Por outro lado, um analista que conhece bem o .net, mas não vê Java desde o final dos anos 90, provavelmente criará uma solução .net - usando terminologia .net e padrões de design - mesmo se Java (ou RoR etc.) se ajustaria melhor ao problema. É relativamente difícil implementar esse design em outra tecnologia posteriormente.
Portanto, acho que um analista deve ser agnóstico quando a tecnologia ainda não foi selecionada, mas experiente nos casos em que a escolha já foi feita.
fonte