Como os gerentes escolhem linguagens de programação

23

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. ?

Engenheiro Mundial
fonte
Lembre-se sempre de que um gerente é alguém que acredita que nove mulheres podem dar à luz um bebê em um mês!
minusSeven

Respostas:

29

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:

  • Relacionamento estratégico com fornecedores específicos. Se sua empresa é um Microsoft Gold Partner (ou como ele é chamado agora), boa sorte é entrar com Java ou Python;
  • O departamento de TI discutindo uma configuração específica porque o dinheiro para os PCs sai do seu orçamento;
  • A TI decide que todos devem executar o Windows 2000 porque não têm pessoas executando o Linux;
  • Quais outros sistemas a empresa já possui (por exemplo, se eles usam Java para todo o resto, faz sentido usá-lo para isso, embora por si só possa não ser a melhor escolha);
  • Aversão ao risco para diferentes plataformas ou idiomas simplesmente por falta de experiência;
  • Mais interessado em discutir riscos com a alta gerência do que fazer os desenvolvedores felizes;
  • Alguns gerentes tomam as decisões que tomam simplesmente porque estão com as mãos atadas;
  • Razões orçamentárias, embora isso possa funcionar a seu favor também, pois mantém ocultos caros fora de sua casa, como o PVCS, qualquer coisa produzida pelo Rational, etc;
  • Aversão do departamento jurídico a licenças de código aberto;
  • Não envolver a equipe técnica no planejamento e estimativa de projetos;
  • Familiaridade da parte do gerente com uma plataforma específica (o pessoal técnico também é culpado disso, mas em ambos os casos não é necessariamente uma coisa ruim - com muitas ferramentas que podem fazer o trabalho melhor do diabo que você conhece).
  • Experiência da equipe técnica. Se eles são todos de background em C #, por que eles usariam Java, Python ou Ruby?
  • Muitas outras razõ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
Resposta muito boa e detalhada!
1
"caras caras saem de sua casa como PVCS, qualquer coisa produzida pela Rational". Hah! Engraçado porque é verdade;)
Rig
Minha empresa é parceira do Microsoft Gold, mas usamos QUALQUER COISA que precisamos razoavelmente. Você precisa apresentar o seu caso e lutar por ela, mas tudo é possível para as pessoas inteligentes
Budda
16

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
Por que os votos negativos?
2
Votei negativamente porque você não respondeu à minha pergunta. Você acabou de dizer um monte de generalidades. Exceto a última frase, que pode ser vista como uma resposta. Mas é praticamente inútil.
14

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:

  • Político
    • "Ninguém foi demitido por comprar a IBM" - escolha segura.
    • CEO ouviu que Java é legal - hype.
    • O arquiteto-chefe adora o projeto .NET - pet.
    • O idioma é controlado por um concorrente hostil - por que o Google não depende de C #.
  • Econômico
    • Custos de licenciamento.
    • Custo do treinamento do desenvolvedor.
    • Custos de migração da base de código.
  • Social
    • Buy-in da equipe.
    • Disponibilidade de habilidades em casa (necessidades de treinamento, continuidade).
    • Disponibilidade de habilidades no mercado.
    • Ameaça ao status quo existente na equipe de desenvolvimento.
    • Disponibilidade de comunidade de prática suficientemente grande.
  • Tecnológica
    • Aumento de produtividade.
    • Melhoria da qualidade.
    • Capacidade de interoperar com a base de código existente.
    • Adesão aos padrões.
    • Maturidade.
  • Legal
    • Termos de licenciamento.
    • Controle de tecnologia (quem é o proprietário e controla a tecnologia? Qual é a provável estratégia futura de licenciamento?)
    • Conformidade legal e regulamentar.
  • De Meio Ambiente
    • Infraestrutura existente na empresa.
    • Habilidades existentes na empresa.
    • Integração com parceiros externos.
    • Nível de suporte tecnológico por um ambiente mais amplo.

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:

  1. A plataforma atual não é mais adequada.
  2. Uma nova plataforma promete benefícios que superam de longe os problemas.

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".

Vlad Gudim
fonte
5

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.

Spikolynn
fonte
Que empresa é essa?
3

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
1
Você levanta alguns pontos interessantes, mas está errado em encontrar desenvolvedores Haskell. A maioria das pessoas que programa em Haskell não o fazem em um trabalho, mas eles querem (e eles são geralmente muito inteligente)
1
Eu sei que eles são inteligentes :) Mas isso significa que eles não farão trabalho de apoio, porque é chato ou você teria que pagar muito. É como o COBOL, na verdade, você poderia encontrar uma pessoa que o conhecesse, mas teria que gastar muito tempo procurando e pagando mais do que pagaria por qualquer outro cara.
Não, você não conheceria bem mais de 300 desenvolvedores de Haskell que trabalhariam nos mesmos empregos que agora, por um salário consideravelmente menor do que estão recebendo agora apenas para trabalhar em Haskell.
Rayne
2

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;

"Podemos aceitar duas responsabilidades diferentes aqui: se seguirmos por esse caminho, podemos entregar isso rapidamente e atendermos muito bem às demandas de negócios e isso é um pouco mais difícil. Também poderíamos fazê-lo dessa maneira e isso dará a essas demandas de negócios o trunfo A alternativa A exige esses recursos e a alternativa B significa que também precisamos fazer isso e isso ... "

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
Muito interessante.
1

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
Ou são suas próprias habilidades de comunicação que falharam e você deve procurar aperfeiçoá-las.
Existe isso também.
1

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
2
A programação, na maioria das vezes, não é uma competência essencial para os gerentes.
Bem, presumivelmente, é uma competência essencial do negócio ou departamento de uma maneira muito diferente da discussão sobre o Quickbooks.
Eu não posso seguir. Você está comparando maçãs com laranjas?
Por que o voto negativo? Eu apenas apontei sua lógica defeituosa. No que diz respeito a maçãs e laranjas, acho que maconha encontra chaleira. O que Joel estava falando sobre o Quickbooks da Wrt é muito diferente do que os gerentes que estão escolhendo o Java.
1

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 é).

Treb
fonte
1

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. :)

Rayne
fonte
Ponto interessante. Mas acho que o ônus da prova deve recair sobre a pessoa que impõe o idioma, e não vice-versa.
Em um mundo de cauda de fadas, talvez.
Rayne
1

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 ):

As linguagens de programação são escolhidas principalmente por razões comerciais. Passo a maior parte do tempo trabalhando com idiomas que realmente não gosto, porque os idiomas com os quais gostaria de trabalhar trazem desvantagens comerciais que superam seus méritos técnicos. Essa é a natureza do jogo. Posso aceitar a situação (minha escolha) ou encontrar um novo empregador. Reclamar sobre como não posso usar Java ou Python ou qualquer outra coisa no trabalho simplesmente não é uma opção.

Peter Štibraný
fonte
Eu concordo aqui. Mas também acho importante observar que, dadas as duas funções Business e Tech, a Tech terá as informações mais importantes sobre qual idioma / estrutura atenderá às demandas dos negócios. Os fatos raramente têm o conhecimento técnico necessário.
1

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!

Sam
fonte
Criar arte usando pastéis versus tintas a óleo seria uma analogia melhor. No entanto, os prós e os contras ainda estão no lado comercial - mesmo que o artista prefira tintas a óleo, o projeto pode exigir materiais baratos / pode exigir menos tempo de preparação / pode exigir mais longevidade para esse cliente / etc. Dito isto, o artista deve ter contribuído para essa escolha, mas ele ou ela deve perceber que o ônus da persuasão e da prova está em seus ombros.
lunchmeat317
0

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 .exearquivo 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.

Quassnoi
fonte
Metaforicamente falando, o equivalente à torradeira do que estou falando é sobre gerenciamento que exige que a documentação interna seja escrita em espanhol, porque há mais pessoas que falam espanhol na Terra.
Exatamente. Se os montadores de torradeiras de língua espanhola estiverem mais disponíveis no mercado de trabalho, é claro que a documentação deve estar em espanhol.
0

Na minha experiência, sempre dependeu de:

  1. Temos os recursos para usar o idioma?
  2. Temos os recursos para manter o idioma?
  3. Se não temos os recursos para usar e manter o idioma, é difícil / dispendioso obter esses recursos?
  4. Qual é o "futuro" do idioma (ele será usado por um tempo?)

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