Monday, July 27, 2009
The Passionate Programmer: Creating a Remarkable Career in Software Development
Author: Chad Fowler
Format: Paperback, 200 pages
Publisher: Pragmatic Bookshelf (May 28, 2009)
ISBN-10: 1934356344
ISBN-13: 978-1934356340
First of all, I like the sax on the cover. I like jazz music and especially tenor sax, so a little cool jazz on a hot summer's day works for me, and keeps me calm as I'm commuting to work, but I digress. The Passionate Programmer isn't exactly about programming. It's about the career of programming. Most Pragmatic books I review in this area, teach some programming language, how to program in general, or "tips and tricks" of some programming method. Chad Fowler's book addresses the larger context of entering into a programming career. More than that, the context can be applied to many other creative careers where the creative person conceptualizes their "product" within his or her thoughts and imagination, and then generates the result. How do you proceed into such a career path? Keep reading and find out.
Most people who select a programming career don't think about the career part of it. If you're "passionate" about programming, you likely are passionate about the process of programming; the actual doing of it. Fowler tosses around terms like business and entrepreneur, which may be words at least odd, if not completely alien to some coders. Aren't entrepreneurs those people who own their own businesses and are heavily into "wheeling and dealing"? What's that got to do with being passionate about programming?
Do you have to eat to live? Do you need clothing and shelter? Would you like to go out with your friends on Friday night for dinner and drinks (and be able to pay your own way)? If you said "yes" to some or all of those questions (especially the first two), you need money. Sorry, but that's the harsh reality of life. Being a talented programmer is one thing, but sooner or later, if you want to make money by leveraging your coding skills, you'll need to pay attention to programming as a career. That means more than just putting together a resume, posting it on various online job sites, and hoping for the best. It means developing a vision and a plan. It means keeping your skills current, not just in terms of the current technology, but in terms of your current marketability.
It's not surprise (at least to me) that the book preaches personal responsibility. After all, you're the product, not just what you do. Paying attention to your career is paying attention who you are, and to your employment and career environment. As the Borg sometimes say "We will adapt". The employment situation won't adapt to you. You're the one who needs to do the adapting. Wishful thinking doesn't build a career, but wishing is the beginning step. That said, a "wish" must progress into a clear and realistic vision, and then into concrete activities.
The book reads like a series of short essays that are linked together by a common theme. The themes are collected into a number of Parts in the book. Each "essay" or chapter is capped by an "Act on It!" section designed to direct the reader into an activity based on the chapter. If this were an actual "coding" book, these would be the "exercise" sections. Reading the conceptional parts of each chapter may not seem so shocking, but behaving on them could be. Actions like keeping up with trade magazines (which you probably do anyway) and scheduling lunch with a business person (which you may never have done), are just two examples. They are also at the heart of this book's philosophy of doing your career, not just thinking or hoping about it.
I wasn't kidding before when I mentioned jazz. Among his other talents, Fowler is a musician and at the beginning of Chapter 4, he mentions "legendary jazz guitarist" Pat Metheny as giving a piece of advice "passionate programmers" should follow. I also wasn't kidding when I said that programming as a career has at least something in common with many other creative careers. That means the path, at least in general, for programming careers has many models from which to learn.
The Passionate Programmer, although easy to read, isn't a book that you should just shoot through in an afternoon or over a weekend. Yes, you could read the material in a short period of time, but you couldn't effectively practice it. This book is a guide to the practice of building a programming career, so actually walking the steps in the territory takes longer than reading the map. The book requires a proactive reader, not a passive audience. The book won't be worth the price you paid to buy it, if you don't actually respond to what it's teaching. It's like taking the time and trouble to learn all of the methods and techniques of programming in Java, Perl, or Python, or taking a full degree in Computer Science. If you don't actually put into practice what you've learned, what was the point of spending the time and money?
No book can promise to make you a success at anything. In the current economy, we are all a bit more concerned about our jobs and our careers than perhaps we once were. Reading The Passionate Programmer won't keep you from being laid off next week if that was going to happen anyway. However, reading and practicing what Fowler has to offer, will make you much more involved in your own career process and direction. You can choose to be adrift in the river's current or you can pick up an oar, set a direction, and start rowing. Your choice.
Labels:
book review,
career,
programming
Friday, July 24, 2009
Are Police Racist?
As I'm sure just about everyone is aware of by now, on Monday, July 20th, pre-eminent black scholar Henry Louis Gates Jr. was arrested at his home near Harvard University by Cambridge police officers. There's been a great deal of analysis and opinions being tossed about the media, including those of President Barack Obama, regarding what happened, or what they think happened, that caused Gates to be arrested. The prevailing opinion is that the police officers involved are racists (assuming that they wouldn't have acted similarly if the suspect had been white) and that perhaps all police officers are racists.
I don't know any more about the events of Gates's arrest than what I can gather from the media, so my point of view is just as slanted as the rest of America's, including President Obama's point of view (unless he used the authority of his office to gather "inside" information not available to the general public). Let's take a look at what we know. According to the original news report, Gates attempted to force the front door of his house in Cambridge because it had become jammed. At this time, police were notified that there were "two black males with backpacks on the porch" of the house, attempting to force entry. Sounds like an attempted break-in on the surface. Officers were dispatched to investigate.
By the time the officers had arrived on the scene, Gates had already gained entry to his house. The officers talked to Gates and asked him to come outside and speak to them, presumably so he could identify himself as the homeowner, or failing that, to explain his forcing the front door open and being inside the house. Again, according to reports, Gates refused to exit his home and began to yell at the officers. Apparently (and this is my opinion), Gates had "jumped from A to Z" and assumed that the officers were trying to question him because (in Gates's own words) "I'm a black man in America". The officer's report states that "Gates continued to yell at me, accusing me of racial bias and continued to tell me that I had not heard the last of him". Also according to the news article, Gates asked for the name and badge number of the officer and the officer refused to provide Gates with the information (a mistake on the officer's part, which didn't help). The officer exited the home and Gates supposedly followed the officer onto the front porch, continuing to yell at him and accusing him of racial bias.
At this point, Gates was placed under arrest for disorderly conduct and taken to the Cambridge police station where he was booked. He was released later that day on his own recognizance. Gates's attorney, and fellow Harvard scholar Charles Ogletree, disputes the official police version of events and says Gates never yelled at the officer. Although Ogletree did not state specifically that he believes the incident was racially motivated, he was quoted as saying, "I think the incident speaks for itself". The overriding question is, would this situation have unfolded exactly the way it did if Gates had been white?
There's no way to play out that scenario in absolute terms, but I'll run through an alternate set of events and see what turns up. Let's say the police receive a call of two white men with backpacks attempting to break into an upscale home. At this point, because the suspects are white, do the police ignore the call? Probably not. It's not like white men aren't capable of being thieves, so the police respond to the scene. Upon arriving, they see a white male inside the home. Do the officers assume that the man is the home owner just because he's white? Probably not. They ask the man to step outside and talk with them. This is actually the critical moment in the scenario. What the suspect does next is going to make all the difference in how this turns out.
Situation 1: The man starts yelling at the officers, saying they have no right to tell him what to do, that he's the homeowner, and the officers can "go pound sand", or words to that effect. Since the suspect is white, he's unlikely to accuse the officers of racial bias, so the emotional impact of that sort of accusation is missing from this situation. The suspect continues yelling at the officer, asking for the officer's name and badge number. Eventually (as in the actual event), the suspect shows the officer his Harvard ID card but not his drivers license. As in the original event, the officer leaves the home and the suspect follows him onto the front porch, continuing to yell at the officer and generally "getting in his face". Does the officer arrest the suspect for disorderly conduct at this point? Probably. Although the officer is reasonably assured that the man lives there, the man is acting in a highly agitated and aggressive manner. The officer could choose just to walk away, but can reasonably make the arrest based on how the man is behaving.
Of course, I can't say that race is or isn't a factor here. Maybe the officer would have let it slide for a white man but not for a black man. I don't know. I don't know the officer personally, and I don't know what he was thinking or feeling at the time of the event. This issue cannot be determined based only on news reports by the media.
Situation 2: At the officer's request, the man exits his home and agrees to speak with the officers on the front lawn of the house. The suspect is polite and compliant. Upon request, the suspect produces his drivers license, establishing that he lives at this address. He explains to the officers present that the front door had become jammed and he had to gain entry to his home by forcing the door. The officers comprehend the situation and determine that no crime has occurred. The homeowner thanks the officers for being so diligent in checking on this event. After all, the homeowner would want police to investigate if there was the possibility that his home was actually being broken into. The officers leave and the homeowner goes back inside his house. Case closed.
Now the question becomes, would Gates have been arrested if he had behaved as Situation 2 describes? My opinion is probably not. Although it most likely isn't recorded in any law enforcement training or practices manual, there is something called "the attitude test". It is more likely that an encounter with a law enforcement officer will turn out poorly if the person being questioned behaves in an aggressive and hostile manner, than if he or she behaves in a polite and compliant manner. The first thing a law enforcement officer is trained to do when they enter any situation, is to take control and maintain the safety of all parties involved. If a suspect defers to the officer's authority and is polite and compliant with all requests, the officer will understand that he is in control, and that the possibility of danger is minimal to none. If, on the other hand, the suspect challenges the officer's authority, the officer will respond by taking whatever steps are reasonably required to gain and maintain control, up to and including arresting the suspect.
Being rude and yelling isn't against the law, although doing so to a police officer may communicate that you are a potential threat and may escalate to physical violence. If Gates had responded as outlined in Situation 2, in all likelihood, he never would have been arrested and this incident would never have come into the realm of public knowledge. It would be a "non-event". Am I saying this is all Gates's fault? No.
Anybody who's ever heard of Rodney King knows that police can stop, question, and even brutalize a person due to racial bias. A recent NPR News Story outlines the experiences of black men and their encounters with law enforcement. The information as anecdotal, and I'll reproduce it here:
- "Erroll McDonald, one of the few prominent blacks in publishing, tells of renting a Jaguar in New Orleans and being stopped by the police — simply 'to show cause why I shouldn't be deemed a problematic Negro in a possibly stolen car.' "
- "Wynton Marsalis says, '(Expletive), the police slapped me upside the head when I was in high school. I wasn't Wynton Marsalis then. I was just another nigger standing out somewhere on the street whose head could be slapped and did get slapped.'"
- "The crime novelist Walter Mosley recalls, 'When I was a kid in Los Angeles, they used to spot me all the time, beat on me, follow me around, tell me that I was stealing things.' "
- "William Julius Wilson ... was stopped near a small New England town by a policeman who wanted to know what he was doing in those parts."
Tuesday, July 21, 2009
Information Architecture for the World Wide Web, 2nd Ed
Authors: Peter Morville and Louis Rosenfeld
Format: Paperback, 526 pages
Publisher: O'Reilly Media; 3rd edition (November 27, 2006)
ISBN: 0596527349
Note: I wrote this review almost three years ago, but someone who tried to read it at its original location couldn't find the review. I'm posting it here to make it visible again and, after all, it is my blog.
Review by James Pyles
December 15, 2006
Morville and Rosenfeld's book is a real eye-opener for anyone who wants to understand the complexities of organizing web information at the enterprise-level. This isn't about how to put together a standards-compliant website (well, it is sort of) or how to develop web applications or graphic design for webpages. True, all of those functions are necessary for web development but the (apparently) growing career of Information Architecture (IA) is an entity all its own.
Let me backup a minute. Many of us develop websites as individuals. I work with a team of software engineers documenting a wide variety of information for them and their customers. To this end, I administrate the group's Intranet site and it has to be many things to many people. I organize data, try to make it easy to find, try to make it visually appealing and maintain different security levels for different groups. I wear a number of different hats depending on my customers' requirements.
Now imagine a team of professionals developing and maintaining a national or multinational corporation's web presence. You probably will have one or more people who specialize in areas such as graphic design, usability, software development, knowledge management, and other disciplines. It's like taking the hats I wear and putting each one of them on separate people or groups. This book describes the role and methods of one of those disciplines or "hats"; Information Architecture.
Probably the easiest way to get a basic grasp of what an Information Architect does, is to quote one of the analogies from the beginning of the book: "I'm an information architect. I organize huge amounts of information on big web sites and intranets so that people can actually find what they're looking for. Think of me as an Internet librarian".
Of course, it's a lot more involved than that, but then learning the rest is what this book is all about. What makes this text all the more valuable is the lack of organized programs (to the best of my knowledge) that teach IA. You won't find a Bachelor's or Graduate Program in IA in a university catalog. However, the profession of IA touches many other professions; usually those that have to do with the creation, storage, and organization of information. People with backgrounds in library science, computer science, technical writing, and product management (to name a few) can apply those skills to IA. This book was written for them.
The authors have a sense of humor and writing style that makes the book relatively easy to read. I say "relatively" because the subject matter is not a simple one so when reading this text, keep that in mind. Information Architecture is an extremely useful book for anyone interested in pursuing IA as a career or anyone who manages a team of professionals including an IA expert. However, unless you are involved in or seriously considering going into this field, you shouldn't buy this text. This book throws a wide net over its target and collects all the necessary information to teach the topic to its audience (and why not, the authors are experienced organizers of information).
In the time since the first edition of this book was published in 1998, the need for information architects has grown immensely (as has the web) but the means to become an IA professional has not (at least not in a formal sense). Most of you probably didn't even know IA existed or was a potential career option before reading this review. IA is both a vital necessity in a time when the web is growing exponentially and one of the finest "stealth" career's available. If you are involved in organizing web site data structures on a large-scale or think you might be interested in doing so for a living, Morville and Rosenfeld's Information Architecture for the World Wide Web is just the book for you.
Monday, July 20, 2009
Review: The Official Ubuntu Book, 4th Edition
Authors: Benjamin Mako Hill, Matthew Helmke, and Corey Burger
Paperback: 512 pages
Publisher: Prentice Hall PTR; 4th edition (July 9, 2009)
ISBN-10: 0137021208
ISBN-13: 978-0137021208
Reviewing a book in its Fourth Edition is both easy and hard. It's easy in the sense that, unless the book has completely changed, it is still essentially the same as prior editions. If it has done well up until now, chances are it will still do well. Of course the idea for the publisher (assuming the book has done well) is to at least make sure that the book maintains its reputation and hopefully get even better. For me, that translates into, once a good review, always a good review...maybe. The hard part is to pick out the bits that may have changed and evaluate them as part of the current mix. If the book hasn't changed at all and assuming Ubuntu has, then my review changes and not for the better. If the book has changed, how does it stack up to Ubuntu's changes? Does the book still meet the needs of the audience?
The Official Ubuntu Book has done well since it was first published. I've reviewed each edition since the first one back in 2006, including my 3rd edition review, written for the linux-tutorial.info site just last year. As I recall for that edition, while the book was well written for the newbie Ubuntu user, it didn't really address those of us who are veteran Ubuntu users who just want to get up to speed on the changes. Let's see how the 4th edition fares.
I suppose I should mention that there have been some author changes between the 3rd and 4th editions. Jonathan Jesse and Jono Bacon have apparently dropped off the radar, while Matthew Helmke has joined the team. At least that's what's reflected on the book's cover. On the inside cover page, the book states it was written "with" Ivan Krstic, Jonathan Jesse, Richard A. Johnson, and Jono Bacon, which probably means some of the material they contributed to prior editions is in the current one, but they didn't actively write for the 4th edition (yes, crediting authors in downstream editions can get complicated).
I almost wonder why the Foreword to the 1st edition was included, except that it was written by Mark Shuttleworth. The Preface promises that the book has matured as Ubuntu has, so maybe some of my past concerns have been addressed. Keep in mind that at some point, if a book publishes sufficient number of subsequent editions, it begins to look like a patchwork quilt. Eventually, the oldest patches need to be removed completely to keep the book from becoming archaic. As the Preface also says, the book is supposed to represent the maturing state of the Ubuntu community, so hopefully, we seasoned users will be represented along with newer adopters.
At 512 pages, you can't call this book a tome (some Ubuntu books are so large that you almost need help just to lift them) so as the authors state, a "pick-and-choose" process was used to select which topics "made the cut" and which did not. That automatically limits the scope of the audience. I've been critical of how that scope has been selected in the past. In the current book, the scope includes topics such as the installation, a desktop tour, and advanced management, but also includes different aspects of the "Ubuntu community". This is a good reflection of the ideals behind FOSS and, like it or not, chooses the audience this book best serves, which seems to be an interesting but not all-inclusive combination of readers.
The first chapter is a snooze if you know what Ubuntu is, what Canonical is, and what Linux is, or you're not particularly interested in a history lesson. These topics will be more interesting for the newer user who wants to absorb as much about the idea of Ubuntu as possible (as well as how to use it, of course). The book comes with an installation DVD for Ubuntu 9.04, nevertheless Chapter 2 covers how to get different versions of Ubuntu, downloading and burning an ISO, and so on. The installation instructions are again more useful for the less experienced user, particularly since Ubuntu is pretty much a snap to install, at least using the default options. Nice touch adding how to install from a USB Key, though.
Chapter 3 is a tour of the desktop and the commonly used applications available. This section could almost be a book unto itself (and in some cases, entire books do exist for individual apps such as GIMP and OpenOffice), but most users don't go that much into how each application works. If you didn't know, and wanted to understand what app to use for which task, this chapter will tell you.
I don't consider setting up a printer as an "advanced" task (since everyone needs to print), but it's included in Chapter 4, Advanced Usage and Managing Ubuntu. Curiously, the chapter includes a brief task about using floppy disks, and floppy drives are all but gone from the modern computing landscape. It was interesting that the backup options mentioned only include burning files to a CD/DVD or backing up to an external USB drive, since applications like Zmanda support 9.04, at least according to Joe Panettieri's article. Some command-line goodness is also provided for good measure since, for my money, the real power of Linux still exists in the shell.
A single chapter in the book is dedicated to the Ubuntu Server. This chapter was introduced in the last edition and, depending on your philosophy for an "official" Ubuntu book, is a good thing to keep around. Of course, it's a departure from "lets-tell-the-newbie-how-to-use-Ubuntu", but it's as much an introduction to advanced computing and beginning server management, as it is the Ubuntu server. If you want to go beyond the desktop user experience, it's a good chapter to read. If not, you can skip it (though I'd recommend it just for the introduction to apt-get and apt-cache).
If things go wrong (and they invariably do), you'll likely spend some time in Chapter 6, which is all about troubleshooting. I'd like to think that with each new version of Ubuntu, errors will become less and functionality of applications will become smoother. I'm sure that's true, but nothing will ever be perfect. It's good to have a chapter that recognizes this reality. I was however, a tad disappointed to see that the My Wireless Card Is Not Working section of Networking was only about a page or so long. While I've never had a problem with wireless networking on my Ubuntu computers, not everyone can make that claim. If you end up with a wireless problem and need additional "magic", you'll have to look elseware. For many of the troubleshooting and repair tasks, keep in mind that they involve using the
sudo
and other commands in a bash shell. This means it's helpful to know a little about how the command-line works. To learn these skills, it's a good idea to not gloss over the Advanced and Server chapters presented earlier in the book.
Chapter 7 introduces the Ubuntu community. If all you want is a desktop that lets you work and play the way you want, this chapter won't mean anything to you. However, since the book also includes a chapter on the Ubuntu server, some of this text's readers are assumed to want to go "the extra mile". Chapters 10 and 11 also discuss how to become involved in Ubuntu projects and connecting to ubuntuforums.org, respectively. While you may never participate in the development of an Ubuntu-related project, sooner or later, most Ubuntu users will have a question that's best answered in a discussion forum venue. If you think you do want to become involved in a project, you can see how to accomplish this.
Chapters 8 and 9 discuss the Kubuntu and Edbuntu derivatives, if you either prefer the KDE desktop or are interested in Ubuntu optimized for the educational setting. Since you will probably need to access the shell at some point, Appendix A takes a little of the anxiety out of this, by giving the reader the command-line basics. If you are used to using Windows (and the vast majority of the PC-using world is), Appendix B provides a list of mappings from Windows to Ubuntu (Linux/Open Source) applications (Microsoft Word to OpenOffice.org Writer, for example).
All-in-all, the Fourth Edition is a worthy update to the The Official Ubuntu Book. Still no information on version update options (alas), but I suppose that's what ubuntuforums.org is for. As I mentioned previously, 512 pages won't tell you everything there is to know about Ubuntu. It is enough to get you started though, and to take you into some interesting areas other books might not touch on.
Tuesday, July 7, 2009
Even Faster Web Sites: Performance Best Practices for Web Developers
Author: Steve Souders
Format: Paperback, 254 pages
Publisher: O'Reilly Media, Inc. (June 18, 2009)
ISBN-10: 0596522304
ISBN-13: 978-0596522308
Apparently the move from Yahoo! to Google has been good to Souders (as you might expect). Now working for Google on web performance, he's written a sequel to his January 2008 book, High Performance Web Sites (Souders was working for Yahoo! at the time) which I previously reviewed. According to the Product Description, "Souders' previous book, the bestselling High Performance Web Sites, shocked the web development world by revealing that 80% of the time it takes for a web page to load is on the client side". Sounds pretty dramatic, especially for a technical book. I don't know if I was "shocked" when I read Souders' prior book, but I was impressed. How does his follow up effort measure up?
Whenever I write a book, I usually mention that it takes a team to write a book, even if only one person's name is on the cover. As it turns out, besides Souders, there are eight other direct contributors to Even Faster Web Sites including Ben Galbraith, co-director of developer tools at Mozilla and Dylan Schiemann, co-founder of the Dojo Toolkit. The "dark side" of multiple contributors is sometimes a lack of focus or continuity in a book. The upside is including the wisdom and experience of numerous subject-matter experts.
As with the previous Souders book, there's no explicit "who is the book for" section in the front matter, but the subtitle "Performance Best Practices for Web Developers" makes it obvious who should be reading this book. The idea, as with the prior book, is to develop web sites using practices that allow your sites to load and perform with the minimal amount of load on the client-side. With competing interests such as style, theme, content, and general "eye candy", this isn't as easy as it sounds.
High Performance Web Sites (sorry, it's hard to review this book without referring to its predecessor) was a straight-forward 14 step (one chapter per step) sequence in how to improve web site performance. Even Faster Web Sites goes beyond what you might think of as "straight-forward", which isn't a bad thing, but it might make some of the techniques less accessible to the less experienced developer. With that in mind, if you're just starting out developing web sites, read High Performance Web Sites before moving on to this book. Reading the two books "in order" isn't absolutely necessary, but it might make more sense if you're new to the game. Experienced players may do as you wish.
The reader will need to know more than just vanilla HTML/CSS/JavaScript to get the most out of this text. While topics such as Optimizing Images (Chapter 10) may not seem complex "programmatically", Coupling Asynchronous Scripts (Chapter 5) and Writing Efficient JavaScript (Chapter 7) will be more challenging if you're not already familiar with the subject matter. I suppose you could say that this book has been "written by professionals for professionals", but I think that tagline is used by a different publisher. I also have to say that, despite multiple contributors, the overall "feel" of the book wasn't disjointed and, while you can read the entire book cover-to-cover, experienced developers can also zero in just on specific topics of interest.
The Appendix contains a list of various performance assessment tools which, in and of themselves, requires a bit of experience or experimentation to get a feel for. Other "value added" pieces include Souders' Web Site dedicated to the book and the O'Reilly site for the book. The former is a series of blog articles on the information presented in the text, including comments, while the latter is the standard "this is one of our books" pages, where you can read/submit errata, register the book, and so on. You'll probably get more mileage out of Souders' blog, since it contains more behind-the-scenes insights into the material.
Don't read this book if you're just getting a handle on designing and developing your first few web sites, however once you have experience and have a solid grounding in "coding for the web", I think you'll benefit from Even Faster Web Sites. If you are a professional web developer, you definitely will benefit.
Subscribe to:
Posts (Atom)