Se a concorrência está usando 'lingua obscura' para o desenvolvimento (por que) eu deveria estar preocupado? [fechadas]


16

Eu estava lendo o ensaio de Paul Graham - Beating The Averages (2003) e aqui está o que ele tinha a dizer:

Quanto mais as descrições de cargo tivessem um sabor de TI, menos perigosa seria a empresa. O tipo mais seguro era o que queria a experiência do Oracle. Você nunca teve que se preocupar com isso. Você também estava seguro se dissessem que queriam desenvolvedores de C ++ ou Java. Se eles quisessem programadores Perl ou Python, isso seria um pouco assustador - isso está começando a parecer uma empresa em que o lado técnico, pelo menos, é administrado por hackers reais

Agora, este é um ensaio datado. No entanto, não vejo como o uso de uma linguagem não comum (C / C ++ / Java, C #) seria 'menos perigoso' . Se os programadores de uma organização são muito fluentes com a linguagem de desenvolvimento, devem ser igualmente hábeis em criar código em um ritmo decente. De fato, se você usar uma linguagem não comum, os problemas de manutenção / aprimoramento não serão afetados, pois não há muitos programadores disponíveis a longo prazo?

Por fazer sistemas quick-n-dirty, eu concordo, que alguns idiomas permitem que você decole relativamente mais cedo que outros. Mas o ensaio / comentário de Paul Graham faz sentido em 2012 e além? Se uma startup usava linguagens de TI típicas para o desenvolvimento, por que sua concorrência deveria ser menos preocupada?

Não vejo como a própria linguagem faz a diferença. IMHO são os desenvolvedores que experimentam a linguagem que importa e a disponibilidade de estruturas para que você SEJA (não se repita) não apenas codificando em uma linguagem específica.

O que estou perdendo? Isso implica que as startups escolhem melhor linguagens que não são de TI (mesmo que os desenvolvedores possam ser extremamente adeptas a elas)? Quais são as forças econômicas / de mercado (de programação) por trás dessa alegação?

PS: 'lingua obscura' não é para ferir os sentimentos de ninguém :)


4
A diferença entre as línguas das mercadorias e as línguas do poder ainda é gigantesca. Ainda é possível superar o ritmo de desenvolvimento Java ou similar com, digamos, Lisp em ordens de magnitude.
SK-logic,

4
@ SK-logic - algum dado para fazer backup disso?
PhD

2
@ Nupul, quase não há pesquisas formais sobre produtividade de linguagens de programação, então só posso confiar em evidências anedóticas e em minha própria experiência. Eu vi apenas alguns papéis, vou tentar desenterrá-los mais tarde. Quanto ao Lisp, especificamente, ele é diferente dos outros idiomas de uma maneira que pode ser transformado literalmente em qualquer idioma de maneira barata e fácil. Por isso, combina todas as propriedades e vantagens de todas as outras linguagens, enquanto as linguagens sem poder são fixas e estreitas. Isso pode explicar a diferença de produtividade.
SK-logic,

8
@ SK-lógica realmente? Apesar dos argumentos contrários do LISPers, o fato é que pouquíssimos programas de valor foram criados usando um Lisp - com a possível exclusão do Emacs - e quase nenhum site importante - com a exclusão da ViaWeb por volta de 1997. Portanto, apesar das reivindicações de um aumento incrível da produtividade, a maioria dos advogados do LISP é totalmente faladora e sem andar. Eles têm apenas material de pesquisa acadêmica (mais em pesquisa e menos em qualidade de produção), projetos de hobby e algumas coisas internas usadas em algumas empresas.
26412 Hejazzman

2
@ SK-logic O problema é a falta de digitação estática, apesar da sua capacidade de implementar uma linguagem de tipo estaticamente no lisp.
benjaminb

Respostas:


16

A cadeia de ferramentas é um sintoma.

Quando uma empresa escolhe o Oracle, isso é uma indicação de:

  • Muito dinheiro para jogar
  • Grande corporação
  • Estrutura organizacional profundamente aninhada com muitas camadas de gerenciamento
  • A empresa é administrada por 'processos': tipos executivos ou marketing e vendas
  • Produz grandes produtos de software monolíticos com bases de código gigantescas
  • Processos formais para tudo

Quando uma empresa escolhe Python, isso é um sinal de:

  • Pequena empresa jovem
  • Sem dinheiro de sobra
  • Hierarquia plana
  • A empresa é administrada por programadores
  • Produz pequenos produtos de uso único com pequenas bases de código
  • Processos principalmente informais

Quando esses dois se encontram, a estratégia da grande corporação é evitar riscos, usar seu ímpeto e vender mais do que o concorrente. A estratégia da pequena concorrência é vencer a concorrência no mercado e depois continuar sendo o produto superior. Se a pequena empresa escolhe as batalhas certas, ela pode facilmente superar a grande empresa simplesmente sendo mais rápida e mais reativa e aproveitando a tendência da grande empresa para evitar riscos.


1
A empresa que usa o Oracle provavelmente ainda estará lá em cinco anos!
James Anderson

3
@ JamesAnderson: dependendo do mercado, sim. Se eles estão tentando se tornar o próximo facebook, provavelmente não; se eles são uma grande companhia de seguros, provavelmente sim. Mas então, se você é uma grande companhia de seguros, uma startup de garagem dificilmente é algo que você precisa temer.
tdammers

Parece que eu quero trabalhar em uma loja Python / Ruby / Scala / Clojure ... mmm. Dada a minha experiência, os lugares que pagaram as despesas tendem a demorar muito a atualizar. Não sei por que. A dor de avançar uma versão é geralmente mais suave do que mover várias versões. O software pago "geralmente" oferece migração, mas essa migração geralmente é de versão para versão, na maioria dos casos.
Rig

25

A escolha de um idioma obscuro indicaria autoconfiança técnica incomum em uma startup. Uma empresa disposta a abandonar o senso comum pode saber algo sobre desenvolvimento de software que a maioria das empresas não conhece. Então, novamente, eles podem ser apenas idiotas.


1
Na verdade, é exatamente isso que Graham quer dizer com " que está começando a parecer uma empresa em que o lado técnico, pelo menos, é administrado por hackers de verdade " - uma empresa em que pelo menos os tecnólogos podem ser inteligentes o suficiente para ser uma verdadeira concorrência para ele.
Ross Patterson

8
Hoje em dia, na maior parte das vezes, é mais idiota, porque "escolher uma linguagem obscura" é a moda do dia entre idiotas e diletantes.
Hejazzman

2
Também indica que a empresa está voltada para o interior e focada em "como construir", em vez de "o que construir". Essas empresas não atraem muitos clientes.
James Anderson

13

Eu vejo os comentários do PG mais sobre atitude do que especificidades da linguagem. Pessoas com uma mentalidade de TI interna são seguras. Eles usam tecnologias de baixo risco, possuem processos para minimizar o risco e adotar a estratégia de baixo risco. Eles estão ocupados demais se preocupando com o próprio almoço para comer o seu.

Pessoas preocupadas (python 2003) são aquelas com que se preocupar. Eles estão famintos. Eles assumem riscos. Eles são intelectualmente curiosos. O mesmo tipo de pessoa que fica acordada até tarde aprendendo um novo idioma empolgante é o tipo que pode prejudicar seu setor antes de você.


4
Claro que pode também ter engolido inteiro por um daqueles riscos que levou ...
Michael Borgwardt

3
"" "As pessoas que estão no limite (python 2003) são as que mais se preocupam. Elas estão com fome. Elas correm riscos. São intelectualmente curiosas." "" - ou são vítimas da moda usando a linguagem da moda mais recente e têm sem contato com a pragmática do desenvolvimento.
Hejazzman

2
Ambos verdadeiros. É um jogo de números. Mas tome o extremo oposto. Às vezes, os outliers explodem. Às vezes eles conseguem. Mas você temeria que um concorrente o seguisse com a COBOL?
MathAttack

13

Graham significa menos perigoso para ele como competidor, não apenas menos perigoso. Seu argumento não é que Java (ou C ++ em 2003 ou COBOL em 1980) seja menos perigoso, mas sim que seja normal e que haja uma boa probabilidade de que as empresas que buscam essas habilidades sejam apenas concorrentes médios. Mas as empresas que buscam forte talento em idiomas obscuros (ou, mais corretamente, com maior potência e menos conhecidas) são empresas a serem observadas.

E sim, faz todo sentido hoje. Fazia muito sentido muito antes de Graham escrever, simplesmente não falávamos sobre Java naqueles dias.


6
Se ao menos não tivéssemos que falar sobre Java hoje em dia.
23412 DeadMG

8

Vamos ver quais idiomas foram usados ​​pela primeira vez por startups de sucesso. Uma lista não científica, em cima da minha cabeça. A pesquisa aleatória apropriada seria melhor se alguém tivesse energia.

  • Facebook: PHP
  • Stackexchange: C #
  • Google: Java e Python
  • Twitter: Ruby nos Rails

Portanto, presumivelmente, concluímos que o Facebook e o Stackexchange não representavam ameaça aos seus concorrentes. Não é muito convincente.


Vamos ver se Paul Graham acredita nisso hoje em dia. Ele foi co-fundador da YCominator, que financia startups. A página inicial lista algumas de suas startups de sucesso. Eu os examinei em ordem, tentando rapidamente pesquisar os idiomas que eles usavam nos primeiros dias.

Bem, há alguns sinais de preferência por linguagens relativamente obscuras e sem dúvida poderosas. Mas Flash, PHP e ASP clássico também estão listados.


É um ensaio . É um impulso hiperbólico para uma linguagem relativamente obscura que ele ama, com conselhos subjacentes de que as startups devem amar sua tecnologia e se mover o mais rápido possível. Justo.


3
O Reddit começou no Lisp, mas eles reescreveram tudo em Python logo no início, porque ninguém conseguia entender o Lisp.
Mason Wheeler

O Google usa muitos idiomas para muitas coisas diferentes. Eles usam C ++ para a maioria de seus principais produtos como a busca, cromo, etc.
mike30

@ Mike A questão é sobre startups. Quando o Google era uma startup, os primeiros idiomas usados ​​eram Java e Python.
MarkJ

6

Um desenvolvedor comum usa ferramentas comuns, porque não vê o valor das mais poderosas:

“Enquanto nosso hipotético programador Blub estiver olhando para baixo, ele sabe que está olhando para baixo. Idiomas menos poderosos que o Blub são obviamente menos poderosos, porque faltam alguns recursos aos quais ele está acostumado. Mas quando nosso hipotético programador Blub olha na outra direção, no continuum de poder, ele não percebe que está olhando para cima. O que ele vê são apenas línguas estranhas. Ele provavelmente os considera equivalentes em poder a Blub, mas com todas essas outras coisas peludas também. Blub é bom o suficiente para ele, porque ele pensa em Blub. ”- Paul Graham, batendo as médias .

(Ênfase minha.)

Quanto mais poderosa a linguagem, menos desenvolvedores a usarão e menos comum será. A popularidade é, portanto, uma boa métrica de quão longe o poder de um idioma está da média. Quanto mais obscura a linguagem, maior a chance de o desenvolvedor usá-la saber o que está fazendo, e a escolheu por um bom motivo em comparação com seus pares comuns - e um concorrente experiente é perigoso.


3
Isso não é necessariamente verdade. Ferramentas, publicidade, bibliotecas existentes e materiais de ensino de qualidade também podem mudar a popularidade de um idioma.
DeadMG

@DeadMG Bem, sim, é claro que o poder expressivo não é o único fator. Acho que assumi o tácito pressuposto de que todos os idiomas da consciência comum são praticamente iguais em termos de marketing, ferramentas e documentação; caso contrário, eles não seriam razoavelmente comparados. Inferno, até a preferência pessoal tem muito a ver com isso. Se você sabe que Haskell é melhor para alguma tarefa, mas você realmente gosta de C, então você pode codificar algo em C para o máximo.
26412 Jon Purdy

Acho que assumi o tácito de que todos os idiomas do senso comum são praticamente iguais em termos de marketing, ferramentas e documentação ... - E você estaria errado em fazê-lo. Muito errado, de fato.
Jim G.

1
@JimG. Você poderia oferecer um exemplo específico? Considerando o índice TIOBE, todos os 10 principais e a maioria dos 50 principais parecem comparáveis ​​nessas áreas. Além disso, as pessoas estão bem ao fazer comparações de recursos entre idiomas que são muito diferentes em poder expressivo; então, por que não fazer o mesmo nos outros aspectos?
31412 Jon Purdy

5

A escolha do idioma é difícil para uma startup. Muitas startups muito boas escolhem idiomas "comuns" para agilizar o acesso ao mercado, familiarizar o fundador e facilitar a contratação futura.

Escolher o idioma menos usado gera bons sinais. Ele diz que você está preparado para levar o desenvolvimento a sério e se esforça para contratar programadores especializados. Esses são apenas sinais, porém, uma startup é mais do que apenas escolhe o idioma.

Bottom line é a sua escolha no idioma deve ser avaliada adequadamente em seu contexto. O Facebook, por exemplo, aprovou o php, que geralmente não é considerado uma linguagem muito escalável


1
+1 se apenas pelo eufemismo "Facebook fez OK".
23412 MarkJ

5

Vá perguntar aos melhores e piores programadores que você conhece, por qualquer critério que você goste, que outros idiomas eles conhecem. Agora escreva um anúncio de emprego para atrair o primeiro e você terá sua resposta. Mesmo se seu aplicativo estiver em C ++, você terá uma melhor classe de programadores se contratar pessoas que conhecem idiomas que não são ensinados na escola.


2
-1: Hein? Desculpe, você me perdeu.
Jim G.

4

Há duas coisas diferentes com as quais você deve se preocupar se um concorrente estiver usando um idioma incomum:

  • Vantagem da produtividade - Existem prós e contras de idiomas incomuns, mas, supondo que a concorrência tenha escolhido bem para o domínio do problema, eles podem ter uma vantagem de produtividade genuína. Os recursos de metaprogramação no Lisps, por exemplo, provavelmente oferecerão uma vantagem real e substancial em qualquer lugar em que você precise realizar uma quantidade significativa de geração automática de código on-the-fly.
  • Vantagem cultural - se uma empresa usa uma linguagem incomum de interesse para grandes hackers, provavelmente está em posição de atrair e reter grandes hackers. As empresas vivem e morrem pela qualidade de seu pessoal; portanto, se isso se traduz em uma vantagem de talento a longo prazo, pode ser realmente significativo.

Ambas as vantagens podem não se aplicar a qualquer situação. Por exemplo, uma startup pode adotar facilmente uma linguagem "porque é legal" sem realmente pensar se é a escolha certa. Eles podem facilmente cometer erros de contratação. Eles podem facilmente dar um tiro no pé, abusando de uma linguagem "poderosa".

Mas se um concorrente escolhe um idioma incomum e o usa bem, então sim, você pode ter uma ameaça significativa em suas mãos.

Eu acho que esse princípio é bastante atemporal e é tão verdadeiro agora como era em 2003 - idiomas e paradigmas específicos podem ir e vir, mas a idéia de escolher uma linguagem poderosa e expressiva que se adapte ao domínio do problema em vez de uma linguagem genérica, segura e de uso geral provavelmente sempre merece alguma consideração séria.


0

Se seus clientes não estiverem presos, sim . Você deve estar preocupado com os concorrentes usando linguagens poderosas.

Java, C #, C ++, são comparativamente detalhados e possuem ciclos de edição / teste relativamente lentos. Isso limita a velocidade que até os desenvolvedores mais rápidos podem oferecer recursos. Linguagens mais expressivas, com poderosa metaprogramação incorporada e tempo zero de compilação, permitem que desenvolvedores especializados criem recursos o mais rápido possível. Se você está disputando uma fatia do mercado, com uma enorme recompensa para o vencedor, faz sentido contratar os melhores desenvolvedores que você pode encontrar e usar qualquer idioma que os permita ir mais rápido. Você pode se preocupar com escalabilidade mais tarde.


1
-1: C #, quando escrito com as bibliotecas do Visual Studio, Resharper, LINQ e .NET 4.0, possui ciclos de edição / teste lentos em relação a outros idiomas?
Jim G.

1
@ Jim: não tenho certeza do que são seus comparadores, mas comparado com Ruby, Groovy, Clojure e outras linguagens dinâmicas modernas que eu usei C # é definitivamente mais perto de Java e C ++ em termos de estilo de desenvolvimento e velocidade de iteração. YMMV, mas não acho que seu voto negativo seja particularmente merecido - a caracterização do OP é amplamente justa. Dê as "linguagens expressivas" uma tentativa, você pode ser surpreendido o que é possível .....
mikera

@ Jim G., sim, comparando com o Common Lisp, o ciclo de edição / teste em C # é lento. Você não pode modificar um sistema em execução. E você precisa escrever muito mais código em C #, o que atrasa ainda mais as coisas.
SK-logic,

1
Não, por exemplo, o Erlang permite a modificação do tempo de execução e é uma linguagem compilada.
Ricky Clarkson

2
@ JimG., Common Lisp é uma linguagem compilada (bem, a maioria das implementações são compiladores puros). A compilação incremental permite fazer os mesmos truques que os intérpretes, enquanto que com uma compilação separada eles são quase impossíveis.
SK-logic,
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.