Don't Put All Your Eggs in Someone Else's Basket 2013.07.09 (Excerpt from The Passionate Programmer: Creating a Remarkable Career in Software Development) While managing an application development group, I once asked one of my employees, “What do you want to do with your career? What ...
(Excerpt from The Passionate Programmer: Creating a Remarkable Career in Software Development) I started my career as a computer programmer because of video games. Since the days of loading games from tape on my Commodore 64, I’ve been hooked by their immersive, interactive experience...
As I mentioned last week, I’m releasing chapters of The Passionate Programmer every(ish) week until they’ve all been posted. This week’s chapter is one I actually re-read myself sometimes as a reminder. It’s about how to stay calm and focused in the face of stress. It’s one of the mos...
Six years ago, I gave up a bad habit. Since 1999 I had been using RSS then Atom as my interesting-stuff changelog. I eventually amassed a subscription collection of hundreds of feeds with subjects ranging from the obvious (tech news and software development) to religion, philosophy, l...
The South Indian Monkey Trap 2013.07.09 (Excerpt from The Passionate Programmer: Creating a Remarkable Career in Software Development) In Zen and the Art of Motorcycle Maintenance: An Inquiry into Values , Robert Pirsig tells an enlightening story about how people in South India used ...
Starting today I’m going to post a free excerpt from The Passionate Programmer every week (time permitting) until I’ve posted them all. (Thanks to my generous publisher for allowing this!) If you have read it and wished you could share sections with friends and co-workers that don’t o...
As a developer and sometimes system adminstrator, one of the scariest things I ever encounter is a server that’s been running for ages which has seen multiple upgrades of system and application software. Why? Because an old system inevitably grows warts. They start as one-time hacks d...
I’m not sure how it happened, but out of the many conferences in which I’ve spoken, I’ve only submitted two talk proposals. Both were to O’Reilly’s OSCON. One was in 2003. It was not accepted. Too bad; It would have been really good. The next was in 2004. It was accepted. It wasn’t al...
I keep learning this lesson over and over again, so I’m writing it here in an effort to never forget again. As a manager, if some task constantly stresses me out or makes me feel uneasy, it’s probably because I’m doing someone else’s job. I don’t mean someone’s being lazy and I’m pick...
I am one of the original organizers of both RubyConf and RailsConf . Combined, I’ve organized or been on the program committee for around 25 conferences. I’ve read hundreds of proposals and seen hundreds of conference talks. Occasionally, a proposal or a talk stands out. Here’s one th...
Here’s an exercise you can put into place right now which will have a lasting, significant, positive effect on your life and the lives of those you work, live, collaborate, and play with. There are two versions: an easy version and a harder version. Start with the easy version unless ...
So, "good minimalism" doesn’t require simply that we "be minimal". It requires that we correctly balance substance and space in a way that encourages evolutionary growth. It is possible to be minimal and rigid, which will lead to small ideas that can’t be developed any further. This i...
I keep learning this lesson over and over again, so I’m writing it here in an effort to never forget again. As a manager, if some task constantly stresses me out or makes me feel uneasy, it’s probably because I’m doing someone else’s job. I don’t mean someone’s being lazy and I’m pick...
Throughout my career, I’ve had the opportunity on multiple occasions to manage large teams. Every time this happens, I am eventually annoyed by the same realization: at a certain size (maybe it’s around 40 people?), anything I do right that affects the entire group is somehow annoying...
Tonight, Kelly and I are headed off to Chicago. I’ll be attending 37 Signals’ “Building of Basecamp” workshop on Friday. On Saturday, there is a Ruby meet at Giordano’s pizza downtown (and then moving to a conference room at a company somewhere) at noon. It looks like the event is at ...
Where have I been lately? Good question. When asked over these past months, I jokingly say something like, “These last 8 months at LivingSocial have been the best 4 years of my career.” But I don’t just mean I’ve been busy. I’ve been focused on building the best software development t...
There’s a person I want to work with. I can’t find this person. I’ve literally searched the world, and I can hardly find a trace. I’m not talking about someone specific. In fact, that’s the problem. I’m talking about a set of traits and an attitude which is more scarce than I realized...
This is the first in a series of articles, discussing why many software rewrite projects end badly and what to do to avoid some of the ways I've seen them go astray. You’ve got an existing, successful software product. You’ve hit the ceiling on extensibility and maintainability. Your ...
The Unexpected Consequences of Consumerism 2009.06.09 I’m reading Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel by Rolf Potts. I’m only a quarter of the way through it and it’s already worth the price. In the third chapter, Rolf talks about the American reaction ...
As I mentioned recently, we’ve moved to Berlin! . We got to spend a week of down time exploring the city. We are definitely in love with Berlin so far! I’m excited today to finally announce that I’ve joined 6Wunderkinder as CTO. In case you don’t know them by the company name, 6Wunder...
Moving to Berlin and auf wiedersehen to friends January 08, 2013 It’s hard to believe it’s been almost two years since InfoEther was acquired by LivingSocial. Since then, we’ve built the strongest development team I’ve ever known. We’ve set records for e-commerce transaction volume. W...
We software developers like to think of what we do as an art form (or a craft, if you’re at this conference). I was once asked to come up with a set of guidelines for creating great software so our (huge) company could more effectively use an offshore development team that had been de...
Ever since reading David Heinemeir Hansson’s post Enterprise Is the New Legacy over five years ago, I’ve been chewing on something. The gist of the post was that “enterprise” is and should be a bad word, just like “legacy”. But why is “legacy” a bad word to begin with? The word makes ...
The art/craft/commodity continuum December 27, 2011 When you create art, the purpose is self-expression. When you create software, the purpose is rarely self-expression. When you create software, someone somewhere wants it to perform a set of functions and has a stake in how well thos...
#!/usr/bin/env ruby # I'm calling this "Poor Man's Seaside" for now. # The real Seaside is at http://beat4.com/seaside2. # It's not supposed to be good code, so don't get confused. # It's just supposed to be as simple as possible. # The purpose is to demonstrate the "trick" that Seasi...
A few years ago, sitting in the July heat on a wall in the Harajuku district of Tokyo, I came to a conclusion: I had let myself be a loser. At least, I had let myself become a partial loser. I was fat and unhappy. My skin looked grey. I was slowly killing myself. I was obese. I made e...
Re-thinking Software Development Education December 21, 2011 Where have I been lately? Good question. When asked over these past months, I jokingly say something like, “These last 8 months at LivingSocial have been the best 4 years of my career.” But I don’t just mean I’ve been busy. ...
In December, we went to the city of Jaipur in Rajasthan, India with Kelly’s mother and sister. It was an amazing place. Incredibly different from being in South India. I guess it must be something like the difference for foreigners in the USA going from Wisconsin to New Mexico. Comple...