Chiacchierando con il programmatore PHP scontroso

Recentemente ho avuto l'opportunità di incontrare Chris Hartjes, o, come alcuni di voi potrebbero conoscerlo, "" The Grumpy Programmer. "Poiché ha recentemente pubblicato un nuovo ebook sullo sviluppo basato sui test in PHP, ho voluto scegliere il suo cervello un po!


D Sei ampiamente conosciuto come "The Grumpy Programmer". Come è nato questo titolo?

Non sono davvero così scontroso nella vita reale. Ok, forse un po '.

Mentre sono piuttosto scontroso quando si siede di fronte a un codice del computer, "The Grumpy Programmer" è più di un marchio; uno strumento di marketing più che altro. Avendo acquisito esperienza come programmatore, ho voluto condividere le mie idee per aiutare le altre persone e me stesso allo stesso tempo. Ho sentito uno dei modi per farlo accadere è stato quello di costruire il mio marchio personale, da qui la nascita di The Grumpy Programmer.

Ovviamente, devi avere alcune abilità per sostenere te stesso quando inizi a giocare ciò che è essenzialmente una versione cartoon di te stesso online. Non vorrei urlare così forte su tutte queste cose di prova se non sapessi davvero come farlo.

Non sono davvero così scontroso nella vita reale. Ok, forse un po '.


D Di recente hai auto-pubblicato "The Grumpy Programmer's Guide to Building Testable Applications". Cosa ti ha spinto a voler scrivere questo titolo specifico?

Mentre approfondivo il mondo del testing in PHP, ho scoperto che mancavano informazioni su come scrivere effettivamente codice che potresti testare. C'è un sacco di cose là fuori su come scrivere test, ma quella roba non importa se la tua applicazione è un disastro.

Scrivere codice che è disaccoppiato e consente di iniettare dipendenze non è particolarmente difficile, richiede solo tempo e disciplina. Queste cose sono scarse nel mondo della programmazione in questi giorni.


D Perché pensi che TDD, in generale, non sia diventato così onnipresente nella comunità di PHP come in altri linguaggi, come Ruby e Python? Pensi che stia cominciando a cambiare?

"Non ho tempo per testare" è un ritornello parlato dalla stragrande maggioranza dei programmatori nel mondo PHP.

I programmatori Python si preoccupano di come appare il loro codice e lo Zen di Python è scritto direttamente nell'interprete.

I rubyist sono stati esposti al concetto di sviluppo basato sui test sin dalla prima versione di Ruby on Rails.

PHP ti consente ancora di distruggere la gestione delle richieste, l'accesso al database e l'output HTML in un unico file che può essere distribuito in più ambienti rispetto a tutte le altre lingue combinate.

Penso che sia abbastanza ovvio perché TDD sia ancora una vendita difficile in PHP.

"Non ho tempo per testare" è un ritornello parlato dalla stragrande maggioranza dei programmatori nel mondo PHP. Immagino che abbiano il tempo di lavorare fino a tarda notte facendo il debug delle loro applicazioni invece di cogliere questi problemi prima. Sta migliorando, comunque. Ogni principale framework PHP ha suite di test complete e ogni giorno sento qualcuno su Twitter che ha iniziato a scrivere test per il proprio codice PHP. questo mi fa sentire bene.


D Secondo la tua opinione, qual è il più grande vantaggio per testare le tue applicazioni?

Metto alla prova le mie applicazioni quindi so che stanno funzionando correttamente invece di indovinare (o sperare) che funzionino correttamente.


D Utilizzi esclusivamente PHPUnit o preferisci alcune delle alternative più piccole, come Behat?

Uso PHPUnit per scrivere test di unità e Behat (insieme a Mink e vari driver di browser Web) per i test di accettazione degli utenti.

Esistono altri strumenti di test di unità / integrazione / funzionalità, ma PHPUnit è il mio strumento preferito perché molti altri strumenti si integrano perfettamente con esso.


Q Le applicazioni di test sono un po 'strane, nel complesso, l'idea è semplice. Ironia della sorte, però, per iniziare è necessaria una curva di apprendimento abbastanza ripida. C'era un articolo o un video specifico che improvvisamente ti ha fatto "capitare" tutti quegli anni fa?

Sto esplorando il codice di testing dal 2003. Quando ho visto SimpleTest e sono stato introdotto a TDD, ho notato qualcosa nella mia testa e ho capito il valore di queste pratiche.

Essere un evangelista collaudatore è un lavoro solitario e frustrante. Le persone non si rendono conto del valore dei test finché non li hanno a posto e vedono quanto sia facile aggiungere alcune nuove funzionalità e scoprono di aver rotto qualcos'altro prima che i loro clienti scoprissero.


Q Consiglieresti ai neofiti del mondo dello sviluppo di immergersi nei test, o aspettare un po 'prima di imparare come farlo? Penso che ci sia il merito di entrambi gli argomenti. Forse, se si introduce la "medicina nel cibo per cani" fin dall'inizio, non avranno alcun concetto di mai non testare le loro applicazioni!

Penso che si possa insegnare a qualcuno a programmare usando TDD, ma PHP potrebbe non essere lo strumento migliore per questo. La mancanza di un buon Read-Evaluate-Print Loop (REPL) integrato significa che è necessario molto più lavoro di installazione per creare un ambiente in cui le persone possano scrivere ed eseguire test in.

Python e Ruby, non essendo nati sul web, rendono molto più semplice l'importazione di moduli che gestiscono test ed esperimenti sulla riga di comando.


D Quali sono le tue opinioni sul vetriolo nei confronti di PHP ultimamente - facendo riferimento a vari post sui blog virali sull'argomento? È garantito?

Ogni lingua fa schifo a modo loro. Non ti piace il PHP? Non usarlo Non lavorare in luoghi che lo usano. Usa le lingue e gli strumenti che ti risuonano.

Le persone che ammiro nel mondo della programmazione usano più linguaggi e più strumenti mentre sono investiti nella risoluzione dei problemi, non indossando le loro preferenze linguistiche come un tatuaggio economico.


D Dove possiamo andare per tenere il passo con le novità di te?

Naturalmente, incoraggio le persone ad acquistare una copia del mio libro, disponibile su http://grumpy-testing.com. Attualmente sto pensando a una seconda edizione del libro completamente nuova, oa un libro su come utilizzare PHPUnit e Behat per testare le tue applicazioni PHP. Forse combinerò i due!

Se ti piace essere intrattenuto, ti suggerisco di seguirmi su Twitter. Inoltre, io blog qui.


Grazie ancora a Chris per aver chattato con noi. Quindi, ora, è tutto per te, John Q. Reader. Quali sono le tue opinioni sui test? Un requisito per lo sviluppo di applicazioni Web o un time waster eccessivamente limitato?