Software development and social interaction don’t seem like they go together well. The common stereotype of programmers that exists today is little different from the one of yesteryear. He (rarely a she) is an anti-social nerd who sits in a closet (and likes it there) and cranks out code all day from requirements passed down to him from his Pointy Haired Boss. He drinks Mountain Dew, Coffee, eats nothing but pizza and works long hours into the night on problems that no one else but he is interested in enough to care about.
Like all stereotypes, it is 99% of the time incorrect. Man has a funny way of wanting to categorize everything with minimal coginitive process doesn’t it? Where do these stereotypes come from? Is it because we’re seen as an introverted group of people who don’t get to the water cooler enough to socialize? Are we a mysterious unknown because we often get stuffed into the utility closet at the office? Do we alienate people with our strange computer jargon that no one understands? Sure there are software developers out there that fit this mold, but thankfully they seem few and far between.
I’m a big believer in the idea of Software as a Craft. You are constantly learning, on a long journey towards the mastery of your art. The wonderful thing about thinking about software as a craft is that the word craft sparks so many more vivid images than software simply being a job. When you talk about software in this manner, it has the potential to change the convesation drastically. Images of old woodworkers and blacksmiths come into my head when I use terms like craft and art to talk about software development. Most crafts follow a usual pattern of apprentice to journeyman to master. Right from the get-go in any trade, you are there to learn from a master. You study, interact, ask questions, observe and think on your trade hand in hand with the guidance of your master. If you’re a developer who’s crammed in a closet by themselves cranking out code without talking to anyone or interacting with people all day, you’re not practicing software as a craft. You’re getting no interaction, and you’re not growing as fast as you could if you were working with someone who’s smarter than you.
These days I’m digging deeper into free and open source projects, Especially stuff in the Ruby community and on Github. I’m continually fascinated with the plethora of types of people who do this stuff for a living and for fun. It’s not just the code that I love, but the people. Everyone seems to have a cool story of how they got into programming, or what they like about working with computers: these little nuggets of information are so wonderful to share. These human elements of cohesion is where the good stuff is, and the kinds of things you can’t get when you’re in a closet.
I really enjoy solving complicated problems with software, but it’s so much more fulfilling to work on them with others. Human beings are not wired to be loners, despite what Western ideology might have you think. We need people in our lives who fill our cup up and get us excited to enjoy life everyday. Interacting with other software developers who are open to learning, teaching and sharing their craft is what keeps me excited to work on this software stuff for the long haul.