Se la competizione utilizza "lingua obscura" per lo sviluppo (perché) dovrei essere preoccupato? [chiuso]


16

Stavo leggendo il saggio di Paul Graham - Beating The Averages (2003) ed ecco cosa aveva da dire:

Più un sapore IT aveva le descrizioni dei lavori, meno pericolosa era l'azienda. Il tipo più sicuro erano quelli che volevano l'esperienza di Oracle. Non ti sei mai dovuto preoccupare di quelli. Eri anche al sicuro se dicevano di volere sviluppatori C ++ o Java. Se volessero programmatori Perl o Python, sarebbe un po 'spaventoso - questo inizia a sembrare una società in cui il lato tecnico, almeno, è gestito da veri hacker

Questo è un saggio datato. Tuttavia, non riesco a vedere come l'uso di un linguaggio non comune (C / C ++ / Java, C #) sarebbe "meno pericoloso" . Se i programmatori di un'organizzazione sono molto fluenti con il linguaggio di sviluppo, dovrebbero essere ugualmente abili nell'elaborare il codice a un ritmo decente. Infatti, se usi un linguaggio non banale, i problemi di manutenzione / miglioramento non ti colpiranno in faccia poiché non ci sarebbero troppi programmatori a lungo termine?

Per la realizzazione di sistemi quick-n-dirty concordo sul fatto che alcune lingue consentono di decollare relativamente prima di altre. Ma il saggio / commento di Paul Graham ha senso nel 2012 e oltre? Se una startup dovesse utilizzare linguaggi IT tipici per lo sviluppo, perché la concorrenza dovrebbe essere meno preoccupata?

Non riesco a vedere come la lingua stessa faccia la differenza. IMHO è l'esperienza degli sviluppatori con la lingua che conta e la disponibilità dei framework in modo che tu ESSIA (non ripeterti) non solo codificando in una lingua particolare.

Cosa mi manca? Implica che le startup scelgano meglio i linguaggi non basati sull'IT (anche se gli sviluppatori possono essere estremamente abili in loro)? Quali sono le forze (di programmazione) economiche / di mercato dietro questa affermazione?

PS: "lingua obscura" non vuole ferire i sentimenti di nessuno :)


4
Il divario tra le lingue delle materie prime e le lingue del potere è ancora gigantesco. È ancora possibile superare il ritmo di sviluppo di Java o simili con, diciamo, Lisp in ordine di grandezza.
Logica SK

4
@ SK-logic: qualche dato per il backup?
Dottorato di ricerca

2
@Nupul, non c'è quasi nessuna ricerca formale sulla produttività dei linguaggi di programmazione, quindi posso fare affidamento solo su prove aneddotiche e sulla mia esperienza. Ho visto solo un paio di carte, proverò a scavarle più tardi. Per quanto riguarda in particolare Lisp, è diverso dalle altre lingue in un modo che può essere letteralmente trasformato in qualsiasi lingua in modo economico e semplice. Quindi combina tutte le proprietà e i vantaggi di tutte le altre lingue, mentre le lingue non energetiche sono fisse e ristrette. Può spiegare il divario di produttività.
SK-logic,

8
@ SK-logic davvero? Nonostante gli argomenti di LISPers al contrario, il fatto è che pochissimi programmi di valore sono stati creati usando un Lisp - con la possibile esclusione di Emacs - e quasi nessun sito web principale - con l'esclusione di ViaWeb intorno al 1997. Quindi, nonostante le pretese di un incredibile aumento della produttività, la maggior parte dei sostenitori di LISP parla e non cammina. Hanno solo materiale di ricerca accademica (più sulla ricerca e meno sulla qualità della produzione), progetti di hobby e alcune cose interne utilizzate in alcune aziende.
Hejazzman,

2
@ SK-logic Il problema è la mancanza di tipizzazione statica, nonostante la capacità di implementare un linguaggio tipicamente statico in lisp.
BenjaminB,

Risposte:


16

La toolchain è un sintomo.

Quando un'azienda sceglie Oracle, questa è un'indicazione di:

  • Un sacco di soldi da buttare in giro
  • Grande società
  • Struttura organizzativa profondamente nidificata con molti livelli di gestione
  • La società è gestita da "semi": tipi esecutivi o marketing e vendite
  • Realizza grandi prodotti software monolitici con basi di codice gigantesche
  • Processi formali per tutto

Quando un'azienda sceglie Python, questo è un segno di:

  • Piccola azienda giovane
  • Niente soldi da risparmiare
  • Gerarchia piatta
  • La società è gestita da programmatori
  • Realizza piccoli prodotti monouso con piccole basi di codice
  • Processi prevalentemente informali

Quando questi due si incontrano, la strategia della grande società è quella di evitare i rischi, usare il loro slancio e battere i concorrenti. La strategia della piccola concorrenza è quella di battere prima la concorrenza sul mercato e quindi continuare a essere il prodotto superiore. Se la piccola azienda sceglie le battaglie giuste, può facilmente superare la grande compagnia semplicemente essendo più veloce e più reattiva, e sfruttando la tendenza della grande azienda a evitare i rischi.


1
La società che utilizza Oracle probabilmente sarà ancora lì tra cinque anni!
James Anderson,

3
@JamesAnderson: a seconda del mercato, sì. Se stanno cercando di diventare il prossimo Facebook, probabilmente no; se sono una grande compagnia assicurativa, probabilmente sì. Ma poi, se sei una grande compagnia assicurativa, l'avvio di un garage non è certo qualcosa che devi temere.
martedì

Quindi sembra che io voglia lavorare per un negozio Python / Ruby / Scala / Clojure ... mmm. Data la mia esperienza, i posti che hanno ripagato i terminali tendono ad essere molto lenti nell'aggiornamento. Non so perché. Il dolore di spostare una versione in avanti è spesso più delicato che spostare diverse versioni in avanti. Il software a pagamento "di solito" offre la migrazione, ma nella maggior parte dei casi tale migrazione è generalmente da versione a versione.
Rig

25

La scelta di un linguaggio oscuro indicherebbe un'insoluta sicurezza tecnica in una startup. Una società disposta ad abbandonare la saggezza comune potrebbe sapere qualcosa sullo sviluppo del software che la maggior parte delle aziende non conosce. Inoltre, potrebbero essere solo dei segaioli.


1
In effetti, questo è esattamente ciò che Graham intende per " che sta iniziando a sembrare una società in cui il lato tecnico, almeno, è gestito da veri hacker " - una società in cui almeno i tecnologi potrebbero essere abbastanza intelligenti da essere una vera competizione per lui.
Ross Patterson,

8
Al giorno d'oggi è per lo più segai, perché "scegliere un linguaggio oscuro" è la moda del giorno tra segai e dilettanti.
Hejazzman,

2
Indica anche che la società è orientata verso l'interno e focalizzata su "come costruire" piuttosto che su "cosa costruire". Tali aziende non attirano molti clienti.
James Anderson,

13

Vedo i commenti di PG più sull'atteggiamento che sui dettagli della lingua. Le persone con una mentalità IT interna giocano al sicuro. Usano tecnologie a basso rischio, hanno processi per minimizzare il rischio e adottare la strategia a basso rischio. Sono troppo occupati a preoccuparsi del proprio pranzo per mangiare il tuo.

Le persone al limite (Python 2003) sono quelle di cui preoccuparsi. Loro hanno fame. Prendono dei rischi. Sono intellettualmente curiosi. Lo stesso tipo di persona che sta alzato fino a tardi imparando una nuova lingua entusiasmante è il tipo che potrebbe sconvolgere il tuo settore prima di te.


4
Naturalmente potrebbero anche essere inghiottiti interi da uno di quei rischi che hanno preso ...
Michael Borgwardt,

3
"" "Le persone sul filo del sangue (python 2003) sono quelle di cui preoccuparsi. Hanno fame. Rischiano. Sono intellettualmente curiose." "" - O sono vittime della moda che usano l'ultimo linguaggio alla moda, e hanno nessun contatto con la pragmatica dello sviluppo.
Hejazzman,

2
Entrambi veri. È un gioco di numeri. Ma prendi l'estremo opposto. A volte esplodono gli outlier. A volte ci riescono. Ma temeresti mai che un concorrente ti insegua con COBOL?
MathAttack,

13

Graham significa meno pericoloso per lui come concorrente, non solo meno pericoloso. Il suo punto non è che Java (o C ++ nel 2003 o COBOL nel 1980) sia meno pericoloso, ma piuttosto che sia normale e che vi sia una buona probabilità che le aziende alla ricerca di tali competenze siano semplicemente concorrenti nella media. Ma le aziende che cercano un forte talento in lingue oscure (o, più correttamente, più potenti e meno conosciute) sono aziende da guardare.

E sì, ha perfettamente senso oggi. Aveva perfettamente senso molto prima che Graham lo scrivesse, a quei tempi non parlavamo di Java.


6
Se solo non dovessimo parlare di Java in questi giorni.
DeadMG,

8

Vediamo quali lingue sono state utilizzate per la prima volta da startup di successo. Un elenco non scientifico, in cima alla mia testa. Una corretta ricerca randomizzata sarebbe migliore, se qualcuno avesse l'energia.

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

Quindi, presumibilmente, concludiamo che Facebook e Stackexchange non hanno rappresentato una minaccia per i loro concorrenti. Non molto convincente.


Vediamo se Paul Graham ci crede al giorno d'oggi. Ha co - fondato YCominator che finanzia le startup. La homepage elenca alcune delle loro startup di successo. Li ho esaminati in ordine, cercando molto rapidamente di ricercare le lingue che usavano nei primi tempi.

Bene, ci sono alcuni segni di una preferenza per linguaggi relativamente oscuri e probabilmente potenti. Ma sono elencati anche Flash, PHP e ASP classico.


È un saggio . È una spinta iperbolica per un linguaggio relativamente oscuro che adora, con i consigli sottostanti che le startup dovrebbero amare la loro tecnologia e muoversi il più velocemente possibile. Giusto.


3
Reddit iniziò in Lisp, ma andarono e riscrissero tutto in Python abbastanza presto perché nessuno riusciva a capire il Lisp.
Mason Wheeler,

Google utilizza molte lingue per molte cose diverse. Usano il C ++ per la maggior parte dei loro prodotti principali come ricerca, chrome, ecc.
mike30

@Mike La domanda riguarda le startup. Quando Google era una startup, le prime lingue che usavano erano Java e Python.
MarkJ,

6

Uno sviluppatore medio utilizza strumenti medi, perché non vede il valore di quelli più potenti:

“Finché il nostro ipotetico programmatore Blub sta guardando in basso il continuum di potenza, sa che sta guardando in basso. Le lingue meno potenti di Blub sono ovviamente meno potenti, perché mancano alcune funzionalità a cui è abituato. Ma quando il nostro ipotetico programmatore Blub guarda nella direzione opposta, nel continuum di potenza, non si rende conto di guardare in alto. Ciò che vede sono solo lingue strane. Probabilmente li considera equivalenti in termini di potere a Blub, ma con tutte queste altre cose pelose gettate pure dentro. Blub è abbastanza buono per lui, perché pensa in Blub. ”- Paul Graham, Beating the Averages .

(Enfasi mia.)

Più potente è il linguaggio, meno sviluppatori lo useranno e meno sarà comune. La popolarità è quindi una buona metrica di quanto sia lontano il potere di una lingua dalla media. Più il linguaggio è oscuro, maggiori sono le possibilità che lo sviluppatore lo utilizzi sappia cosa sta facendo e lo abbia scelto per una buona ragione rispetto ai suoi colleghi comuni, e un concorrente esperto è pericoloso.


3
Questo non è necessariamente vero. Gli strumenti, la pubblicità, le biblioteche esistenti e i materiali didattici di qualità possono anche cambiare la popolarità di una lingua.
DeadMG,

@DeadMG Beh, certo, il potere espressivo non è l'unico fattore. Immagino di aver fatto tacitamente il presupposto che tutte le lingue nella consapevolezza comune siano all'incirca alla pari in termini di marketing, strumenti e documentazione; altrimenti non sarebbero ragionevolmente confrontati affatto. Cavolo, anche le preferenze personali hanno molto a che fare con questo. Se sai che Haskell è meglio per qualche compito ma ti piace davvero C, allora potresti codificare qualcosa in C per il diavolo puro di esso.
Jon Purdy,

Immagino di aver fatto tacitamente il presupposto che tutte le lingue nella consapevolezza comune siano all'incirca alla pari in termini di marketing, strumenti e documentazione ... - E sbaglieresti a farlo. Davvero sbagliato, in effetti.
Jim G.

1
@JimG. Potresti offrire un esempio specifico? Considerando l'indice TIOBE, tutti i primi 10 e la maggior parte dei primi 50 sembrano comparabili in quelle aree. Inoltre, le persone stanno bene facendo confronti tra le lingue che sono molto diverse in termini di potere espressivo, quindi perché non fare lo stesso per gli altri aspetti?
Jon Purdy,

5

La scelta della lingua è difficile per una startup. Molte ottime startup scelgono lingue "comuni" per la velocità di accesso al mercato, la familiarità del fondatore e la facilità di assunzioni future.

La scelta di una lingua meno utilizzata genera buoni segnali. Dice che sei pronto a prendere sul serio lo sviluppo e ad impegnarti per assumere programmatori specializzati. Questi sono solo segnali, una startup è molto più che una scelta linguistica.

In conclusione, la scelta della lingua deve essere valutata correttamente nel proprio contesto. Facebook per esempio ha funzionato bene usando php che generalmente non è considerato un linguaggio molto scalabile


1
+1 se non altro per l'eufemismo "Facebook ha funzionato bene".
MarkJ,

5

Vai a chiedere ai programmatori migliori e peggiori che conosci, in base ai criteri che preferisci, quali altre lingue conoscono. Ora scrivi un annuncio di lavoro per attirare il primo e hai la tua risposta. Anche se la tua app è in C ++, otterrai una classe migliore di programmatori se assumi quelli che conoscono lingue che non vengono insegnate a scuola.


2
-1: Eh? Scusa, mi hai perso.
Jim G.

4

Ci sono due cose diverse di cui dovresti preoccuparti se un concorrente sta usando un linguaggio insolito:

  • Vantaggio di produttività - Ci sono pro e contro di lingue insolite, ma supponendo che la concorrenza abbia scelto bene per il loro dominio di problemi dato, potrebbero avere un vero vantaggio di produttività. Le funzionalità di meta-programmazione in Lisps, ad esempio, probabilmente ti daranno un vantaggio reale e sostanziale ovunque tu debba fare una notevole quantità di generazione automatica di codice al volo.
  • Vantaggio culturale : se un'azienda utilizza un linguaggio insolito di interesse per grandi hacker, è probabilmente in grado di attrarre e trattenere grandi hacker. Le aziende vivono e muoiono per la qualità delle loro persone, quindi se questo si traduce in un vantaggio a lungo termine per i talenti, può essere davvero significativo.

Entrambi questi vantaggi potrebbero non essere applicabili in una determinata situazione. Ad esempio, una startup potrebbe facilmente adottare un linguaggio "perché è bello" senza pensare davvero se è la scelta giusta. Possono facilmente commettere errori di assunzione. Possono facilmente spararsi al piede abusando di un linguaggio "potente".

Ma se un concorrente sceglie un linguaggio insolito e lo usa bene, allora sì, potresti avere una minaccia significativa per le tue mani.

Penso che questo principio sia abbastanza senza tempo ed è vero ora come lo era nel 2003 - linguaggi e paradigmi specifici possono andare e venire, ma l'idea di scegliere un linguaggio potente ed espressivo che si adatti al dominio del problema su un linguaggio generico, sicuro e di uso generale probabilmente meriterà sempre qualche considerazione seria.


0

Se i tuoi clienti non sono bloccati, allora . Dovresti essere preoccupato per i concorrenti che usano linguaggi potenti.

Java, C #, C ++, sono relativamente dettagliati e hanno cicli di modifica / test relativamente lenti. Ciò limita la velocità che anche gli sviluppatori più veloci possono offrire funzionalità. Linguaggi più espressivi, con potente meta-programmazione integrata e zero tempi di compilazione, consentono agli sviluppatori esperti di creare funzionalità il più rapidamente possibile. Se sei in corsa per una quota di mercato, con un'enorme ricompensa per il vincitore, ha senso assumere i migliori sviluppatori che riesci a trovare e utilizzare qualsiasi linguaggio che li consenta di andare più veloce. Puoi preoccuparti della scalabilità in seguito.


1
-1: C #, quando scritto con le librerie di Visual Studio, Resharper, LINQ e .NET 4.0 ha cicli di modifica / test lenti rispetto ad altre lingue?
Jim G.

1
@Jim: non sono sicuro di cosa siano i tuoi comparatori, ma rispetto a Ruby, Groovy, Clojure e altri linguaggi dinamici moderni che ho usato C # è decisamente più vicino a Java e C ++ in termini sia di stile di sviluppo che di velocità di iterazione. YMMV, ma non credo che il tuo downvote sia particolarmente meritato - la caratterizzazione del PO è sostanzialmente giusta. Prova le "lingue espressive", potresti essere sorpreso di ciò che è possibile .....
Mikera,

@Jim G., sì, rispetto al Common Lisp, il ciclo di modifica / test di C # è lento. Non è possibile modificare un sistema in esecuzione. E devi scrivere molto più codice in C #, che rallenta ancora di più le cose.
SK-logic,

1
No, ad esempio Erlang consente la modifica del runtime ed è un linguaggio compilato.
Ricky Clarkson,

2
@JimG., Common Lisp è un linguaggio compilato (beh, la maggior parte delle implementazioni sono compilatori puri). La compilazione incrementale consente di fare tutti gli stessi trucchi degli interpreti, mentre con una compilazione separata sono appena possibili.
SK-logic,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.