One of our core values at 8th Light is Community. We believe that no craftsman is an island. They engage with a team and the larger community of software craftsmen.
I have wrestled with this concept since I started writing code. Being able to check my ego at the door and say "I need help, I don't know how to do this" is very difficult. I find this is a challenge not just in our industry, but in every aspect of life. I am a tinkerer - I like building things, making things work, creating. I love being able to finish a project and say "look what I did, I made that". However with this approach there is always a 'but'. When I would make something by myself and show it off, it was always "look at this, isn't it cool… but I could have done this better". I'm reading The Clean Coder by Uncle Bob Martin, and one quote drove this point home for me:
"Programming is hard… Programming is so hard, in fact, that it is beyond the capability of one person to do it well. No matter how skilled you are, you will certainly benefit from another programmer's thoughts and ideas."
If an industry veteran like Uncle Bob is preaching this, I better listen. A great example of this happened a few weeks ago.
I wanted to write a script that would call a popular API and cycle through the returned data on screen. No sweat, a few minutes later I had that working. The next step was to use the location data from the API call to display a dynamic map using the open-source Mapbox API. That would be tricky - I was trying to smash 3 or 4 separate Javscripts together. I fiddled around and had the map displaying, but I couldn't seem to pass the location data to the Mapbox API and refresh it on the fly.
As a designer working in JavaScript my workflow used to go like this (and I get the feeling I am not alone): Download a script from slick demo site and embed it in my project to find it doesn't work right out of the box. Go back over the instructions and get a few different errors. Scour Stack Overflow for a few more minutes pulling lines of code randomly and plugging them in until magically everything starts working. I know that it works, but I'm not sure how or why.
So taking Uncle Bob's quote to heart, last Friday I pushed my ego aside and asked fellow craftsman Rylan for help with my project. He was more than happy to sit down with me and help out. He walked me through how the program was passing data back and forth and what particular lines of code we’re doing. Not only did we work through the problem, he explained what he was doing and why.
Had I tried to tackle the problem myself it would have taken 10 times longer and it wouldn't be nearly as good. It may have worked, but it would have been cobbled together and I wouldn't understand what's going on. By shoving my ego out of the way, we built something that was cleaner and better. We completed it much faster and I am more proud of what we made than anything I would have done on my own.
My name is Chris Peak, I am a UX Craftsman, and I am not an island.