[Rant] Programmatori Che Non Sanno Programmare

[Rant] Programmatori Che Non Sanno Programmare

Posted by DElyMyth on Wed, 2007-02-28 20:39 in

Technorati, Technorati, Technorati, Technorati

E' da tempo che non scrivo un bel Rant.
E oggi, in un periodo in cui (sento l'avvicinarsi della primavera, chiedo venia) sono in vena di contestazioni generalizzate, mi trovo un link a questa pagina su una mailing list che seguo, affezionatamente, da anni.
Lo spunto (al link) e' dato dal fatto che e' (purtroppo) raro trovare programmatori realmente in grado di programmare.

Triste realta'.
Molto triste.
L'ho vista anche io, nella mia vita lavorativa che ormai si avvicina al decennio.
Gente che asserisce con somma convinzione di saper programmare in 800 linguaggi e che (complimenti!) e' in grado di ricordarsi tutte le funzioni di tutti i linguaggi che asserisce di conoscere...
Ma che messa di fronte ad un problema scrive quintalate di codice (per certi versi definibile come bloatware) per eseguire un algoritmo semplice semplice traducibile in poche righe di codice 1000 volte piu' efficiente.

Possiamo definirla una crisi del settore?
Nah, non direi, e' una cosa che bene o male (penso) succede in qualunque settore, ed una cosa che (secondo me) dipende da quanto una persona e' o meno portata per una certa attivita'.
Nel caso specifico, per l'attivita' di programmatore.

Coding Horror suggerisce di fare, in sede di colloquio, semplici "esami" (che chiama "FizzBuzz") per valutare la capacita' del candidato di codificare semplici algoritmi.
Pratica non molto diffusa a dire il vero, tanto che, quando mi sono trovata di fronte ad un colloquio del genere, ne sono uscita basita (con tutto che poi ho passato l'esame).
In cosa consiste l'esame?
Beh, semplicemente, invece che chiedere all'aspirante programmatore lo scibile in fatto di funzioni (che ricordarle tutte, specie se si e' programmato in piu' linguaggi, e' complesso), gli si chiede di eseguire, magari sotto forma di meta-codice o diagrammi di flusso (questi sconosciuti!) semplici operazioni.

Cicli banali, che consistano di for (o while), case, if... then... else... eccetera.
Senza badare troppo alla sintassi (il Syntax Error viene sempre segnalato), ma badando all'efficienza del codice e al metodo.
Un metodo valido per capire se la persona e' in grado, anche se con una reference guide alla mano, di affrontare la stesura di codice.
E' cosi' che l'anno scorso mi sono trovata a scrivere un intero programma in JAVA/JSP, linguaggio che mai prima di allora avevo utilizzato approfonditamente.
Con un colloquio fatto di test generici, diagrammi di flusso, descrizioni teoriche di metodologie e non esercitazioni pratiche o questionari su "cosa hai fatto nella tua vita precedente".
Colloquio fattomi da una persona con cui ho avuto modo di lavorare bene per qualche mese, una persona che, evidentemente, sapeva quello che faceva (scrivere codice).

Ne e' nata, in pochi mesi (due), un'applicazione completa, con codice modulare e molto portabile (tanto che alla fine l'ho tradotto in PHP in pochi giorni).
Un'applicazione che a commissionarla ad alcune aziende ti trovi a sentire preventivi allucinanti, richieste di mesi e mesi solo per una demo semi-funzionante...
Quando una persona da sola (io, e vado fiera di aver dimostrato a me stessa questa cosa), in tre mesi, e' in grado di scrivere un'applicazione analoga.
Certo, la qualita' estetica lasciava un po' a desiderare (sinceramente, non sono un grafico ne' penso di essere portata per la cosa), ma il codice era piu' che valido, piu' snello e performante di altre cose che ho trovato in giro.

Purtroppo pero', nel pessimismo che mi caratterizza quando tratto di questioni analoghe, non penso che questo tipo di esame (Diagrammi di Flusso e semplici algoritmi in meta-codice) si possa diffondere...
Forse e' perche' talvolta le stesse persone che esaminano i candidati non saprebbero come eseguire un test del genere, ma questa ipotesi e' forse troppo pessimistica, e non ci voglio credere nemmeno io.

Riferimenti:
Coding Horror

Comment viewing options
Select your preferred way to display the comments and click "Save settings" to activate your changes.
si e no

hai ragione sul fatto che la gente millanta di saper progammare confondendo la conoscenza della tecnica di un linguaggio (o più linguaggi) con l'attitudine al la risoluzione efficace di problemi. A tal riguardo però dissento sull'ottimizzazione per un motivo: programmando ad oggetti si può entro certi limiti ottimizzare poi quanto ad efficienza del codice, ma non si può assolutamente prescindere invece da una (per così dire) ottimizzazione-razionalizzazione della struttura del codice. Questo è secondo me il punto che richiede maggiore attenzione, poichè trovarsi a migliorare l'efficienza di un singolo ed iper-specializzato task è entro certi limiti un compito molto meno gravoso dell'effettuare una razionalizzazione di un design cresciuto in maniera grossolana o totalmente erronea, magari mascherato proprio dalla capacità di programmatori bravissimi nello scrivere un programma in dieci righe, senza tenere conto della futura estensibilità e chiarezza/manutenibilità dello stesso...

Posted by seralf (not verified) on Thu, 2007-03-01 04:58
Ottimizzazione

Si, mi trovi d'accordo sull'ottimizzazione e soprattutto sul codice razionalizzato...
Diciamo che e' meglio usare routine semplici, modulari e modulabili piuttosto che fare i puristi a tutti i costi, specie se un giorno qualcuno (anche il programmatore stesso) dovra' mettere le mani nel codice.

Ho lavorato su codice cresciuto "a rate", e alla fine trovare quale virgola cambiare per aggiungere un microbo in una "select" e' stato un lavoro di qualche ora (query costruite in 200 funzioni diverse, nel senso che per costruire una singola select venivano chiamate davvero almeno 5 funzioni php diverse, e questo posso assicurare che causa emicranie da incubo!)

DElyMyth's picture
Posted by DElyMyth on Thu, 2007-03-01 09:14
sono d'accordo

Ne parlava anche Joel Spolsky sul suo blog: lui dic ehce oggi i programmatori sanno molto di OOP, modularizzazione, relazioni "is-a" ma poi non sono in grado di distinguere una funzione di complessità quadratica da una lineare.
Diceva pure che un vero programmatore deve saper programmare in C ed incredibile trovare programmatore che non sappia usare i puntatori.

Posted by alepuzio (not verified) on Thu, 2007-03-01 09:36
Post new comment
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <p>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.