Não é segredo para ninguém que os gerentes podem e frequentemente imporão a linguagem de programação que será usada para um projeto.
Sendo um programador, nunca fui capaz de entender isso.
Mas agora acho que sim: acabei de receber uma revelação quando Joel Spolsky disse no podcast que eles deveriam usar o QuickBooks porque "todo contador do mundo sabe disso". Isso me pareceu muito semelhante ao "escolheu o Java porque todo programador no mundo sabe disso".
Agora que vi o mesmo problema de outra perspectiva, não sei muito sobre contabilidade, mas sei alguma coisa sobre programação, estou me perguntando como um programador pode ajudar a garantir que a linguagem de programação correta seja escolhida para um projeto. ?
language-agnostic
project-management
management
strategy
Engenheiro Mundial
fonte
fonte
Respostas:
O erro que muitos programadores cometem é que eles discutirão o ponto (ou simplesmente concordarão ou discordarão) com base apenas no mérito técnico. Com a gerência - e os negócios como um todo - você precisa discutir o caso de negócios e os méritos do negócio em primeiro lugar e os méritos técnicos em segundo.
Isso vai além da escolha da linguagem de programação e penetra praticamente todas as decisões técnicas.
Deixe-me dar um exemplo: PCs. Joel argumenta (corretamente) que os desenvolvedores devem ter máquinas de primeira linha porque o tempo do desenvolvedor é caro. Nisso ele está completamente certo. Mas como você argumenta isso? Simples:
Exemplo: eu construo o código aproximadamente 20 vezes por dia. Cada vez que leva 3 minutos. Se eu tivesse um PC rápido, poderia construí-lo em 1,5 minutos. Portanto, por US $ 1.000 extras a cada dois anos, posso obter meia hora extra por dia, o que para um programador ganha US $ 100k (com custos adicionais de pelo menos 50%), o que equivale a aproximadamente US $ 10.000 por ano.
Mas, no outro extremo, argumenta-se que o RH decide um tamanho único para políticas e PCs, de modo que um funcionário de call center ganha US $ 25 mil e um programador ganha quatro vezes que, por algum motivo, deveria ter o mesmo PC.
A plataforma e os idiomas da tecnologia terão muitos fatores envolvidos na combinação de decisões:
Seja qual for o caso, você precisa entender o motivo (e garanto que haverá vários motivos) e argumentar méritos nesses termos. Alguns programadores são bastante ingênuos neste departamento e parecem pensar que essas decisões são tomadas por ignorância ou até vingança, quando quase sempre há muitos fatores em jogo.
fonte
Pelo que pareço na minha empresa: quando os gerentes escolhem uma linguagem de programação, geralmente o fazem de maneira muito conservadora - levando em consideração que tipo de habilidades de programação estão atualmente disponíveis na equipe (e se seria fácil contratar outras facilmente) ), seja uma linguagem bem estabelecida, tentando escolher algo que se encaixe na infraestrutura atual e não cause grandes esforços para se encaixar no que já existe. Quando os programadores escolhem uma linguagem de programação, as coisas geralmente tendem a ser um pouco diferentes - elas geralmente gostam de ter um novo desafio e gostariam de receber as últimas tendências quentes e escolher algo onde possam aprender coisas novas.
Idealmente, tudo se resume a discutir os prós e contras entre o gerente e a equipe de desenvolvimento e encontrar a solução que melhor se adapta ao problema. Isso geralmente envolve muita conversa e convencimento :-)
fonte
Resposta tardia, mas como ainda não há resposta aceita, tentarei. Tomo isso como duas perguntas e tentarei respondê-las separadamente:
Como os gerentes escolhem as linguagens de programação?
Depende muito do tamanho da experiência da organização e do gerente, mas geralmente envolve a avaliação da situação atual e dos cenários e requisitos futuros. Isso geralmente é feito por meio de PESTLE ou análise semelhante, e apenas para fornecer algumas amostras em cada categoria:
Em seguida, vários idiomas que atendem aos critérios podem ser avaliados ainda mais usando SWOT , análise de custo- benefício ou similar.
Todo o processo pode ser bastante complexo, mas, como resultado, a maioria das empresas ou equipes de projetos buscará a opção mais segura, dadas as circunstâncias atuais, que ainda podem oferecer os recursos necessários. Muitas vezes, pode significar aderir à plataforma atual por mais tempo.
Como um programador pode ajudar a garantir que a linguagem de programação correta seja escolhida para um projeto
Como foi demonstrado, espero, que um programador típico normalmente teria apenas 1/6 da entrada total no processo de tomada de decisão. E, como regra, ela ou ele estaria principalmente interessado apenas nas capacidades linguísticas!
Bem, a melhor maneira de influenciar a decisão parece ter uma visão mais ampla do processo de seleção, formar aliados dentro e fora da equipe, criar um bom resumo do lado tecnológico das coisas e tentar não se concentrar apenas nas capacidades linguísticas.
E, é claro, é preciso entrar na posição quando um gerente de projeto ou desenvolvimento (ou qualquer outro responsável) vê os benefícios de passar por todo o processo de avaliação e está preparado para considerar os riscos e incertezas de mudar para um diferente idioma em primeiro lugar. Para que isso aconteça, é necessário demonstrar que:
No entanto, se você tivesse perguntado "Qual é a melhor maneira de poder usar no trabalho o idioma que eu gosto", a resposta provavelmente seria "ingressar em uma empresa que já usa o idioma ou inicia o seu próprio".
fonte
O gerente A vai para um retiro de verão, onde conhece o gerente B.
A: Então, qual idioma você usa na sua empresa? B: Ah, como usamos o CA Visual Objects, os drones são muito mais produtivos que o COBOL.
E foi assim que a decisão foi tomada. Fim da história verdadeira.
fonte
Toda plataforma tem lados bons e ruins. O .NET é legal e poderoso, mas você fica preso nos servidores Windows. Ruby é legal, mas lento. Seria difícil encontrar desenvolvedores para Haskell.
O ponto é que a linguagem afeta não a rapidez com que o projeto será realizado e quão belo será o código, mas também aqueles itens que os gerentes se preocupam. Portanto, se você quiser influenciá-los, deve agora preferir as preferências e encontrar o máximo de lados positivos possível na perspectiva deles.
fonte
Separando preocupações. Os negócios devem ser responsáveis pelas decisões de negócios e a tecnologia responsável pelas decisões de tecnologia. Eu gosto do termo "responsabilidade aceita". Para aceitar a responsabilidade, também exijo que eu faça as escolhas que dizem respeito ao meu domínio do problema. Os negócios fornecem a mim e aos meus colegas de tecnologia as demandas dos negócios e respondemos com uma ou duas alternativas de como podemos aceitar a responsabilidade de entregar. Nunca deve ser como "faremos isso em Python ou C #". Em vez;
Em seguida, as empresas escolhem, mas observe que as empresas escolhem com base no impacto nas coisas comerciais, não nas técnicas. E eles não conseguem escolher entre alternativas onde a tecnologia não está pronta para aceitar a responsabilidade da parte da tecnologia.
fonte
Torne-se o gerente. (sorri)
Sério, você só precisa discutir o assunto com o tomador de decisão em questão e apresentar seus argumentos. Se eles optarem por tomar uma decisão realmente errada, sua competência geral provavelmente não é tão boa e pode valer a pena procurar outra coisa para fazer.
fonte
Acho que a diferença entre o que você está falando e o que Joel estava falando é que a programação é uma competência essencial, enquanto a contabilidade não. O ponto de usar o Quickbooks é, presumivelmente, porque você não é contador e os contadores podem ajudá-lo. No entanto, se a programação é sua principal competência e, presumivelmente, se você é um programador, as regras do jogo são um pouco diferentes.
fonte
Depende muito da personalidade do gerente:
Existem aqueles que usam buzzwords. Apenas descubra quais palavras-chave eles gostam e use quando você falar com ele em conjunto com o idioma que deseja usar.
Outros confiarão apenas em coisas que conhecem (como o VB 6.0, por exemplo). Torne seu idioma de escolha fácil de entender para eles ('você sabe, é como no bom e velho VB' - mesmo se você estiver falando sobre Haskell ...)
Mas, na realidade, a maioria dos gerentes não é tão estúpida quanto gostamos de pensar, e eles podem ser justificados. O importante aqui é que você entenda o ponto de vista deles: eles geralmente não se preocupam com detalhes técnicos específicos, eles se preocupam com resultados. Portanto, não diga a eles que .net ou Java ou Delphi ou o que quer que tenha esse recurso fantástico do megacool. Diga a eles que (digite seu idioma aqui) é uma boa opção, pois o recurso A reduz o tempo de desenvolvimento de um projeto como esse, ou o recurso B reduz o número de erros e reduz o tempo necessário para o teste. Apenas certifique-se de que seu argumento seja sólido, não minta para ele.
Em outras palavras: trate-o como um ser inteligente (ele provavelmente é).
fonte
Pense no idioma que você está sendo solicitado a usar muito, muito difícil. Certifique-se de saber que não é um bom idioma para o trabalho e pergunte ao gerente se você pode sugerir outro idioma melhor para o trabalho. Forneça qualquer informação possível que prove que o idioma não seria bom para o trabalho e veja o que ele diz. Não pode doer. :)
fonte
A escolha da linguagem de programação geralmente é uma decisão de negócios. Clientes / usuários não se importam. Aqui está uma citação curta (de http://www.ericsink.com/bos/Geeks_Rule.html ):
fonte
Antes de tudo, programar é outra forma de arte. Uma forma de arte muito lógica. Se o seu gerente estiver interessado em seus projetos de software extraordinários, que são, em certa medida, obras de obra-prima, peça ao gerente interessado o seguinte:
Quanto tempo e energia custaria a Rembrandt extra para não pintar com seu pincel favorito, mas um pincel que, após cuidadosa consideração da equipe administrativa, é entregue a ele, há 400 anos e antes de seus trabalhos se tornarem famosos. Você acha que a pintura dele vale mais ou menos?
Da mesma forma, se você estiver dizendo a um programador qual idioma deve ser usado, seja consistente e também informe ao pintor quais tamanhos de pincel devem ser usados! OU, como alternativa, deixe essa opção para as pessoas que precisam trabalhar com ela todos os dias e (como a maioria das obras-primas) à noite!
fonte
Estes são conceitos diferentes.
Na contabilidade, você compartilha seus resultados: impostos, leis, investidores, etc. Eles precisam de uma ferramenta para ver o resultado do seu trabalho, e essa ferramenta deve ser bem conhecida.
Ao programar, você usa qualquer ferramenta que desejar - desde que emita um
.exe
arquivo que possa ser executado no Windows. É exatamente o mesmo que um documento legível do Quick Books em caso de contabilidade.Portanto, se você desenvolver uma torradeira, poderá manter sua documentação interna em chinês, mas é melhor fornecer um manual em inglês.
Há mais uma coisa: se as regras da sua empresa assumirem que o resultado do seu código não é um produto em si, mas um código-fonte para ele, com certeza elas poderão decidir como será (escolhendo o idioma que desejam).
O que eles escolhem depende de seus objetivos: se eles querem programadores facilmente substituíveis, eles escolhem Java; se o enviarem para outro departamento, será a exigência desse departamento etc.
fonte
Na minha experiência, sempre dependeu de:
A menos que o projeto precise de algo que apenas uma linguagem / plataforma / tecnologia / estrutura específica forneça o que já sabemos e usamos. A contratação de novas pessoas e o treinamento de programadores existentes é bastante caro para a maioria das empresas. Ao contratar, sempre consideramos o idioma e garantimos que os candidatos saibam que idioma (s) provavelmente usarão.
Espero que você tenha um programador que também seja um gerente e que possa representar programadores nesses tipos de decisões. Caso contrário, essa é uma situação perigosa e você deve conversar com seu gerente se souber que uma decisão está sendo tomada.
fonte