Alcuni programmatori conoscono alcuni segreti che noi non facciamo? [chiuso]

8

Non ti darò fastidio con i dettagli della mia discussione, quindi la presenterò sotto forma di una breve istanza.

Un ragazzo java ha seguito articoli e pubblicazioni di un famoso programmatore (una specie di Martin Fowler del mio paese). Dice che condivide alcuni segreti che altri famosi programmatori non condividono.

Non credo mai che ci siano alcuni segreti come i maghi nell'area di programmazione. Ma alcuni programmatori che non sono ancora bravi in quest'area pensano che altri famosi programmatori abbiano successo perché conoscono alcuni segreti che noi non conosciamo.

Non sono affatto d'accordo con questo e ne ho discusso con qualcuno e alla fine mi ha detto che hai 2 anni in questo settore e lui (java guy) ha 20 anni come programmatore professionista, quindi lui conosce meglio di te.

Volevo essere sicuro di non aver sbagliato. Ecco perché volevo sapere questo.

    
posta Freshblood 20.10.2011 - 10:16
fonte

18 risposte

54

Direi quasi che è il contrario ....

Ho lavorato con persone a cui piaceva essere ingannevoli per qualsiasi motivo. Certo, in realtà erano abbastanza bravi programmatori - quando presi nel vuoto - ma il codice che producevano era spesso abbastanza ottuso e difficile da mantenere da altri. Non ha senso fare qualcosa di intelligente che consente di risparmiare alcune sequenze di tasti, quando due anni dopo, qualcuno che mantiene il codice sta per perdere un giorno quando viene bloccato dal trucco.

In effetti, se dovessi nominare una cosa più importante che ho imparato nei miei dieci anni di esperienza commerciale come programmatore - è che la manutenibilità è importante . È al comando supremo molto al di sopra della conoscenza di alcuni oscuri hack e trucchi che potrebbero rivelarsi utili in rare situazioni, ma che quasi certamente renderà la base di codici più difficile da mantenere a lungo termine.

Per essere onesti, direi che tutta la codifica dovrebbe essere fatta in modo tale che ogni neolaureato con conoscenze di base relativamente basilari nella piattaforma / lingua data dovrebbe essere in grado di capirlo e lavorare con esso. Se è così complicato e oscuro che hai bisogno di qualcuno con 20 anni di esperienza nella lingua / piattaforma che conosce ogni piccolo trucco interno, allora il progetto è in grave difficoltà tecnica.

    
risposta data 06.06.2011 - 00:36
fonte
42

i programmatori con più esperienza conoscono più cose

sono non segreti

sembra che stia cercando di venderti qualcosa!

    
risposta data 06.06.2011 - 00:17
fonte
29

"finally he said to me you are 2 years in this area and he (java guy) is 20 years professional programmer so he knows better than you."

< rant >

Mi sono imbattuto per la prima volta in questo modo più di 30 anni fa. Mi ha fatto incazzare e ora mi fa incazzare ancora di più. Si chiama Argomento dall'autorità (AKA Prova dell'autorità ) ed è puro, non adulterato bullsh * t. Ogni persona che ho incontrato chi ha provato a rivendicarlo per se stesso ha avuto un serio problema con l'autostima ... e spesso sapeva molto meno sull'argomento di quello che fingevano di sapere.

Personalmente ho conosciuto diversi programmatori spaventosi che erano ancora al liceo e avevano programmato la programmazione solo per un anno o due. Solo 2 esempi: il sistema originale del forum è stato scritto nel 1973 da un quindicenne, e la primissima implementazione di multi-user instant messaging è stata scritta nel 1974 da un tredicenne che beveva latte mentre gli altri ingegneri stavano avendo una birra venerdì pomeriggio.

Conosco anche alcuni dinosauri che non hanno acquisito una nuova tecnologia in 10 o 15 anni. Molti di loro ammetteranno di non seguire ciò che sta accadendo nel tempo presente, ma ci sono alcuni che vedono questo come un distintivo d'onore. Non lo è.

< / rant >

Avendo quello fuori dal mio sistema, vorrei espandermi su un punto fatto nelle risposte di @Bobby Tables e @Developer Art: usare "segreti", scrivere "codice intelligente", o fare qualcosa nel codice che è una "prova" di quanto tu possa rendere oscuro qualcosa è sbagliato . Periodo. È l'atto di una persona immatura, auto-assorbita che non ha in mente il miglior interesse del progetto / azienda. Stanno installando mine terrestri di manutenzione che andranno in futuro in qualche momento, probabilmente dopo che saranno passate ad altri vittime datori di lavoro.

L'opposto di "intelligente" è scrivere un codice chiaro e conciso che usi bene il linguaggio di programmazione; utilizza standard di denominazione coerenti; appropriati commenti di fine linea; buoni commenti di blocco per spiegare le sezioni principali; è documentato (con esempi se del caso); e testato. Questo è ciò che offre un vero programmatore professionista .

E quando hanno finito, si girano e fanno da mentore alla prossima generazione di programmatori professionisti.

    
risposta data 06.06.2011 - 01:34
fonte
25

Non sono sicuro di come qualcuno possa parlare alla conoscenza ipotetica di un'altra persona, ma la mia esperienza è che non ci sono "segreti" alla programmazione del computer. In effetti, è un dominio quasi definito dall'apertura e dalla condivisione della conoscenza. Alcuni dei progetti più complessi (quelli che probabilmente potrebbero trarre maggior vantaggio da tali "segreti") sono open source, come il kernel di Linux.

Trovo l'idea che i programmatori stiano segretamente accaparrandosi tecniche speciali per essere assurde, ma è piuttosto difficile dimostrare un aspetto negativo, specialmente quando è puramente ipotetico.

    
risposta data 06.06.2011 - 00:17
fonte
22

Gli unici segreti di cui sono a conoscenza sono:

  • Niente è facile come sembra. Ciò che non vedi sono tutti i miei tentativi falliti.
  • Non devi mai smettere di imparare.
  • Non c'è alcun sostituto per il lavoro difficile buono .
risposta data 09.06.2011 - 20:32
fonte
9

So di un segreto che i programmatori più giovani non tendono a conoscere o accettare. Una volta che uno è avanzato abbastanza per capirlo, di solito lo ha capito da solo.

< TheSecret > Tutto il codice fa schifo. Soprattutto i tuoi. Anche il mio. Il codice di tutti i programmatori geniali del mondo --- sì, fa schifo, anche. Accettalo e fai il lavoro come meglio puoi. < / TheSecret >

    
risposta data 06.06.2011 - 04:39
fonte
9

Ho 50 anni di esperienza. Ho imparato un sacco di cose che i programmatori più giovani non hanno ancora. Sono perfettamente disposto a condividerli, e ci provo, in molti modi.

L'apprendimento è qualcosa che devi voler fare.

Sento spesso che la manutenibilità è molto importante e sono completamente d'accordo. Tuttavia, non viene gratis. Potrebbe richiedere più o meno una curva di apprendimento da parte del manutentore.

Un programmatore con una laurea magistrale in Informatica dovrebbe guardare al mio codice e dire che è irrinunciabile e pieno di segreti. In realtà, lui o lei semplicemente non ha finito di imparare cose nuove.

I piloti hanno un modo di dire, quando superi i test richiesti e ti viene consegnato il "biglietto" del tuo pilota. Dicono che è una licenza da imparare.

L'istruzione non si ferma quando ottieni un diploma. È solo iniziato.

    
risposta data 06.06.2011 - 22:08
fonte
7

Conoscere piccoli minuscoli segreti nascosti di certi linguaggi o strutture di programmazione non ha praticamente alcun valore pratico.

La maggior parte dello sviluppo del software pratico non incontra queste funzionalità nascoste nella loro pratica. Inoltre, una delle migliori pratiche suggerisce di evitare deliberatamente di avventurarsi in aree nascoste delle tecnologie che utilizzi perché rende il codice meno gestibile e più soggetto a errori poiché la maggior parte dei programmatori non conosce questi "segreti".

Invece di spendere / perdere (sceglierne uno) il tempo per apprendere i segreti di una tecnologia specifica, generalmente è meglio espandere la propria gamma di conoscenze e apprendere strumenti adiacenti o migliorare ancora le tue abilità di non-programmazione o imparare di più dal tuo business entra.

Con la velocità del cambiamento nel nostro campo, l'investimento profondo in uno strumento specifico non ne vale la pena - presto la conoscenza verrà ritirata.

Ora, solo se ti posizioni come esperto di tecnologia e intendi offrire i tuoi servizi di consulenza in questo specifico settore, ha senso investire in profondità. Altrimenti è uno sforzo inutile.

    
risposta data 06.06.2011 - 00:21
fonte
5

Ti stanno vendendo una distinta di beni qui. Qualcuno sta cercando di utilizzare il concetto di Mysterious Secrets ™ che ti rende un Programmatore Elite ™ con l'obiettivo di farti pagare per quei Mysterious Secrets ™. Il prossimo passo è qualcuno che ti offre di insegnarti quei misteri misteriosi ™ sotto forma di video o discorsi o podcast o libri mal stampati per il prezzo basso e basso di soli < inserisci quello che il venditore pensa che sarai disposto a pagare > .

Come posso essere sicuro di questo? Ho iniziato a programmare fin dagli anni '70 e conosco una metrica in più di linguaggi di programmazione rispetto a Java. Ho visto la programmazione (professionalmente e scolasticamente) dal più piccolo dei piccoli (sistemi incorporati con centinaia di byte - cioè byte - di RAM) fino a enormi pezzi di Big Iron ™.

C'è un segreto per essere un buon programmatore e solo uno: devi lavorare per migliorarti costantemente. Chiunque ti dica diversamente è un bugiardo e / o un pazzo.

    
risposta data 06.06.2011 - 03:28
fonte
4

L'unico segreto che non è noto ai giovani programmatori è: i programmatori non sono intelligenti come pensano .

Una volta che lo sai, smetti di scrivere codice che non capirai il prossimo mese, inizi ad apprezzare il controllo della versione, non correggi il codice che funziona già, documenta il tuo codice, non interpreti le specifiche, non si codificano le funzionalità che potrebbero essere utili in futuro, non si rifiuta il codice legacy, ...

In altre parole, il segreto è l'esperienza.

    
risposta data 06.06.2011 - 11:29
fonte
3

Ovviamente, qualcuno con 20 anni di esperienza avrà più, bene, esperienza di qualcuno con solo 2 anni. Ma non ci sono segreti - quale sarebbe il punto?

(Certo, qualcuno che sta cercando di mantenere un segreto vorrebbe dire che ...)

    
risposta data 06.06.2011 - 00:17
fonte
1

Mentre l'esperienza conta, possiamo imparare dalle esperienze degli altri. Ho appena finito di leggere "The Clean Coder" in cui Robert C Martin (Zio Bob) condivide gli errori che ha commesso e le lezioni che ha imparato. Molti dei quali sono elencati qui come risposta continua ad imparare.

    
risposta data 06.06.2011 - 04:44
fonte
1

Tutto ciò che solo pochi conoscono può essere considerato un segreto.

Tutto ciò che conosciamo oggi è stato scoperto una volta.

Quindi ogni cosa era una volta un segreto.

Alcune conoscenze si diffondono rapidamente e alcune si diffondono lentamente.

Alcuni programmatori non scoprono mai nulla da soli (, ma potrebbero applicare i segreti degli altri con molto successo).

Alcuni programmatori (ad esempio John Carmack, Ken Perlin, Donald Knuth) sembrano imbattersi ogni giorno in un nuovo segreto.

Quindi sì, ci sono programmatori che conoscono alcuni segreti che noi altri non conosciamo ... ancora.

    
risposta data 06.06.2011 - 19:20
fonte
1

La conoscenza da sola non è potere, ti concederò questo. Tuttavia, qualcuno potrebbe aver sviluppato le proprie abilità più di te, il che potrebbe significare che hanno suggerimenti e strategie che possono aiutarti ad avanzare. Nota che ci sono un paio di "può" nell'ultima frase in quanto non è una certezza che ti sposteranno davvero. Quindi, c'è la possibilità che questo non sia nulla di nuovo o scioccante per te.

Allo stesso tempo, ci sono varie pratiche e strategie che un tempo potrebbero sembrare radicali, anche se oggi le diamo per scontate. Il controllo del codice sorgente, l'integrazione continua e il test delle unità sono stati tutti nuovi ad un certo punto, giusto?

    
risposta data 06.06.2011 - 19:24
fonte
1

È possibile che tu e la maggior parte delle persone che rispondono a questa domanda ti stia concentrando troppo sulla parola "segreto".

Se togliamo la parte "nascosta" da esso, allora sì, è del tutto possibile che questo famoso programmatore abbia alcuni utili consigli e trucchi o conoscenze acquisite attraverso l'esperienza che potrebbero avvantaggiarti in qualche modo. Sto parlando di conoscenze come quelle che potresti trovare nei classici libri di SE o CS, come Rapid Development o The Pragmatic Programmer . Questo combinato con il duro lavoro può assolutamente aiutare.

Quindi in questo senso il famoso programmatore di successo potrebbe essere in possesso di conoscenza che altri non hanno ancora.

Ma non ci sono ricette segrete che trasformeranno un programmatore non così buono in quest'area in un famoso con molto successo.

    
risposta data 10.06.2011 - 02:11
fonte
0

Non ci sono piccoli segreti. Solo codice complicato ... alla fine sfornato in un codice efficiente semplificato.

    
risposta data 06.06.2011 - 07:44
fonte
0

Il segreto sta nel tipo di problema, area di problema e come lo risolvi. Forexample ho scritto un programma php per aprire un file e leggere i suoi dati e convertire i dati in xml e poi ho usato quel xml per presentare i dati in diversi elementi html, ad esempio box opzioni ecc. Dopo 1 anno abbiamo avuto un nuovo programmatore junior a far parte del team e lui erano bravi in algoritmi, quindi ha risolto matematicamente il problema, cosa che ha reso il codice difficile con le sinistre shift e dividendo gli array eccetera. ma il tempo di esecuzione è stato ridotto al 40% di quello che ho scritto. Il suo approccio per scrivere le dichiarazioni di php mi ha sorpreso. Quindi credo che ci siano alcuni trucchi che non esistono i segreti; un'altra cosa è quante sono le alternative che puoi pensare nella tua mente. Quindi il segreto non è in realtà un segreto che è la base dell'esperienza che si può risolvere risolvendo o affrontando diversi problemi, progetti, architetti ecc.

    
risposta data 06.06.2011 - 19:06
fonte
0

Scusa se mi manca qualcosa, ma non ho trovato questo sopra, almeno non esplicitamente dichiarato.

Il segreto sta effettivamente utilizzando gli strumenti giusti per il lavoro. In effetti sono gli strumenti che i vecchi programmatori amano e non divulgano così facilmente. Ti parleranno dei tuoi errori CONCRETE, ma raramente ti suggeriranno quale strumento potrebbe aiutarti a evitarli. I loro strumenti sono uno dei principali segreti della loro produttività.

Dando solo un esempio, si può memorizzare un libro di 600 pagine sui servizi web, comprendere le complessità di Specifiche WSDL (l'ho provato io stesso una volta .. per capire le complessità), e ancora non essere in grado di capire cosa non va con l'API che usa quando ci prova effettuare una chiamata a un servizio Web esistente.

D'altra parte, si può avere poca conoscenza delle specifiche (ma una chiara idea generale) e usa Wireshark ..

Si può ricordare tutto il C ++ (oh mio ..) e ancora non capisco cosa non va il suo codice scritto con vi e compilato con gcc (senza avvisi ..). Ma un IDE grafico con un debugger potrebbe aiutare ..

E poi Google. Il più grande segreto di tutti fino ad oggi.

    
risposta data 20.10.2011 - 10:18
fonte

Leggi altre domande sui tag