Atteggiamento freddo e neutrale verso i linguaggi di programmazione: segno di uno sviluppatore professionista o non [chiuso]

1

Uno sviluppatore professionista Zed Shaw dice questo:

Which programming language you learn and use doesn't matter. Do not get sucked into the religion surrounding programming languages as that will only blind you to their true purpose of being your tool for doing interesting things.

Quindi, essere neutrali alle lingue è un segno di uno sviluppatore bravo / pro? Vediamo adorare e insegnare ciò che la lingua è migliore.

Il buon programmatore non si preoccupa degli strumenti, pensa solo a quale software scrive (come lo scrittore non si cura della penna che usa - pensa al contenuto del LIBRO)

  1. un programmatore dovrebbe sviluppare una totale ignoranza del linguaggio come strumento che usa?

  2. è un segno dello sviluppatore professionista , se non gli interessa quale lingua usare?

posta ERJAN 25.05.2013 - 10:13
fonte

7 risposte

5

No. no. no. Assolutamente non il segno di un pro-sviluppatore. Uno sviluppatore professionista è spesso il più vocale riguardo le lingue da usare.

Un Pro-sviluppatore non è riuscito prima

La vera conoscenza dei punti di forza e di debolezza di un linguaggio di programmazione deriva dal fallimento, e non da libri di testo o manuali utente su come scrivere in quella lingua.

Ho lavorato su una vasta gamma di progetti che hanno fallito. Le persone sono state licenziate e le aziende hanno perso denaro. Il linguaggio di programmazione utilizzato ha avuto un ruolo in quello che succede e ho imparato molto sui rischi che comporta quando uso quel linguaggio.

Il successo da solo non è sufficiente

Uno sviluppatore può essere certificato da un'organizzazione credibile per un linguaggio di programmazione. Lui / lei può leggere libri estensivamente su base notturna. Potrebbero avere diversi progetti open-source pubblicati in quella lingua.

Avere successo in un linguaggio di programmazione non ti dà la saggezza per evitare problemi. Ti rende troppo sicuro di sé, e ho lavorato su molti progetti in cui lo sviluppatore principale ha avuto un successo eccessivo. Di conseguenza, non avrebbero ascoltato mentre cercavano di avvertire con cautela che il team era alla ricerca di problemi.

Qual è il segno di un Pro-sviluppatore?

Paura quando viene presentata l'opportunità di partecipare a un progetto che utilizza lo strumento sbagliato per il lavoro. Lo sviluppatore che mostra segni di ignoranza o calma è un pazzo inesperto.

Reverse Evaluation : presumo che stiamo parlando in termini di colloquio di lavoro. Come capire se uno sviluppatore conosce la sua roba. Uno sviluppatore professionista trasformerà i tavoli in un'intervista quando scoprirà una discrepanza tra i problemi in questione e il linguaggio di programmazione scelto per risolverli. Vorrebbe sapere perché l'intervista rappresenti una società che ha fatto quello che pensa sia un errore ovvio, e sa che cambiare i linguaggi di programmazione è come cercare di reindirizzare un enorme asteroide diretto a New York.

Perché succede così spesso?

È un processo multifase. Ecco la forma abbreviata.

  1. Un business inizia un nuovo progetto con persone inesperte perché sono più economiche.
  2. Le persone inesperte scelgono il linguaggio di programmazione con cui sono più a proprio agio. Non è ciò che è giusto per il progetto (spesso questo viene fatto da persone che non scriveranno il codice).
  3. Il 90% di questi progetti fallisce, ma il 10% sopravvive.
  4. Quel 10% ha improvvisamente bisogno di sistemare il progetto perché ora vende.
  5. Ora c'è una critica, quindi decidono di investire in uno sviluppatore esperto.
  6. Lo sviluppatore esperto entra e richiede che il linguaggio di programmazione venga modificato (tutti gli altri sviluppatori professionisti intervistati non accettano il lavoro).

Ora si pensa che adori una lingua particolare e inizi una guerra santa .

Questo scenario si gioca ripetutamente nell'industria, ed è per questo che così tanti sviluppatori discutono i pro / contro di ogni lingua. Non tutti vogliamo essere quel tipo che deve combattere per cambiare le lingue. Quindi questi dibattiti possono diventare molto accesi al start di un progetto.

Non tornare indietro una volta che inizi

Scegliere un linguaggio di programmazione è come prendere la prima pugnalata con la pala nella terra. Stai piantando un albero o scavando la tua tomba.

    
risposta data 25.05.2013 - 16:48
fonte
10

Un buon programmatore, come ogni buon artigiano, fa e dovrebbe preoccuparsi dei suoi strumenti.

In risposta al punto 1. Uno sviluppatore professionista dovrebbe acquisire una profonda conoscenza degli strumenti che sta utilizzando per quanto è rilevante per l'attività in corso.

In risposta al punto 2. "Non preoccuparti" è forse una formulazione troppo strong. Ma a meno che lui o lei non abbia specificamente il compito di selezionare il linguaggio degli strumenti e della programmazione, allora dovrebbero accettare lo strumento scelto e andare avanti con il lavoro.

Detto questo, personalmente ho in mano una "scatola di strumenti". Alcuni sono programmi, script, perls, programmi di mia creazione, alcuni sono strumenti liberamente disponibili come gvim, scoiattolo, SOAPUI. Spesso li uso di preferenza per gli strumenti "ufficiali" semplicemente perché funzionano bene e migliorano la mia produttività.

Per quanto riguarda le "guerre" linguistiche, qualsiasi professionista dovrebbe superare questo. A seconda del compito a portata di mano, ti troverai a implementare soluzioni in una varietà di lingue. Il mio compito attuale, che è in qualche modo strano, implica la codifica in C #, VBA, COBOL, Rexx e JCL con un po 'di Java gettato dentro. Considerando che è un piacere programmare in C # e un dolore da codificare in COBOL, COBOL è il strumento giusto per quella parte del progetto quindi non ha senso lamentarsi; Scrivo solo il miglior COBOL che posso.

    
risposta data 25.05.2013 - 10:33
fonte
5

"L'ignoranza totale" non è la cosa giusta.

Uno sviluppatore dovrebbe conoscere i punti di forza e di debolezza del suo strumento: non usare un cacciavite per guidare un chiodo in un muro. (E se tutto quello che hai è un cacciavite, dovresti almeno sapere che un martello sarebbe meglio.)

Il fandom, d'altra parte, dovrebbe essere evitato. ("Non toccarei mai altro che un martello ACME!")

    
risposta data 25.05.2013 - 10:25
fonte
3

I linguaggi di programmazione sono al centro della programmazione e un programmatore professionista può prendersene cura profondamente. Tuttavia in molti casi con le lingue tradizionali le differenze sono marginali o non fondamentali. Pertanto, per uno sviluppatore professionista, questi non dovrebbero essere motivi per lamentarsi rumorosamente di differenze banali.

Tuttavia, ci sono sottili differenze tra le lingue e queste sono preoccupazioni reali perché quando si passa da una postazione all'altra anche un programmatore professionista finirà per commettere errori, solo perché crede che C # non sia poi così diverso da java o javascript rubino con bretelle ricurve ...

Con il mondo della programmazione sempre più poliglotta e sempre più lingue con diversi concetti disponibili, c'è sicuramente la necessità di discutere i punti di forza e di debolezza delle piattaforme. Questo è in realtà più rilevante di alcune "guerre linguistiche" del passato (C vs Pascal o C vs. C ++ che era una discussione proxy sui paradigmi di programmazione). La valutazione dei tuoi strumenti è professionale.

Ci sono siti ed esempi che a volte colpiscono determinati linguaggi di programmazione. Questi vanno da abbastanza negativi a "cose strane divertenti nel mio linguaggio di programmazione preferito". Un modo è vedere quelli come critiche negative che non portano da nessuna parte, ma alla fine danno preziose informazioni sul linguaggio di programmazione:

Senza pensare al nostro strumento, non possiamo essere professionisti. Detto questo dovresti essere in grado di lavorare con strumenti sbagliati come programmatore.

Conclusione: il programmatore professionista si preoccupa dei linguaggi di programmazione perché si preoccupa degli strumenti. Come un automobilista, lui / lei ha dei favoriti e conosce i punti deboli e i benefici (e i pericoli di una macchina senza Airbag). Alla fine li guiderà tutti se necessario o sarà molto prudente (quando guiderà quel camion australiano di treni stradali).

    
risposta data 25.05.2013 - 11:08
fonte
1

Mi piace la risposta di James Anderson , ma voglio esaminare più da vicino la tua interpretazione dei commenti di Zed Shaw. Non credo che Shaw stia dicendo di essere "neutrale rispetto alle lingue". In effetti, l'unico modo per non diventare "ciechi" è prendersi cura abbastanza da imparare abbastanza da formare un'opinione positiva o negativa in modo da poter scegliere lo strumento migliore per fare cose interessanti. "

Dato che, a mio avviso (come sviluppatore e manager di lunga data di tali persone) un buon programmatore fa si preoccupa molto degli strumenti usati e non solo dell'output, perché sa abbastanza essere consapevoli di cosa funzionerà e cosa non funzionerà per la situazione attuale.

Guardando la tua analogia con lo scrittore, "come lo scrittore non si interessa della penna che usa - pensa al contenuto del LIBRO", in realtà farei l'analogia in questo modo (anche se credimi, gli scrittori si preoccupano delle penne :)) - uno scrittore vuole lanciare un messaggio, e il mezzo attraverso cui lo fa può essere un sonetto, un haiku, un romanzo o una canzone (e così via).

Uno "sviluppatore professionista" vuole creare un'architettura solida e un'applicazione scalabile, che soddisfi le esigenze degli stakeholder e così via - lui o lei potrebbe farlo con Ruby, Python , Java, qualsiasi cosa, e la decisione su ciò che è meglio sperare viene da una persona o una squadra che ha la capacità e la conoscenza di prendere in considerazione tutti i fattori.

Quindi, per quanto riguarda la tua domanda, "è un segno dello sviluppatore professionista, se non gli interessa quale lingua usare?" La mia risposta è che uno "sviluppatore professionista" fa si preoccupa di quale linguaggio viene usato, ha un'opinione ben formata a riguardo (al contrario di una risposta come "usa Ruby perché tutti i ragazzi sono bravi lo fanno" ), e se necessario può rimboccarsi le maniche e fare il lavoro anche se questo significa lavorare in Java invece che in Ruby (e così via).

Tuttavia, ricorda che le persone che lavorano in luoghi in cui la lingua è dettata per loro, e sono abbastanza bravi in quello che fanno in quella lingua, sono ancora molto "sviluppatori professionisti", ma potrebbero essere meno capaci di avere lunghe discussioni sull'idoneità della lingua per compiti se conoscono solo la lingua. Non li rende meno "pro", solo che non sarebbero le uniche persone che avrei in una stanza quando sollecito pensieri sulle lingue da usare per un'applicazione imminente.

    
risposta data 25.05.2013 - 14:36
fonte
1

Tutti gli sviluppatori dovrebbero comprendere i precetti di base della scrittura del codice pulito e della programmazione orientata agli oggetti (in generale qui).

Per quanto riguarda la conoscenza di quanto sopra, lo sviluppatore può essere sicuro di poter codificare in qualsiasi lingua applicabile, e questa è una buona cosa; TUTTAVIA, essere in grado di codificare in qualsiasi lingua non rende necessariamente uno sviluppatore GRANDE.

Come molti altri in questo post hanno sottolineato, la GRANDEZZA deriva dalla comprensione dei fondamentali, MA ANCHE avere una conoscenza sufficiente del dominio per selezionare lo strumento giusto per il lavoro giusto.

La scelta dello strumento giusto per il lavoro è una decisione complessa ed è composta da un contesto architettonico che coinvolge le esigenze dei portatori di interesse, l'uso previsto, il pubblico previsto, le metriche chiave delle prestazioni e così via.

Come sviluppatore, è bene essere in grado di accettare con sicurezza l'attività di codifica, insieme a una lingua prescritta. Se non si è d'accordo con una lingua prescritta, è sufficiente fornire ulteriori ragioni sostanziali, "perché non conosco quella lingua".

Una cosa che ho imparato su questo business è che c'è molto lavoro là fuori. Non devi intraprendere lavori che devono essere eseguiti con strumenti che ti mettono a disagio. Allo stesso tempo, personalmente attendo con impazienza la sfida di affrontare un linguaggio non familiare, e di solito imparo qualcosa di nuovo grazie a questo.

Spero che questo aiuti!

    
risposta data 25.05.2013 - 16:38
fonte
1

Ogni sviluppatore professionista dovrebbe guardare e chiedere a gran voce prove scientifiche ripetibili a favore o contro la moltitudine di strumenti e metodologie che usano. Dobbiamo allontanarci dal "Oh questo libro dice che è buono, quindi scommettiamo il progetto su questo" o "possiamo solo assumere programmatori che conoscono X così lascia usare X" modo di versare soldi inutilizzati su così tanti progetti e provare e metti un po 'di scienza dietro l'urlo .

    
risposta data 25.05.2013 - 17:19
fonte

Leggi altre domande sui tag