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 :)
fonte
Respostas:
A cadeia de ferramentas é um sintoma.
Quando uma empresa escolhe o Oracle, isso é uma indicação de:
Quando uma empresa escolhe Python, isso é um sinal de:
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.
fonte
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.
fonte
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ê.
fonte
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.
fonte
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.
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.
fonte
Um desenvolvedor comum usa ferramentas comuns, porque não vê o valor das mais poderosas:
(Ê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.
fonte
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
fonte
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.
fonte
Há duas coisas diferentes com as quais você deve se preocupar se um concorrente estiver usando um idioma incomum:
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.
fonte
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.
fonte