Se la concorrenza usa "lingua oscura" 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:

The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers

Ora, questo è un saggio datato. Tuttavia, non riesco a vedere come usare un linguaggio non comune (C / C ++ / Java, C #) sia "meno pericoloso" . Se i programmatori di un'organizzazione sono molto fluenti con il linguaggio di sviluppo, dovrebbero essere ugualmente capaci di estrapolare il codice a un ritmo decente. Infatti, se usi un linguaggio non comune, i problemi di manutenzione / miglioramento non ti colpiranno in faccia, dal momento che non saranno disponibili troppi programmatori, a lungo termine?

Per rendere i sistemi quick-n-dirty sono d'accordo, che alcune lingue ti permettono di decollare relativamente prima di altri. Ma il saggio / commento di Paul Graham ha senso nel 2012 e oltre? Se una startup dovesse utilizzare le tipiche IT lingue per lo sviluppo, perché la concorrenza dovrebbe essere meno preoccupante?

Non riesco a vedere come la stessa lingua faccia la differenza. IMHO è l'esperienza degli sviluppatori con il linguaggio che conta e la disponibilità di framework in modo che tu possa ASCIUGARE (non ripeterti) non solo la codifica in una particolare lingua.

Che cosa mi manca? Significa forse che le startup scelgano meglio i linguaggi non dotati di IT (anche se gli sviluppatori possono essere estremamente abili nei loro confronti)? Quali sono le (economiche) forze di mercato (di programmazione) dietro questa richiesta?

PS: "lingua obscura" non è destinato a ferire i sentimenti di nessuno:)

    
posta PhD 25.02.2012 - 22:55
fonte

10 risposte

15

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 annidata con molti livelli di gestione
  • L'azienda è gestita da "semi": o tipi esecutivi, o marketing e vendite
  • Realizza prodotti software monolitici di grandi dimensioni con codebase gigantesche
  • Processi formali per tutto

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

  • Piccola azienda giovane
  • Senza soldi da risparmiare
  • Gerarchia piatta
  • La società è gestita dai programmatori
  • Crea piccoli prodotti monouso con piccole basi di codice
  • Processi per lo più informali

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

    
risposta data 26.02.2012 - 10:20
fonte
26

La scelta di un linguaggio oscuro potrebbe indicare una scarsa 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. Poi di nuovo, potrebbero essere solo segaioli.

    
risposta data 26.02.2012 - 00:19
fonte
13

Vedo i commenti di PG più sull'atteggiamento che sugli aspetti specifici della lingua. Le persone con una mentalità IT interna sono sicure. Usano tecnologie a basso rischio, hanno processi per minimizzare il rischio e adottare la strategia a basso rischio. Sono troppo occupati a preoccuparsi del loro pranzo per mangiare i tuoi.

Le persone ai margini del sanguinamento (python 2003) sono quelle di cui preoccuparsi. Loro hanno fame. Prendono rischi. Sono intellettualmente curiosi. Lo stesso tipo di persona che rimane fino a tardi ad apprendere una nuova eccitante lingua è il tipo che potrebbe sconvolgere il tuo settore prima di te.

    
risposta data 25.02.2012 - 23:59
fonte
12

Graham significa meno pericoloso per lui come un 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 normale , e che c'è una buona probabilità che le aziende che cercano tali competenze siano semplicemente - i concorrenti di risparmio. Ma le aziende che cercano un talento strong in lingue sconosciute (o, più correttamente, più potenti e meno conosciute) sono aziende da guardare.

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

    
risposta data 26.02.2012 - 00:02
fonte
8

Vediamo quali lingue sono state utilizzate per la prima volta da startup di successo. Una lista non scientifica, fuori dalla mia testa. Una corretta ricerca randomizzata sarebbe meglio, 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 rappresentano una minaccia per i loro concorrenti. Non molto convincente.

Vediamo se Paul Graham ci crede oggigiorno. Ha cofondato YCominator che finanzia le startup. La home page elenca alcune delle loro startup di successo. Li ho esaminati in ordine, cercando molto rapidamente di cercare le lingue che usavano nei primi tempi.

Bene, ci sono alcuni segni di una preferenza per le lingue relativamente oscure e discutibilmente potenti. Ma sono elencati anche Flash, PHP e ASP classico.

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

    
risposta data 28.02.2012 - 23:57
fonte
7

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

“As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks 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 il potere di una lingua sia lontano dalla media. Più oscuro è il linguaggio, maggiori sono le possibilità che lo sviluppatore che lo utilizza sa quello che sta facendo, e lo ha scelto per una buona ragione rispetto ai suoi pari, e un concorrente esperto è pericoloso.

    
risposta data 26.02.2012 - 00:24
fonte
6

Vai a chiedere ai programmatori migliori e peggiori che conosci, con qualsiasi criterio tu voglia, 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 persone che conoscono lingue che non vengono insegnate a scuola.

    
risposta data 26.02.2012 - 00:33
fonte
5

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

Scegliendo una lingua meno utilizzata, vengono inviati buoni segnali. Dice che siete pronti a prendere sul serio lo sviluppo e cercare di assumere programmatori specializzati. Questi sono solo segnali, tuttavia, una startup è molto più di una semplice scelta del linguaggio.

La linea di fondo è la tua scelta nella lingua dovrebbe essere valutata correttamente nel tuo contesto. Ad esempio, Facebook ha fatto uso di php che non è generalmente considerato un linguaggio molto scalabile

    
risposta data 26.02.2012 - 00:03
fonte
4

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

  • Vantaggio in termini di produttività - Esistono pro e contro di linguaggi insoliti, ma se si presuppone che la concorrenza abbia scelto bene il dominio problematico in questione, è possibile che si tratti di un reale vantaggio in termini di produttività. Le funzionalità di meta-programmazione in Lisps, ad esempio, probabilmente ti daranno un vantaggio reale e sostanziale ovunque tu debba fare una quantità significativa di generazione automatica di codice al volo.
  • Vantaggio culturale - se un'azienda utilizza un linguaggio insolito di interesse per i grandi hacker, è probabile che sia in grado di attirare e trattenere grandi hacker. Le aziende vivono e muoiono per la qualità delle loro persone, quindi se questo si traduce in un vantaggio di talento a lungo termine, allora 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 veramente se è la scelta giusta. Possono facilmente commettere errori di assunzione. Possono facilmente spararsi ai piedi abusando di un linguaggio "potente".

Ma se un concorrente sceglie una lingua insolita e la usa bene allora sì, potresti avere una minaccia significativa nelle tue mani.

Penso che questo principio sia abbastanza atemporale 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 tuo dominio problematico su un generico, sicuro, il linguaggio generale probabilmente meriterà sempre qualche considerazione seria.

    
risposta data 26.02.2012 - 15:43
fonte
0

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

Java, C #, C ++, sono relativamente prolissi 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 potenti metadogrammi integrati e zero tempo di compilazione, consentono agli sviluppatori esperti di creare funzionalità il più velocemente possibile. Se sei in una corsa per una quota di mercato, con una grande ricompensa per il vincitore, ha senso assumere gli sviluppatori migliori che riesci a trovare e utilizzare qualsiasi lingua gli consenta di andare più veloce. Puoi preoccuparti della scalabilità in seguito.

    
risposta data 25.02.2012 - 23:36
fonte

Leggi altre domande sui tag