Book Review: The Productive Programmer

While at the PHP UK Conference, O'Reilly had a stand. A new series of books caught my attention because they were not the standard "animal on white cover" book I had come to expect from O'Reilly. After looking at those books, I made my pick and went for Neal Ford's The Productive Programmer. A wise choice, as it soon turned out.

Now, the name Neal Ford wasn't really familiar to me. Which is not surprising, as he is not at all someone from the PHP community. Ford is mostly active in Java, .NET and Ruby (as I gather from his book) as he works for ThoughtWorks (where he works with people like Martin Fowler!). This is pretty clear from the book, which does not even a single time mention PHP at all (even when talking about dynamic languages). This is not at all a problem though, since the book is pretty much language-independent. Though examples are sometimes given, the examples are usually pretty clear and easy to apply to PHP with a bit of thought.

So what is the book about? Basically, it is a programmer efficiency guide. It goes through several tools, pieces of software but also development approaches that will make your developer life easier and more efficient. There are two main parts, 'Mechanics' and 'Practice'. The Mechanics part goes into such topics as accelerating your computer usage, focussing on the task at hand, automating common tasks. The Practice part goes more  into approaches for development, such as Test-Driven Design, Static Analysis, some lessons from ancient philosophers that can be applied to modern software development, meta programming and much more. In this review, I want to highlight a few things I've picked up from the book. Be aware though that there are many more useful lessons to be learned from this book!

Windows
It has been a long while since I've really used Windows, and this book gives lots of examples for all operating systems. Now, I've been used to the commandline for instance in linux and OSX for quite some time, and was convinced that there was no serious commandline option for Windows (or any other really useful tools for power users). Though I don't use them since I don't use Windows at the moment, I was quite impressed by the amount of power user tools, both from Microsoft and from third parties, there are for Windows these days. This was truely an eye-opener for me.

Automation
I've been using several automation tasks myself for tasks that are either boring or prone to errors (this is one of the reasons why I've liked symfony ever since I came by it). Ford takes this even a step further. He basically advocates that for any task that can be automated, you try to write a simple script that automates that task. It is not required to have the most beautiful code, but a lot of the tasks that you do once have the chance of having to be repeated. Once you've written a simple script to do the task, you can actually repeat it quite easily. If it turns out that you need to do the task quite regularly, it usually pays off to refactor your script to become better/more powerful.

Philosophers
It is nice to see Ford mention some nice lessons from ancient philosophers that can still be applied to software development, such as Aristotle's Essential and Accidental Properties and Occam's Razor. When reading this, it definitely rings quite a few bells. These are things any serious developer has come by.

Question Authority
The chapter named 'Question Authority' is one of these things that makes perfect sense, but you usually don't consider it. Basically, Ford tells us to don't do things "just because it has always been done that way". He tells us to think out of the box, and question the default approach if another approach makes more sense. I could easily recognize the "angry monkey" behaviour Ford was describing from projects I've been involved in and people I've met over the years.

A great book!

As with a lot of great books, there's quite a bit of information in this book that you'd consider common sense, until you think of how you do it yourself. Apparently, even though it is common sense, we don't really do it ourselves that often. This book is a good reminder of common sense and how it can and should be applied. Aside from that there's discussion on quite a few tools and approaches for software development that were at least new to me and will probably be new to a lot of people in the PHP community. I highly recommend this book to anyone in the PHP community.
Add comment

Comments

gravatar barometers for the home: promega flipper rack ref: y9341. products and lubricants and is the direct responsibility of subcommittee d02.07 on flow properties. and that is what helps to keep the market unique and allows people to make money in real estate. the "coffee cup'' calorimeter.
March 9, 2013
gravatar Send Fax From Laptop Free: lan promote * facsimile playing around not necessarily a inconvenience? understanding the need for using email fax fax machines also save supplies paperless fax xiang jie - arcade monitor chassis are you looking for the finest payday loan lenders that are fax based, the most inexpensive, and with the best terms? go to to find the short list of excellent options. but we can not ignore the lengthy process. the dawn of online faxing has made a lot of businesses and companies mobile. find out if you have to pay extra for a toll free number? some companies will give you this for free while others may charge either a monthly fee or a higher per minute charge for this service. a bachelor who thinks that technology is a part of everyone's life.
May 15, 2013
gravatar mp3 player touch screen with camera and wifi: trying to burn .wma files to cd to play on the cd player. when looking to make a baby photo album, there are several things to consider. electronic componets. bryston bcd-1 cd player.
May 23, 2013

Php5_zce_logo

Tags

1337 2008 2010 2011 4developers access modifiers accessibility AdaLovelaceDay09 advent agavi agile alfred amsterdam amsterdamphp apache api apple article articles atk atkMetaNode audioscrobbler autoloading automation azure backwards compatibility barcelona barcodes bash bbc bbq beatstad belgium best practices bittorrent blogging blogs boards of canada book books bughuntday bundle caching cake cal evans calendar career cat cerf certificate cfp cilex clear cms cologne common sense communities community components composer conference conferences contest continuous integration contribute contribution crisis css curl custom d-day data migration datetime DbFinderPlugin decorator decorators deployment deps devdays development directoryindex directoryiterator docblox doctrine doctrine2 documentation download dpc dpc09 dpc10 dpc11 DPC2008 dreamhost drupal dv7 eclipse ed editors efficiency enterprise errors event events expertise ezcomponents facebook filter-branch filteriterator finland flickr fork framework frameworks free ticket freelance freeze frontend fun game games geoip germany getting real git github globiterator gnome-do google google calendar googletalk graceful degradation hack hackers hidden gem hiphop howto hp HR html http i386 ibuildings icann ide ideasofmarch idm imovie inclusivity indy ingewikkeld integration international php conference internet interview ipad IPC ipc ipc08 ipc10 ipc11se iterators iterm2 javascript jenkins jenkins-php job job openings jobeet john peel joomla joomladays kiva kubuntu launcher launchy left on the web libcurl libraries library lighttpd lime linktuesday linux live london loudblog m2ts mac magazines malware mambo manchester marjolein mediterra meeting meme meta methodology micro-financing microframework microsoft migration movie music mysql namespace namespaces netbeans netherlands newsfire nllgg northeastphp nos odmarco open source opinion ORM osx paradiso paris partnership pavilion pear pecl performance personal pfc10 pfc11 pfcongres pfcongrez pfz pfz.nl photo php PHP php5.3 phpabstract phpazure phpBB phpbb phpbelgium phpbenelux phpbnl10 phpday phpdoc phpdocumentor phpgg phpitalia phpnw phpnw08 phpnw11 phpnw12 phpstorm phptek phptek09 phpuk2009 phpUnderControl phpunit php|architect php|tek podcast politics portability postcrossing presentation presentations private projects protected prototype PSR-0 public python qa qr codes re2c recruiting refactoring review rewrite ruby on rails san francisco schedule scifi script security sensio seven things sexism sfdaycgn sflive2011 shell scripting silex simplexml slides smfony software sogeti solar sound speakers spl ssh standard standards star trek static steer strings stylesheets subversion symfony symfony live symfony2 Symfony2 symfonycamp symfonyday symfonylive symfonyUnderControlPlugin talk talks tech techademy technology techportal tek09 telecommuting terratec terrorism testfest testing textmate textpattern the right tool timeout tips tld todo tomas tools training twig uncon unet usability usergroup validation vhost video vim vinyl virus warp webinar weblogging webservices wiki windows winphp women wordpress work workshop world world of warcraft wpi writing wunderlist xml xpath xsd yara year youtube zc11 ZCE zemanta zend zend framework zend server zend studio zendcon Zend_Form zite
© 2004 - 2013 Stefan Koopmanschap + Powered by Symfony, photos powered by Flickr, links powered by Delicious, Shanghai smilies by Iconbuffet. Feeds: rss / atom. Left on the Web v4.4.0.1