it-swarm.it

Qual è il mito più assurdo sui problemi di programmazione?

Per dirla in altro modo ... Qual è il malinteso più frustrante e ritenuto più comune sulla programmazione, che hai riscontrato?

Quali miti/idee sbagliate diffusi e di lunga data trovi difficile da dissipare/correggere per i programmatori.

Per favore, spiega perché questo è un mito.

101
Maniero

Questo perché sei un programmatore, sai come riparare la macchina infestata dai virus di [persona].

272
Neth

Una cosa comune delle risorse umane che mi fa impazzire quando sono alla ricerca di lavoro: l'assunto implicito che tutte le competenze di codifica sono specifiche della lingua, che non esiste alcuna competenza di ingegneria del software che trascenda i set di comandi. Quell'esperienza decennale in Java e altri cinque in Perl significano che saresti completamente inutile in un progetto che usa, diciamo, C #.

"Sì, c'è una curva di apprendimento. Ma ho fatto transizioni più difficili di così. Ti farò un accordo, pagherò l'80% per il primo mese e alla fine di quel periodo se non lo sono ... oh , aspetta, in realtà non stiamo avendo questa conversazione, perché la tua scimmia delle risorse umane ha semplicemente eliminato la mia applicazione. "

266
BlairHippo

Se non stai scrivendo, non stai lavorando.

Credo che gli sguardi zombi in bianco e le passeggiate nel caffè siano essenziali per i programmatori che organizzano le cose nella loro testa.

260
burnt_hand

che puoi accelerare un progetto in ritardo, semplicemente lanciando più persone su di esso.

158
chrmue

Quel software di scrittura è facile.

In che altro modo spieghi tutti questi progetti che durano nel tempo e oltre il budget e le persone (politici, media ecc.) Sono ancora sorpresi, e i clienti si lamentano quando dici loro che il loro "piccolo sito Web" (o qualunque cosa) prenderà effettivamente 6 mesi per lo sviluppo e il costo di diverse migliaia di dollari (sterline, euro, [inserire la valuta di scelta])

Con requisiti sfocati e in continua evoluzione, a volte penso che sia sorprendente che qualsiasi software venga mai completato!

So che è un po 'più complicato di così;)

132
ChrisF

La complessità dell'app è direttamente proporzionale alla complessità dell'interfaccia utente. Con questo ragionamento, dovresti essere in grado di costruire Google o Twitter per un fine settimana.

114
JohnFx

Tutti i programmatori sono bravi in ​​matematica. :-)

95
David Cary

Ogni ragazzino adolescente che fa hacking con il computer ha una capacità equivalente (o superiore) di un programmatore di lavoro veterano.

Mio nipote di 14 anni è bravo con i computer e gli sto pagando $ 10/ora per falciare il prato. Perché dovrei pagarti sei cifre per scrivere il prossimo FaceBook?

95
JohnFx

Che in tempo reale significa veloce.

Dichiarare "I pacchetti devono essere elaborati in tempo reale." è inutile e il gemello malvagio ... risponde "Quanto velocemente deve accadere X?" con "Tempo reale" è probabilmente meno che inutile. ..bordando su stupidi piuttosto che ignoranti.

Tempo reale significa che, in poche parole, quella funzione Y richiederà sempre X quantità di tempo e che qualsiasi deviazione indica un errore grave. La durata di X non definisce "in tempo reale", potrebbe essere di sei microsecondi o sei giorni. Che puoi determinare la funzione Y richiederà X il tempo definisce "in tempo reale". I sistemi in tempo reale sono deterministici secondo questa definizione.

Quindi smettila ..

69
Rusty

Perché non lo scrivete semplicemente la prima volta, piuttosto che passare così tanto tempo a digitare il codice errato e poi a leggere il codice cercando di trovare i bug?

:-) :-) :-) :-)

69
David Cary

Se non sei andato all'università, non sei adatto per il lavoro

64
user2528

Quell'ottimizzazione prematura significa che non dovresti ottimizzare affatto. Ho visto database più orribilmente cattivi perché nessuno voleva considerare le prestazioni (fondamentali per qualsiasi sistema di database) nella progettazione in quanto si trattava di ottimizzazione prematura di qualsiasi altro problema di progettazione del database. Spazzatura, ci sono noti assassini delle prestazioni, smetti di usarli come prima scelta.

Un altro mito, è troppo difficile riformattare il database. No, ma devi considerare come eseguire il refactoring in fase di progettazione per farlo in modo efficace. E a proposito, più tempo aspetti per risolvere quel fastidioso problema di prestazioni basato sul design, più difficile sarà risolvere.

Un altro mito negativo, il design del database dovrebbe riflettere OOP principi. No, i database sono progettati per funzionare con insiemi non OOP principi. Alcuni OOP le cose causeranno orribili problemi di prestazioni e altri sono solo sciocchi in termini di database.

Infine, è necessario applicare l'integrità dei dati nell'applicazione. I database dureranno oltre l'applicazione e perderebbero le regole quando l'applicazione viene sostituita, le applicazioni multiple accederanno a loro e spesso ci sarà la necessità di eseguire query dirette per riparare cose che non passano attraverso l'applicazione. Non ho mai visto un database che si rifiuta di imporre l'integrità dei dati nella base di dati che ha buoni dati.

61
HLGEM

Che esiste una fonte mitica di migliori pratiche assolute.

Nessuna deviazione può mai essere giustificata.

Nessun documento che afferma di definire qualcosa come una buona pratica può mai essere messo in discussione.

53
Bill

Il fatto che il marketing sembra pensare che l'aggiunta di una tonnellata di piccole funzionalità sia meno lavoro rispetto all'aggiunta di una singola funzionalità, ma piuttosto pesante. Che probabilmente è un caso più specifico dell'idea sbagliata che "il cambio di attività non ha costi generali".

51
Giel

Quel codice di commento non è necessario o quel "buon codice non ha bisogno di commenti". A volte è necessario spiegare cosa sta facendo un bit complesso di codice. Inoltre, commentare sezioni di codice ti aiuta a scremare la lettura in modo molto più efficace.

50
DisgruntledGoat

Il mito peggiore: se stai programmando da molto tempo, puoi essere facilmente un Project Manager.

E che dovresti diventare un project manager se stai programmando da molto tempo.

50
Namwar Rizvi

Se utilizziamo qualcosa di diverso da Java, C # e C++ nel nostro progetto, non troveremo programmatori che lo supportino.

50
P Shved

Java è solo C++ con classi diverse.

42
Gordon
33
TheLQ

Probabilmente il più pericoloso che ho visto, perché viene accettato così prontamente, è che essere in grado di scrivere codice velocemente è buono, e quindi più rapidamente puoi scrivere [inserire funzionalità qui] in una determinata lingua, migliore è la lingua è.

Questo è un serio esempio di ottimizzazione prematura, dal momento che molto più lavoro va nel codice mantenimento rispetto alla sua creazione. Ciò significa che è molto più importante scrivere un codice che sia facile da leggere, comprendere e eseguire il debug del codice che sia facile da scrivere rapidamente, e facilitare il codice di facile lettura è una misura molto più utile della qualità del linguaggio.

33
Mason Wheeler

che come programmatore sai tutto sulle ultime tendenze hardware, overclocking, case mod, ecc. amici e parenti ti consultano quando acquistano i loro ingranaggi.

31
setzamora

Le lezioni di produzione possono essere applicate al processo di sviluppo del software.

31
Mike King

Che quando i programmatori dicono che è molto difficile da fare/semplicemente impossibile, le risorse umane pensano che siano pigre e non motivate

30
koos303

Ci deve essere un programma open source per la mia attività. Non puoi semplicemente scaricarlo e modificare le mie esigenze.

28
Tim Murphy

Ho avuto più di una persona che mi chiedeva cosa significhi programmare solo per realizzare a metà della conversazione che pensano davvero che programmiamo direttamente in binario o usando simboli matematici.

Non so se voglio sfatare quel mito, mi fa sembrare davvero intelligente!

27
JohnFx

Penso che il più grande malinteso sia che è più importante essere in grado di scrivere facilmente il codice piuttosto che essere in grado di leggere e comprendere il codice.

26

La programmazione è proprio come il lavoro in catena di montaggio. Stai lavorando a un prodotto per un certo periodo (forse con i colleghi) e alla fine lo spedisci. Proprio come costruire una casa di mattoni.

Contra: la programmazione contiene molta creatività e pianificazione. È arte. Come il muratore, anche un programmatore conosce la differenza tra modellare un mattone e progettare un'intera cattedrale.

24
Josua Schmid

Il porting di un programma su C++ lo renderà automaticamente più veloce.

24
JohnFx

Qualsiasi ambiente di programmazione con un visual designer di qualche tipo lo farà in modo che gli utenti aziendali possano "scrivere" il programma e che non siano necessari veri programmatori.

21
Jesse C. Slicer

Riutilizzo di OOP. È il più grande errore commercializzato nella programmazione.

20
clrod

L'apprendimento della sintassi è la parte difficile.

19
palto

2 miti che voglio aver rivelato. Molti dei miei amici non capiscono che Java e JavaScript sono completamente diversi, e molti non programmatori che conosco non capiscono che esiste più di una lingua. Uno dei miei amici Stavo solo iniziando a programmare e avevo bisogno di un po 'di aiuto da parte mia', ovviamente non sapeva nemmeno in che lingua stava lavorando.

Entrambi escono molto per me.

15
Doug

L'assegnazione di una priorità diversa da "1" significa che l'attività non verrà mai eseguita.

Ho avuto un manager che mi chiedeva di personalizzare lo strumento di tracciamento dei bug con le priorità 1a, 1b, 1c, 1d e 1e in modo che potesse assegnare tutto come una variazione della priorità 1, ma potevamo ancora organizzare il lavoro.

E sì, ho superato tutti i problemi di "priorità 1". Ma prima che potessi procedere alle questioni che erano ancora nella priorità 2-5, il manager mi ha fatto riassegnare le priorità di tali questioni ai cinque livelli di priorità 1.

(Mi rendo conto che questo mito non è specifico alla programmazione, ma questo è vero per molte altre risposte su questo thread.)

15
Bill Karwin

Finché il computer capisce il codice digitato, questo è tutto ciò che conta. Pertanto, digitare commenti e utilizzare nomi di variabili più lunghi di due lettere è una perdita di tempo. :-(

13
David Cary

Il modulo di tastiera è legato alla capacità di programmazione. Scherzi a parte, uno degli insegnanti del mio liceo mi ha detto "Non puoi scrivere velocemente se non puoi scrivere velocemente". La mia risposta è stata: "È come dire che posso scrivere il Great American Novel solo se lo faccio in corsivo".

12
quanticle

Che il programmatore prototipico:

  • entra al lavoro dopo le 11
  • non beve altro che Mountain Dew
  • ama il cibo indiano o il sushi
  • vive da solo per scelta (con i genitori e/o nel seminterrato)
  • resta sveglio fino alle 3 del mattino giocando ai videogiochi
12
Kelly S. French

Quella notazione ungherese significa solo che hai il prefisso dei nomi delle variabili con un tipo (come int iArraylength = 5;) invece del tipo di dati che contiene (come int xcTextfield = getTextfield (). Coord.x;)

"Systems Hungarian notation"! = "App ungherese notazione"

10
Zaz

Software privo di bug. In seguito sono venuto a sapere che ogni programma funzionava ancora con Bugs e tutto il gioco riguardava la realizzazione dei Requisiti del cliente.

10
Gopi

Che qualsiasi codice scritto in un linguaggio OOP (C #, C++, Java) da chiunque sia automaticamente orientato agli oggetti e "riutilizzabile".

Non è stato solo una volta che mi è stato chiesto di riutilizzare un blocco di codice di mille righe o una classe in un'architettura che non aveva alcun modello tranne l'eredità (che non conta nemmeno). Apparentemente, il copia e incolla conta anche come un buon riutilizzo del codice per chiunque non conosca la differenza tra un linguaggio OO e OOP stesso.

Un TDWTF preferito che accade ogni tanto: Rifiuto del codice

9
Jonn

Le app Web possono essere "7x24".

Chiedi a qualsiasi uomo d'affari quali tempi di inattività sono consentiti e insistono sempre sul tempo di attività al 100%. Non dimenticare che 1 minuto di inattività alla settimana è ancora del 99,99% ed è quasi irrealizzabile per un'organizzazione più piccola di una grande utility.

9
bmb

Tutti i programmi scritti in C/C++ verranno eseguiti più velocemente dei programmi equivalenti Java/C #.

7

Che esiste un unico "migliore" strumento/soluzione/risposta a qualsiasi problema/domanda

7
Murph

Il più grande mito è che è facile.

7
Fortyrunner

I programmatori che sono diventati manager dicendo:

"Tre settimane ?! Ho codificato in passato, quanto difficile può essere?"

6
Arcturus

Che qualsiasi M.Sc. con un corso di programmazione è sufficiente essere assunto come sviluppatore di software.

6
FeatureCreep

Questo perché sei un programmatore, sai come riparare la fotocopiatrice.

6
Jeff Siver

Quali idee sbagliate sono diffuse da molto tempo

C'è una convinzione molto diffusa tra i programmatori su come trovare problemi di prestazioni. È che per trovarli, devi misurarli.

Il contro-esempio più semplice è un loop infinito (indesiderato). Ci vuole il 100% del tempo, facendo cose completamente inutili.

Come trovi il problema? Lo prendi sotto un debugger e lo metti in pausa, fermalo o interrompilo. Quindi guardi lo stack, perché sai che il loop è da qualche parte su di esso. L'hai colto nell'atto. L'hai misurato? o semplicemente lo trovi?

Supponiamo che non sia un ciclo infinito, ci vuole solo più tempo di quanto pensi necessario. Supponiamo che il lavoro non necessario sia inferiore al 100%, come 90%, 50% o 20%. È la stessa idea Se lo metti in pausa, quella percentuale è la possibilità che la cogli nell'atto. (Non devi sapere qual è la percentuale per prenderlo.)

Per sicurezza, puoi metterlo in pausa più volte. Non appena lo vedi fare qualcosa, in soli due campioni, che puoi sostituire con qualcosa di più veloce, puoi risolverlo per un Nice speedup. Non solo, hai appena reso più facile trovare altri problemi, perché il tempo è più breve e richiedono una percentuale maggiore. Questo può "Snowball" fino a quando il codice è molto vicino all'ottimale.

Naturalmente, se vuoi misurare il problema, basta prendere più campioni, ma non è un prerequisito per trovarlo.

Le persone mi dicono, volentieri, che questo è ciò che fanno i profiler di campionamento ma lo fanno meglio. Molti preferiscono discutere la questione piuttosto che vedere da soli.

4
Mike Dunlavey

Che essere un manager è meglio che essere un programmatore. Essere un manager è noioso. Chiunque sia passato alla pura gestione non ha mai amato la programmazione all'inizio.

4
zhenka

Computer e software migliorano il processo di lavoro da solo.

4
aasc

Tra i programmatori: Delphi è morto, sta morendo o è in supporto vitale.

3
Peter Turner

Che un manager sia al corrente del codice che i suoi sviluppatori stanno scrivendo.

3
Mike Mooney

Esiste un linguaggio chiamato C/C++

O che le lingue sono così vicine che le abilità sono intercambiabili.

3
Martin York

Quel software di scrittura riguarda in realtà la scrittura di codice.

2
Craig Norton

Molte persone tendono a pensare che JavaScript sia simile al C++ e non capiscono che in realtà utilizza l'ereditarietà del prototipo.

1
diadem

Che i linguaggi di programmazione cambiano continuamente.

Questo potrebbe essere stato tanto tempo fa in passato ...
Ma al giorno d'oggi le modifiche sono principalmente funzionalità extra che cercano di non violare il codice esistente.

1
Tamara Wijsman

Perché i programmatori insistono nel scrivere bug? (Proviene da una persona di marketing + tester che non può mai ottenere una segnalazione di bug fatta correttamente).

1
Dorin Lazăr
  • Che OO significa qualità.
  • Che l'approccio OO è l'approccio giusto.
  • Che il compito di un programmatore è scrivere codice.
  • Quella lingua conta.
0
Fredy

L'intero mentalità hollywoodiana (per mancanza di un nome migliore) che ogni volta che un programmatore in una serie di film/tv parla, deve articolare ogni tecnologia di cui ha bisogno ( I ho bisogno di un PHP e un back-end MySQL !!! 11 ) ... E poi qualche altro che non ha alcun senso in tutto ovviamente.

Se parlassi in questo modo probabilmente verrei preso a calci nelle palle.

0

Utilizzo dell'inglese (o della tua lingua madre) per descrivere un problema:

è più utile che fornire un esempio compilabile del codice che illustra il problema.

0
Martin York