December 20th, 2014
So, it's been about 2 years since I picked this book up and read it cover to cover (so to speak, I had the ebook which I devoured) in about a week.
First, I want to explain a bit about where I was in my career, in my life. I was unhappy. Not the life part but in my purpose. Throughout my career I had always had in the back of my mind that in order for me to be happy I needed to "follow my passion". I had finally buckled down and done just that. I was doing a day job, after hours I was working on my own startup with a few friends.
After doing this for 2+ years and more challenges and at least one pivot in what we were building I was tired. My friends were no longer helping me. I was doing all the heavy lifting and for what? We weren't going anywhere. Our user base was in the low double digits. I was tired. I pulled the plug. Leading up to my holiday vacation I was listless. I wasn't sure what I should be doing or even wanted to be doing. I can't remember how I heard about "So Good They Can't Ignore You", whether it was a friend who had read it or a review I read somewhere but I was immediately intrigued.
From what I read it had gems like "Don't follow your passion", "Become good, I mean, really, really good at something and you'll find your passion".
Before I sat down that holiday break I was filled with questions for myself. What was I doing? Was I doing something that "I love"? Was I working on my own thing? Why wasn't I ever happy in my professional career? What was missing?
Yes, startups are hard. Especially trying to bootstrap something from the ground up. It was definitely something I stuck with, for more than 2 years, trying to get to work. Sometimes I was happy while building it, but something was still missing.
All these thoughts, questions, and ideas in my head I sat down to read this book.
I was immediately struck by how true many of the statements and accounts of different people that the author Cal Newport interviewed, both successful and unsuccessful in pursuing their dreams. One part that struck me was this one - "If a young Steve Jobs had taken his own advice and decided to only pursue work he loved, we would probably find him today as one of the Los Altos Zen Center’s most popular teachers. But he didn’t follow this simple advice." This was in the intro section and kind of blew me away. I love Steve Jobs, his passion for creating some of the most iconic and world-changing devices has been an inspiration for me. I was definitely hooked after this.
Roughly the book is broken into 3 sections:
One of the areas I focus on specifically is in the skills part of things. He had some interesting advice which I chose to implement to a certain degree and am still playing around with in terms of structure. He talks a lot about the Craftsman Mindset in this section, which I've come to value a lot more late in my career. Rather than getting to work on the new shiny bits of technology really learn to hone your craft and become as good as you can get, then go further.
I do this through projects. I have several that I move on and off the back burner depending on what I want to learn about. Whenever I work on a project I have a set of things that I'm trying to accomplish with them, whether it's investigating a new technique, trying out a new piece of technology, trying a different language or just generally trying to get better at something (testing).
Originally I tried to cram a bit too much in, I tried following his approach which roughly consists of:
Deliberate practice. For coders this can take the form of Coding Katas, exercises which force you to think through not just one solution to a problem but several. You can typically find Code Katas for just about any language and are a great way to learn a new language. You can also take a problem that you have a perfect solution to, have coded several times on your own and force yourself to come up with a completely new solution to this problem.
Stretch. For coders this means deeply examining an area of computer science you are unfamiliar with or an area you have some familiarity with but want to learn a lot more about. For web developers this is a big area. One area for me is machine learning. This area fascinates me. I've only scratched the surface on this and hope to dive deeper into in the near future.
Little Bets. The idea here is that you have an overall mission that you're going for, but you aren't quite sure how to get there. So, you come up with a bunch of small ideas that you can tackle in span of a month or so and either see if you make some real progress, or not. If you don't then table it and try one of your other ideas.
Where did I take all of these ideas? What am I doing with them now?
I tried blending it all together, code katas one night, then project stuff, little bet stuff, etc. but I just didn't have the time to do all of it. Instead I decided on specific areas that I wanted to get better at and actually dove in to those areas. I picked specific things that would help me with my day job, things that would make my day job easier once I learned them. I still follow this philosophy to a certain degree. But I also work on personal projects, projects that will, in the long term, help me get better and help me achieve the goals I want over time.
Overall though, where did this new mindset take me?
Here are a few ideas if you're interested in adopting this kind of mindset:
Ultimately it's a lot about figuring out what you're good at, where you have capital, and getting as good as you possibly can be at it. Only through doing this will you find out what your true passion is. Here is just a small sample of my answers to this question - what am I good at? What have I built up capital in that I can continue to build on?
After a long hiatus I'm bringing this blog back to life again and will continue to share my journey of becoming a software craftsman.
I have two personal projects I'm working on, one focused on goals using the Objectives and Key Results(OKR) and another to help us deploy our suite of applications in a continuous delivery environment (more on this later).
Some of the fun things I'm getting to learn and become better at:
I'm actually doing this by trying to do at least 30 min each day on one of my projects. By doing this I'm able to keep my next set of goals fresh in mind and making sure that when I get back to working on it it is fresh in my mind. I got the idea for this from John Resig Write Code Everyday.