Quali sottoculture di programmazione / software esistono? Cosa li definisce? A chi appartieni? [chiuso]


13

All'esterno, programmatori, informatici, ingegneri informatici e sviluppatori possono sembrare tutti uguali, ma questo è tutt'altro che vero per le persone che creano software per vivere. Le capacità e le conoscenze di ogni singolo programmatore possono variare molto, così come i loro strumenti (sistema operativo, lingua e sì, editor preferito) e tale diversità genera molte sottoculture nel software, come i programmatori che utilizzano attivamente Stack Overflow e questo sito, contro molti altri che non lo fanno.

Sono curioso di sapere dagli altri quali sotto-culture software hanno incontrato, di cui sono state ammirate, non apprezzate o addirittura create. Per cominciare, ho riscontrato:

  • Aziende e sviluppatori basati su Microsoft : il loro intero stack proviene da Redmond, WA. E-mail è Outlook è e-mail. Il web è IE e IIS. Hanno raccoglitori di grandi dimensioni del loro abbonamento MS Developer Network pieno di più versioni di VB, .net, Visual Studio, ecc. Evita di lavorare con una shell / riga di comando. Non capisco di cosa si tratta con l'open-source e cose del genere. Le società incentrate sulla SM tendono ad essere 9-5 e piuttosto corporative (guidate da manager aziendali, non da software people). Oggi (data l'ampia disponibilità di strumenti non MS), questa è l'antitesi della cultura hacker.
  • Persone CS della vecchia scuola : spesso conoscono Lisp e Unix molto bene; a volte, potrebbero aver scritto un semi-popolare Lisp o un'utilità di sistema. Poche, se del caso, le cose di "ingegneria del software" sono nuove per loro, né ne sono impressionate. Conoscere i riferimenti, la storia e le implicazioni di livello superiore dei linguaggi di programmazione come Lisp, C, Prolog e Smalltalk. Può essere amaro per i risultati di intelligenza artificiale degli anni '80 e '90. Tendono ad essere utenti Emacs. Può digitare comandi di shell multilinea senza batter ciglio. Il loro consiglio può essere criptico, ma contiene oro una volta capito.
  • Sviluppatori web di nuova scuola : hanno giocato con computer e videogiochi crescendo, ma spesso hanno iniziato a programmare solo alla fine degli anni '90 o all'inizio degli anni '00. Comodo con scripting / linguaggi dinamici da 1 a 1,5; pensa che C e le lingue al di fuori di Ruby / Perl / Python siano inutili / magiche. Inizialmente potrebbe essere stato considerato HTML come programmazione. Tendi a prendere un Mac e ad essere fanatico / irrazionale al riguardo. Usa i framework più che crearli. Spesso troppo entusiasta di NoSQL e / o Ruby On Rails.
  • CS di nuova scuola : molta formazione in statistica, modelli bayesiani e inferenza; non dire "AI", dire "machine learning". Più Java che Lisp, ma potrebbero anche essere programmatori esperti Haskell. Vedere i maggiori successi del mondo reale da parte di esperti nel loro settore (Google, finanza / quants) spesso li rende (troppo) fiduciosi. Ma i big data e il loro trattamento distribuito stanno davvero cambiando il mondo.

Gli esempi sopra riportati non sono affatto completi, corretti, ortogonali o oggettivi. :) Proprio quello che ho visto personalmente e fornito per innescare alcune discussioni e delineare la domanda più ampia. Sentiti libero di non essere d'accordo!


1
"Lil" è vago, ma sembra interessante.
Rook,

6
Penso che le risposte mostrino una cosa: la domanda sta cercando di tracciare linee di demarcazione chiare dove non ce n'è davvero nessuna. Abbiamo a che fare con circa 5 concetti ortogonali, ciascuno un continuum, e stiamo cercando di dividere quell'iperpiano in gruppi discreti facilmente identificabili. IMO, è uno sforzo senza speranza.
Jerry Coffin,

3
@Jerry Coffin - sì, d'accordo. Per non parlare del fatto che alcune risposte confinano con l'offensiva verso alcune "culture", IMHO. Tuttavia, queste risposte sono belle in un modo che mostrano ciò che oggi (i programmatori? O almeno questa comunità) pensano di altre comunità, che fanno anche parte di questa (in una piccola percentuale).
Rook,

@JerryCoffin Bene, signore, ci sono persone che vogliono usare quella parola "ortogonale" e quelle che non lo fanno solo perché è stata popolare nello stack negli ultimi decenni ...
Erik Reppen,

Risposte:


12

Mi considererei parte del gruppo Real-Time Systems . Ci sono alcune caratteristiche "Old School" ma con meno attenzione al CS, più all'hardware.

L'archetipo:

  • Ha una conoscenza approfondita di "C"
    • Ha una copia originale di K&R
    • Scrive in altre lingue come se fossero solo una sintassi alternativa per "C"
  • Può prevedere l'output dell'assemblatore dal loro codice.
  • Può leggere uno schema circuitale
  • Non sa come scrivere il codice senza fare "ottimizzazione prematura".
  • È abbastanza a suo agio con la riga di comando.

Affascinante, grazie. Ho incontrato persone di sistemi in tempo reale, ma non ho lavorato in un posto simile, quindi non ho cercato di caratterizzare la cultura. Penso che molti di noi programmatori ti chiamerebbero "hard-core". :)
limist

1
Penso che sia come qualsiasi altra disciplina: ci sono le "rock star" hard-core e ci sono le vecchie rocce semplici. (Spero di essere in mezzo)
AShelly,

2
Anch'io sono in questo gruppo. La maggior parte dei miei colleghi sono venuti "su" in questo posto da un background di ingegneria elettronica, ma io ci sono arrivato "da" uno sviluppatore di database / app. Ora mi sento molto a mio agio in questo gruppo, e talvolta il mio diverso background può portare una diversa prospettiva utile.
Vicky,

1
Inoltre, potrebbe essere la mia percezione, ma sembra che le donne siano ancora più rare in questo gruppo rispetto ad alcuni altri gruppi.
Vicky,

1
Caspita - questo mi descrive quasi alla perfezione, tranne che non leggo solo schemi elettrici, ma disegno anche i circuiti. Ha lavorato sul mio primo sistema embedded (in PL / M-86) alla fine degli anni '70.
Tcrosley,

6

Non dimenticare i programmatori di mainframe. Sono anche una sottocultura.


1
Mi piacerebbe saperne di più sulla cultura dei programmatori di mainframe; Ho incontrato pochissimi che passano anche molto tempo con i mainframe, figuriamoci codificandoli regolarmente.
limist

1
Queste sono le persone con tagli di capelli rispettabili e sono indistinguibili dalle altre persone che indossano tailleur. A loro piace COBOL. Per loro, non esiste un sistema diverso da un sistema / 360.
oosterwal,

5

Rappresento il contingente solitario di Delphi Devs sotto i 30 anni. Il nostro caucus è piccolo, ma i nostri cuori sono grandi.


Alcuni dei miei colleghi sono <30.
Toon Krijthe

2
Bene, per iniziare uno scambio di stack e possiamo parlare delle nuove funzionalità che chiederemo al vecchio Johnny Borland di implementare dopo che sarai morto ;-)
Peter Turner,

4

Immagino che esistano diverse culture che in qualche modo convivono piuttosto che combattere e che sono in qualche modo trascendenti:

  • Cultura hacker / open source : condivisione di codice, utilizza il nome reale o meno. Concentrato probabilmente su piccoli strumenti che risolvono un problema. Consente hack all'interno del programma. Lingue: C , Lisp , C ++ , Python . Probabilmente si sovrappone alle persone CS della vecchia scuola .
  • Academia : concentrazione sugli algoritmi e fare le cose nel modo giusto. Il vero nome è must (appare comunque sulla carta). Lingue: Java , Haskell , ( F # ?)
  • Corportate : concentrazione sulle soluzioni (probabilmente di tutto). Se open source che non è necessario dare il nome . Lingue: Java , C # , VB.net , Ruby .
  • " Liceo ": funziona se funziona ma non è necessario. Concentrazione su nomi come "SuperProgram 1.0 per Windows XP". (scusa, non ho trovato un buon nome, ma intendo i programmatori che hanno iniziato a padroneggiare CS e non sono bravi a farlo - almeno ancora). Lingue: PHP , VB , Ruby
  • New School Web Developers : Come sopra.

Si prega di notare che:

  • è possibile mescolare le culture nelle organizzazioni e nella singola persona. In effetti lo fa spesso.
  • Le lingue sono ESEMPI ed è ad esempio un gruppo piuttosto ampio di "hacker" che lavorano su C #. È più un gioco di associazioni il vero studio, quindi per favore non essere offeso (sì - lo so che ci sono ottimi programmi scritti in PHP con buone pratiche ingegneristiche ecc., Ma tende ad essere la prima lingua per molte persone che non fanno ' non so cosa sia ad esempio XSS)
  • Non volevo offendere nessuno per nome High School. Volevo dire che spesso è il primo passo nella programmazione attraverso questa cultura (e speriamo non duri)
  • Modifica: Academia non significa che la persona sia nel mondo accademico, così come essere nel mondo accademico non significa che qualcuno appartiene al mondo accademico (nonostante sia un brillante scienziato / ricercatore ecc.). Indica che preferisce gli strumenti che danno una soluzione chiara, ovviamente corretta, anche se manca di prestazioni / richiede più tempo / ... La cultura aziendale simile non è equivalente alle società.

Penso di essere attualmente per lo più Open Source con leggera influenza di Academia (passivo).


Stavo solo pensando alla pesante sovrapposizione della moderna sottocultura CS / mondo accademico e dei programmatori Haskell. Dopo aver giocato un po 'con Haskell, posso capire perché fa appello a coloro che hanno studiato scienze formali (CS, matematica) e, in effetti, trovo che Haskell aiuti a vedere la programmazione da un livello superiore.
limist

Solo Java e Haskell in Academia? Che dire di Fortran, C, C ++, R, MATLAB, * sh + awk (sì, conosco queste persone), Mathematica, Python, LabVIEW? Anche Haskell dovrebbe probabilmente essere sostituito con "qualsiasi linguaggio funzionale".
mbq,

Questi sono esempi. Esempi BIASED . Come ho notato, le lingue NON sono specifiche della cultura. Inoltre, tieni presente che la cultura accademica non si limita al mondo accademico e non tutti nel mondo accademico devono abbracciare la cultura accademica. Mentre sono d'accordo sul fatto che Fotran / C / C ++ / R / Matlab / ... siano utilizzati in ambito accademico, non formano una forte associazione con esso nella mia mente. * sh + awk è definitivamente non accademico (come cultura - l'utente può lavorare nel mondo accademico ed essere scienziato brillante - è una cosa completamente diversa0.
Maciej Piechotka,

1
Penso che stai andando verso accademici di informatica.
mbq,

2

Sono un po 'nel campo CS Alt.NET/old-school. Lavoro con la tecnologia Microsoft (C #, ecc.), Ma sono consapevole che c'è un intero mondo intorno a me, altre lingue, algoritmi, framework, "cose ​​nascoste", ecc. Non perfetto, ovviamente, ma è un lavoro in corso.


1
La folla di Alt.NET è decisamente una sottocultura di programmazione, e assolutamente distinta dalla descrizione di limist della cultura guidata da Microsoft (che suona più come quella cultura di un decennio fa che come è adesso, per me).
Carson63000,

2

Non sono completamente d'accordo con questa affermazione sulla sottocultura della SM: "Non vedi di cosa si tratta con l'open-source e cose del genere - inoltre, chi ha bisogno di conoscere un'altra lingua? In generale, ho trovato che questi posti dovevano essere 9-5 e abbastanza corporativo (guidato da manager aziendali, non da software people). L'antitesi della cultura hacker ". Ormai ho lavorato in due negozi .Net e l'ambiente era in realtà molto simile agli hacker. Nel nostro lavoro abbiamo impiegato molti progetti open source. Nella mia opzione, tutto dipende dal tipo di persone con cui si lavora. Se sono veri sviluppatori, cercheranno costantemente modi per migliorare, espandersi. Quali tecnologie utilizzino è irrilevante.

Non dimenticare la sottocultura Metodologia Agile che incorpora sviluppatori di diversa estrazione.


Sì, la gente Agile è una sottocultura su se stessa. Buon punto re. lo sviluppatore rispetto allo strumento e, naturalmente, la tua esperienza potrebbe essere molto diversa dalla mia. Dal mio campionamento limitato, ho appena scoperto che gli strumenti hanno modellato un po 'i produttori.
limist

Ho lavorato in un negozio di MS (e potrei anche essere un fanboy) ma la mentalità che ho sperimentato è "guarda prima la SM, se è gratis, poi usala. Altrimenti, cerca qualsiasi cosa disponibile per soddisfare le necessità ".
Steven Evers,

2

Penso che ci sarebbe una via di mezzo tra Old School CS e New School Web Developers .

Tradizionalmente mi considero uno "sviluppatore web". PHP e Java e cittadini di prima classe per me, insieme a HTML / CSS corretti, corretti e validi . Lancia in SQL e hai un set di abilità robusto e ben arrotondato.

Spostare New School in Script Kiddies e rinominare lo sviluppatore Web .

Script Kiddies - Persone con scarsa conoscenza del linguaggio. Tende a google per esercitazioni prima di copiare / incollare ciecamente il codice in posizione. In genere non comprende appieno la sintassi di più di una lingua.


2

Accademici che effettuano ricerche utilizzando i computer, non ricerche sui computer.

Essi:
- stanno scrivendo software in grado di consumare quantità illimitate di tempo di CPU, memoria e disco spazio in modo che si preoccupano (o almeno cercare di cura) di prestazioni, sia utilizzando cose come -O3, time, profiler, memcheck, e trascorrere ore più o meno cambiando casualmente il codice per ottenere un po 'di accelerazione o applicando inconsapevolmente alcuni trucchi mitici ai loro script.
- usa numeri reali e sappi che è abbastanza complicato da poter esistere una scienza separata chiamata "numerics".
- spesso usano linguaggi / librerie / programmi di programmazione molto specifici e ne sono molto fanatici; le guerre di fiamma sono comuni, soprattutto per quanto riguarda le prestazioni.
- chiama i loro "codici" dei programmi per evidenziare che hanno un'interfaccia utente così offuscata in modo che solo i loro creatori sappiano come usarla.
- Di solito funziona su Linux o almeno usa PuTTY per ssh su alcune workstation / cluster Linux.


1
Sì, anche io sono in questo club. Questa lista è un buon inizio per una descrizione del tipico fisico ad alta energia (voglio dire, studia i quark, non aveva troppo caffè) o dell'astronomo che lavora con gli attuali grandi strumenti.
DarenW

1
E, poiché questa sottocultura si preoccupa molto dell'efficienza pratica, ripetibile ed estrema, spesso si preoccupano poco della maggior parte delle cose che accadono nel mondo dell'informatica, a meno che non abbia a che fare con l'elaborazione parallela, schemi di cache intelligenti, HPC e simili .
DarenW

@DarenW: Cosa vuoi dire che a loro importa poco del mondo dell'informatica? Vuoi dire che a loro non importa delle buone pratiche di software e simili? Perché non sarei d'accordo. Preoccuparsi delle prestazioni non ha bisogno che tu scarichi buoni principi di ingegneria del software.
n1ckp,

1

Probabilmente sono una combinazione di persone CS della vecchia scuola e sviluppatori web della nuova scuola : ho imparato a programmare scrivendo siti Web con PHP, Javascript e SQL, e ora sto frequentando l'università dove tutto viene fatto in prompt dei comandi ed Emac sotto UNIX.


0

Contami come il ragazzo della "vecchia scuola". Non ho mai fatto bene LISP, però. Emacs? Nah,vi e set -o vinel mio guscio per me grazie.

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.