Skip to main content

The Passionate Programmer and Value Rigidity

I have to thank Mike Brunt for the mention of Chad Fowler's The Passionate Programmer on Twitter (yes, occasionally worthwhile stuff crops up on Twitter ...), because it's one of the best programming books I've read in recent memory. It has nothing to do with coding or a specific technology, but I strongly believe it's one of the more important and impactful books a programmer can read, regardless of their choice of technology.


Personally I love reading things that cause me to question at a very fundamental level what I'm doing and why I'm doing it. If you don't do this every once in a while you may find yourself off in the metaphorical weeds, having a hard time getting back on track or even figuring out what direction you're supposed to be going. The Passionate Programmer made me question something about what I'm doing and where I'm going with every chapter.


Coincidentally enough I watched the documentary TED: The Future We Will Create last week. It was inspirational throughout, but there was a particular moment that resonated with me. One of the TED prize winners that year was Cameron Sinclair, who is the cofounder of Architecture for Humanity, which advocates for "building a more sustainable future through the power of design." One of the more amazing examples he gave in his TED talk was a building that was planted (as in using seeds), grew to 14 feet in height in a month, and then could be eaten when the building was no longer needed.


That's extremely cool in and of itself, but another architect at TED that year was Rem Koolhaas, who designed the Seattle Public Library. I haven't been to the library since I moved here, but after seeing this film I looked into it more, and it's an amazing piece of modern architecture, both in terms of its visual impact as well as how the space is designed to suit the specific purpose for which the building was built.


In a brief interview with Koolhaas in the TED film, he said that the presentation that impacted him the most was Sinclair's, because (and I'm paraphrasing here) it made him fundamentally question his approach to architecture and what he was doing with his skills. Coming from a guy who built such an acclaimed building (and I'm sure he's done many other great things in his career), that's rather astounding.


So back to programming. The Passionate Programmer is fantastic throughout, but what hit me like a ton of bricks, and what made me think of the TED documentary, was a chapter entitled "The South Indian Monkey Trap." Without going too much into the reference, this chapter makes the point that "rigid values make you fragile," and that fragility is definitely not a good thing for a programmer. Quoting the book:


"For example, it's easy to get hung up on technology choices. This is especially true when our technology of choice is the underdog. We love the technology so much and place such a high value on defending it as a choice for adoption that we see every opportunity as a battle worth fighting--even when we're advocating what is clearly the wrong choice."


I'm sure folks in the CFML community recognize the tendencies here. Clearly I'm not saying CFML is a bad choice--far from it. I wouldn't continue to use CFML if I thought it was bad. But one of the points I made in my "Best of Both Worlds" presentation at cf.Objective() this year (you can watch it here if you missed it), is that while CFML is a great choice for a lot of things, we do ourselves a disservice if we get too myopic on our technology choices. If the only tool you have is a hammer ...


Now on the flip side of this, you may look around and find that seeing what else is out there reinforces your notion that CFML is a great tool for most of what you do. Even if you come back to where you started, however, there's a tremendous amount of value in the exploration.


The other thing I love about The Passionate Programmer is that each chapter ends with an "Act on it!" section. In the case of this particular chapter the actions suggested are:



  1. "Find your monkey traps," meaning identify your rigid values and do some soul searching on them.


  2. Know your enemy: pick a technology you hate, and build something in it. Not only does it help knowing what you're fighting against more intimately, you add a new skill to your toolbox and might even find that the technology you hate does some things pretty darn well.



So that's some of what's been going through my head lately. Agree or disagree, I really do encourage you to read The Passionate Programmer because it will inspire you far more than I possibly can in a blog post overview.


Comments



Just added it to my Amazon Wishlist, thanks for pointing this out. "The Pragmatic Programmer" is another good one from the same publisher.





Sounds interesting. I hope I will find the time to check out this book.


Shlomo,


http://www.shefertech.com





I'll have to check it out. On a side note, TED talks are just the most amazing thing since sliced bread. Clark Valberg turned me on to them a year ago. It's like candy for my brain.





Hi Matt,


I got the original version of the book when it first came out (My Job Went to India: 52 Ways To Save Your Job) and remember an interview with one of the prag publishers (I think it was Andy Hunt) who said he wished they'd picked a better title because they felt the title killed the sales of the book.


I'm glad they re-released it the other month with a new title, and I think it's a great read. Hopefully with the new name it'll get the sales it deserves (well, the new title, and of course the plug on your blog :-) ).





I was looking at "The Passionate Programmer" on the Pragmatic Programmers site last week, along with "Pragmatic Thinking and Learning". I would have bought them both by now, but my strategy for managing my spending is to keep telling myself whenever I want to buy something that "I don't need it yet". This post (along with the fact that today is my pay day) has convinced me to go ahead and get them.


To correct Ryan's comment, The Pragmatic Programmers (Andy Hunt & Dave Thomas) wrote the book "The Pragmatic Programmer" but are not the publishers for it, as they wrote it before getting into the publishing business. The biggest consequence of this is that there is no eBook version available of that title. I believe Dave & Andy have made a point of selling DRM-free eBook versions of all the titles they publish, which I think is pretty darn cool.



Comments

Popular posts from this blog

Installing and Configuring NextPVR as a Replacement for Windows Media Center

If you follow me on Google+ you'll know I had a recent rant about Windows Media Center, which after running fine for about a year suddenly decided as of January 29 it was done downloading the program guide and by extension was therefore done recording any TV shows.

I'll spare you more ranting and simply say that none of the suggestions I got (which I appreciate!) worked, and rather than spending more time figuring out why, I decided to try something different.

NextPVR is an awesome free (as in beer, not as in freedom unfortunately ...) PVR application for Windows that with a little bit of tweaking handily replaced Windows Media Center. It can even download guide data, which is apparently something WMC no longer feels like doing.

Background I wound up going down this road in a rather circuitous way. My initial goal for the weekend project was to get Raspbmc running on one of my Raspberry Pis. The latest version of XBMC has PVR functionality so I was anxious to try that out as a …

Running a Django Application on Windows Server 2012 with IIS

This is a first for me since under normal circumstances we run all our Django applications on Linux with Nginx, but we're in the process of developing an application for another department and due to the requirements around this project, we'll be handing the code off to them to deploy. They don't have any experience with Linux or web servers other than IIS, so I recently took up the challenge of figuring out how to run Django applications on Windows Server 2012 with IIS.

Based on the dated or complete lack of information around this I'm assuming it's not something that's very common in the wild, so I thought I'd share what I came up with in case others need to do this.


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Assumptions and CaveatsThe operating system is Windows Server 2012 R2, 64-bit. If another variant of the operating system is being used, these instructions may not work properly.All of the soft…

Setting Up Django On a Raspberry Pi

This past weekend I finally got a chance to set up one of my two Raspberry Pis to use as a Django server so I thought I'd share the steps I went through both to save someone else attempting to do this some time as well as get any feedback in case there are different/better ways to do any of this.

I'm running this from my house (URL forthcoming once I get the real Django app finalized and put on the Raspberry Pi) using dyndns.org. I don't cover that aspect of things in this post but I'm happy to write that up as well if people are interested.

General Comments and Assumptions

Using latest Raspbian “wheezy” distro as of 1/19/2013 (http://www.raspberrypi.org/downloads)We’lll be using Nginx (http://nginx.org) as the web server/proxy and Gunicorn (http://gunicorn.org) as the WSGI serverI used http://www.apreche.net/complete-single-server-django-stack-tutorial/ heavily as I was creating this, so many thanks to the author of that tutorial. If you’re looking for more details on …