Brute Force Coding

Dopo l'ennesima volta che mi trovo a vedere del codice SQL Server fatto scritto veramente male ma comunque funzionante in qualche modo, sento il bisogno di trovare un termine che definisca questa situazione, in cui il codice scritto in effetti funziona, ma in modo cosi rocambolesco e poco performante che il problema si nasconde dietro l'angolo più vicino. E per problema intendo lock giganteschi, deadlock a go go, tempi di esecuzione esagerati, potenziale inconsistenza nei dati e quindi risultati errati.

Come definire quindi del codice che è si funzionante ma è di fatto una bomba ad orologeria e che indica a chiunque abbia un minimo di conoscenza in materia, che l'autore è una persona con tanta buona volontà ma nessuna idea di ciò che - da un punto di vista tecnico - sta veramente facendo?

Serve un termine per poter far capire a un qualsiasi interlocutore che il codice incriminato è stato sviluppato impiegando la minor quantità di intelligenza possibile, implementando non la soluzione più corretta, ma la più semplice e la prima venuta in mente.

Questo significa che il tutto funziona ma necessita di risorse ingiustificate e nel medio e lungo termine rappresenterà un costo costante perchè sanno frequenti gli interventi che dovranno essere fatti per rendere il sistema funzionate correttamente, dato che il codice spreca risorse in modo esagerato.

Bene, per questa condizione ho finalmente trovato un termine che rende bene l'idea: Brute Force Coding.

Il "Brute Force Coding" indica una situazione in cui il codice (o la soluzione) risolve il problema assegnato non utilizzando la soluzione più corretta o cmq la soluzione ideale in termini di rapporto costi/benefici, ma semplicemente la soluzione più semplice, senza che essa sia stata verificata in pratica, dimostrandosi effettivamente la soluzione più semplice e corretta.

Per "corretta" non intendo semplicemente la produzione di risultati corretti, quello è scontato, quanto l'adozione dell'algortimo corretto affinche tale soluzione rimanaga valida per tutto il tempo in cui i presupposti iniziali non cambiano.

Questo non significa che si debbano preferire soluzioni complesse, assolutamente. La regola è "Make everything as simple as possible, but not simpler" è sempre valida, e il concetto di "Brute Force Coding" non fa nient'altro che rafforzarla.

Perchè "Brute Force"? Perchè rende bene l'idea dell'assenza di intelligenza. Il termine è utilizzato - come immagino sappiate tutti -  in ambito di sicurezza ad indicare la soluzione più semplice e meno efficiente che permette ad una persona di scoprire una password e più in generale di portare un attacco ad un sistema. Un "Brute Force Attack" consiste tipicamente nella semplice prova di tutte le combinazioni possibili, fino a scoprire la password.

Il tutto funziona perfettamente, peccato che la soluzione sia cosi elementare e barbara da essere utilizzabile solo in condizioni di estrema semplicità. Appena la password è minimamente complessa tale approccio non porta a nessun risultato, ma consuma ugualmente molte risorse.

"Brute Force Coding", d'ora in poi ho un'arma in più per spiegare ai non tecnici da dove nascono gran parte dei loro problemi.

Published mercoledì 1 ottobre 2008 12.39 by dmauri
Filed under:

Comments

# re: Brute Force Coding

giovedì 2 ottobre 2008 10.48 by lbianchi

Il termine "Brute Force Coding" rende molto bene l'idea...

Lo adotterò anch'io da adesso in poi per quelle che definivo fino ad oggi "applicazioni che si reggono sugli spilli"... ;-)

# SQL Server 2008 T-SQL Fundamentals

domenica 4 gennaio 2009 11.44 by Impedance Mismatch

Per iniziare bene il nuovo anno il primo post non può che essere dedicato al libro di Itzik, che