How to craft a programmer's lens?
January 23, 2008 7:54 PM   Subscribe

Help me think in terms of programming metaphors.

Recently I noticed when looking at certain situations relating to people and their respective environments, I was trying to distill aspects of them into software/hardware/computing metaphors. My knowledge of this field is at best intermediate, and being a lowly systems administrator I have no practical experience of coding or developing. I don't want to learn to code or develop, but I do want to read a few books detailing various programming models and languages that are not advanced comp. sci. texts but are above layperson level. Ostensibly, this would help me to build some mental frameworks to juxtapose to real-world situations. This is really borne out of my need to keep poking my brains to keep them from going to sleep. Thanks for any books, practical lessons, thought exercises, websites, etc that you suggest!
posted by Burhanistan to Grab Bag (8 answers total) 7 users marked this as a favorite
You might try looking at the standard design patterns. Head First Design Patterns is an excellent book that describes the patterns in a clear and accessible way.
posted by Lokheed at 8:05 PM on January 23, 2008

I realize it's not quite what you're asking for, but if you decide to lean toward more practical aspects of programming, rather than models of code itself, The Pragmatic Programmer is high-level, readable and concise.
posted by joshjs at 9:46 PM on January 23, 2008

Code, by Charles Petzold does an good job of explaining the principles behind software.

In regards to Lokheed's recommendation of Head First Design Patterns - it's an excellent book, but I'm not sure how accessible it will be to someone with zero experience in object-oriented programming. (If you do have a little experience in OO-programming, then I strongly recommend it.)
posted by tdismukes at 3:25 AM on January 24, 2008

2nding The Pragmatic Programmer -- especially because the book is presented explicitly as metaphors for programming. And those metaphors, logically, work both ways. I, too, am not a programmer (nor, for that matter, do I professionally maintain or interact with code or computers) but found it a "high-level, readable and concise" discussion of the software creation craft.
posted by GPF at 6:32 AM on January 24, 2008

I think developing a metaphorical understanding of something requires pretty deep knowledge of an area. Metaphors are partially about abstraction, and it's hard to abstract from something when you have only a passing familiarity with it. You also risk exposing what you don't know in your selection of metaphors; the people who will get the most out of programming metaphors are themselves knowledgeable about programming, and are the most likely to catch you in bad metaphors.

All that said, there are lots of great books you can read to pick up some of this stuff. I really enjoyed Dreaming in Code. It's really well written, technically sound, and represents a lot of the very real challenges of software development. You'll see terms like yak shaving which are important ideas in software engineering.

There's also the incredibly influential Mythical Man Month. This is a must read for anyone in software engineering and lays out the basic challenges and issues in working on a team on software. This is not so much about technical details, but more about the team dynamics involved. This won't help so much with hardware/software metaphors, but if you're interacting with programmers it'll certainly help you understand their mindset.

There are lots of good options on this reading list, too. Many of them are too technical or too pop-businessy, but there are a bunch of gems on there too. Just troll around and see what interests you.

On the more technical side, you might try How to Think Like a Computer Scientist. It's ostensibly about learning Python, but you could skim through it looking for the more theoretical bits and probably pick up a lot.

The reading list for the former software engineering course at MIT is pretty good too. I haven't read the required book, but the next one down (Liskov) was pretty good.
posted by heresiarch at 6:44 AM on January 24, 2008 [2 favorites]

Cryptonomicon is fiction. It's not directly about programming, but many of the characters are programmers and you get a lot of insight into their thought processes and explanations or programming concepts. There are bicycles and decks of cards as encryption machines, algorithms for the consumption of cereal and a time vs. horniness graph. It's a pretty good book too, though it has the standard Stephenson crappy ending.
posted by jefftang at 7:40 AM on January 24, 2008

How to Design Programs is a teaching text for the Scheme language that begins with the fundamentals of elementary arithmetic and progresses through functional abstraction and composition, recursion, and symbolic logic.
posted by breaks the guidelines? at 8:10 AM on January 24, 2008

Lots of interesting stuff here to put on my to-read pile. Thanks for all of yor responses.
posted by Burhanistan at 8:24 PM on January 24, 2008

« Older Installing perl in a user folder   |   Should I refinance my auto loan Newer »
This thread is closed to new comments.