Chatter med Grumpy PHP Programmerer

Jeg har nylig hatt sjansen til å fange opp med Chris Hartjes, eller, som noen av dere kanskje kjenner ham, "" The Grumpy Programmer. "Fordi han nylig lanserte en ny eBok om testdrevet utvikling i PHP, ønsket jeg å hente sin hjerne litt!


Q Du er allment kjent som "The Grumpy Programmerer." Hvordan kom denne tittelen til??

Jeg er egentlig ikke så gretten i det virkelige livet. Ok, kanskje litt.

Mens jeg er ganske gretten når jeg sitter foran en datakoding, er "The Grumpy Programmerer" mer av et merke; et markedsføringsverktøy mer enn noe annet. Da jeg fikk erfaring som programmerer, ønsket jeg å dele mine ideer for å hjelpe andre mennesker og meg selv samtidig. Jeg følte en av måtene å få det til å skje var å bygge opp mitt eget personlige merke, dermed fødselen til The Grumpy Programmer.

Selvfølgelig må du ha noen ferdigheter til å ta deg selv tilbake når du begynner å spille hva som egentlig er en tegneserieversjon av deg selv online. Jeg ville ikke rope så høyt om alt dette teste ting hvis jeg egentlig ikke visste hvordan jeg skulle gjøre det.

Jeg er egentlig ikke så gretten i det virkelige livet. Ok, kanskje litt.


Q Du har nylig publisert "The Grumpy Programmer's Guide til Building Testable Applications." Hva gjorde at du vil skrive denne spesifikke tittelen?

Da jeg gravd dypere inn i testningsverdenen i PHP, oppdaget jeg at det som manglet, var informasjon om hvordan man faktisk skrev kode som du kunne teste. Det er mange ting der ute på hvordan du skriver tester, men det betyr ikke noe om søknaden din er et rot.

Skrive kode som er koblet fra og lar deg injisere avhengigheter i det er ikke spesielt vanskelig, det tar bare tid og disiplin. Disse tingene er mangelvare i programmeringsverdenen disse dager.


Q Hvorfor tror du at TDD generelt ikke har blitt så allestedsnærværende i PHP-fellesskapet som det har på andre språk, som Ruby og Python? Tror du det begynner å forandre seg?

"Jeg har ikke tid til å teste" er en refrain som snakkes av de aller fleste programmerere i PHP-verdenen.

Python programmerere bryr seg om hvordan koden ser ut og Zen of Python er skrevet rett inn i tolken.

Rubyists har blitt utsatt for begrepet testdrevet utvikling siden den første utgivelsen av Ruby on Rails.

PHP lar deg fortsatt kaste forespørselshåndtering, databasetilgang og HTML-utgang til en fil som kan distribueres i flere miljøer enn alle andre språk kombinert.

Jeg synes det er ganske tydelig hvorfor TDD fortsatt er vanskelig å selge i PHP.

"Jeg har ikke tid til å teste" er en refrain som snakkes av de aller fleste programmerere i PHP-verdenen. Jeg antar at de har tid til å jobbe sent på kvelden ved å feilsøke deres applikasjoner i stedet for å fange disse problemene tidligere. Det blir imidlertid bedre. Hvert stort PHP-rammeverk har omfattende testpakker, og hver dag hører jeg fra noen på Twitter at de har begynt å skrive tester for deres PHP-kode. Det får meg til å føle meg bra.


Q Etter din mening, hva er den største fordelen for å teste dine applikasjoner?

Jeg tester mine applikasjoner, slik at jeg vet at de fungerer riktig i stedet for å gjette (eller håper) at de fungerer riktig.


Q Bruker du utelukkende PHPUnit, eller foretrekker du noen av de mindre alternativene, som Behat?

Jeg bruker PHPUnit til å skrive enhetstester og Behat (sammen med Mink og forskjellige nettleserdrivere) for brukernes aksepttest.

Det finnes noen andre enheter / integrering / funksjonelle testverktøy der ute, men PHPUnit er mitt foretrukne verktøy fordi mange andre verktøy integrerer seg med det veldig bra.


Q Testing applikasjoner er litt rart, i det hele tatt er ideen en enkel. Ironisk nok, skjønt, å komme i gang med det krever en ganske bratt lærings kurve. Var det en bestemt artikkel eller video som plutselig fikk deg til å "få" det hele for mange år siden?

Jeg har spilt rundt kantene til testkoden siden 2003. Da jeg så SimpleTest og ble introdusert til TDD, klikkte noe i hodet mitt og jeg forsto verdien av disse praksisen.

Å være en test evangelist er en ensom, frustrerende jobb. Folk innser ikke verdien av testene før de har dem på plass og ser hvor lett det var å legge til ny funksjonalitet og oppdage at de brøt noe annet før kundene deres fant ut.


Q Vil du anbefale at nykommere til utviklingsverden dykker inn i testing, eller vent litt før du lærer hvordan du gjør det? Jeg tror det er fordel for begge argumenter. Kanskje, hvis du sniker "legemidlet inn i hundemat" fra starten, vil de ikke ha noen ide om aldri ikke teste deres applikasjoner!

Jeg tror at du kan lære noen programmering ved hjelp av TDD, men PHP er kanskje ikke det beste verktøyet for det. Mangelen på en god innebygd Read-Evaluate-Print Loop (REPL) betyr at det er mye mer oppsettarbeid som kreves for å skape et miljø for at folk kan skrive og kjøre tester i.

Python og Ruby, som ikke har blitt født på nettet, gjør det mye enklere å importere moduler som håndterer testing og eksperiment på kommandolinjen.


Q Hva er tankene dine på vitriol mot PHP i det siste - med henvisning til ulike virale blogginnlegg om emnet? Er det berettiget?

Hvert språk suger på sin egen måte. Liker ikke PHP? Ikke bruk den. Ikke bruk på steder som bruker den. Bruk språk og verktøy som resonerer med deg.

De menneskene jeg beundrer i programmeringsverdenen bruker flere språk og flere verktøy som de er investert i å løse problemer, og bruker ikke deres språkvalg som en billig tatovering.


Q Hvor kan vi gå for å holde tritt med det som er nytt fra deg?

Selvfølgelig oppfordrer jeg folk til å kjøpe en kopi av boken min, som er tilgjengelig på http://grumpy-testing.com. Jeg vurderer for tiden en helt ny andre utgave av boka, eller en bok om hvordan du bruker PHPUnit og Behat for å teste dine PHP-applikasjoner. Kanskje jeg vil kombinere de to!

Hvis du liker å bli underholdt, foreslår jeg at du følger meg på Twitter. Også, jeg blogger her.


Takk igjen til Chris for å chatte med oss. Så nå er det overfor deg, John Q. Reader. Hva er dine tanker om testing? Et krav til webapplikasjonsutvikling, eller en overhypet tidsavbrudd?