21. Rely on growth, authenticity and
purpose to stay in love through the
years.
Notes de l'éditeur
We are all here because we are passionate people, and programming is our passion. It is most likely also going to be your career, at least for a period of time.There’s a saying that “the quickest way to lose interest in something is to make it your job”How do you maintain that passion and joy for programming throughout the years of your career?
I will tell you about my personal journey of passion, and some of my own wins and challenges that have led me through my career.I’m so happy to give this talk after Mike’s excellent keynote yesterday, because I believe in many ways our talks are a Yin and Yang to each other.Mike’s key to advancement is obsession. My key to advancement has been observation. Each has some of the other in it, but one will probably resonate more closely to you. Still, I think between the two of us we’ll cover the field. Let’s get started.
Programming is magic! It is the closest thing to being a wizard in this modern world.
It’s not easy, at times it is extremely discouraging.
How do you stick with it through good times and bad, richer, poorer, sickness and health? Programming doesn’t love you back, so it is all about your personal journey to love.
My journey begins at the beginning.The beginning of love is generally infatuation, and also frequently frustration.
Started playing in high schoolWen to college for computer scienceWas in love with the idea of programming, at leastMany different ideasAITheoryProgramming LanguagesCompilers
I got through undergrad partly through sheer determinationTook a full time job in an area I thought would be interestingI flounderedWent to graduate school intending to work in PL/CompilersWasn’t any good at itSwitched to computer architectureAnd a bit of operating systemsI was in fact pretty good in a course called Distributed Systems, but that wasn’t a very “cool” area, so I didn’t think to pursue that.But realized I wasn’t a great grad student
After over 8 years, undergrad, full time work, countless internships, and finally graduate school, I was wondering when I would ever find my calling.Maybe this just wasn’t for me.I took the LSATs and pondered my next move.
Up until this point I was dominated by my “shoulds”I should be good at programming languagesI should be a good graduate studentI should be able to do it without helpI should know it all alreadyStop judging yourself. In reality, I didn’t know enough to know what was “hard” and what wasn’t, what was cool and what wasn’tI had to give up my expectations of myself, and discovered that I liked writing code that delivered clear business value. I liked working in an iterative way. I didn’t really care about finance, but I liked being connected to a business.That distributed systems stuff that I was good in grad school turned out to be something I was good at in the real world, too, and I accidentally happened upon a major trend in computing without realizing it.
I learned the intricacies of JavaI learned Unit Testing!I learned garbage collection and libraries and my IDE
The obstacle between me and solving problems was no longer me!I achieved mastery.
What is mastery? What does it look like? It doesn’t come fast or cheap, it takes focus and years. For me, it happened about 10 years in. I don’t know the exact number, but I know that it takes time.It looks like understanding the details of your language.Understanding the garbage collector, or the details of the STL, or what exactly the GIL means for your programs.Knowing what libraries are solid, which are suspect. Importantly knowing how to get shit done efficiently in your language of choice.Mastery will sustain you throughout your career, if you go into management and get away from hands-on programming, it will never totally go away.
Mastery is so key, but it isn’t the only thing. As you continue in your career, other things become important in a way that isn’t as prominent when you’re still growing.
A more recent part of my career was leaving the job I had loved for many years at Goldman Sachs to go to a startupI was missing a value alignment: I value transparency, and banks do notWanted to work in publicWanted to go to a place where I felt as an engineer I could make a huge differenceAn engineer of the world, not a particular company
Allowed to be creative in your own way, have your own styleMike’s keynote yesterday was awesome wasn’t it? I wish I could be that guy, but I have accepted that I will never be that guy (and I will never be Mike, for that matter). I’m not an obsessive, but I am an observer. You don’t have to be “original” to be creativeExpose yourself to new things, if only to remind yourself that the old things aren’t that badSide projects are not a requirement.
You don’t have to work for a company whose product you find purpose in, but finding the job role that you find purpose in is important.Align what motivates you to your job title and company. I like to build software that moves a business forward.You may like to find secrets in data, or to help developers do their jobs better, or to create beautiful interfaces that people love to use. You are more affected by the values of your company and the purpose of your job internally than the thing the company does.Find purpose externally, in higher-order work, that leads to empathy:Write blog postsGive talksMentorVolunteerWork in open sourceCheer on your friends
Growth, to give you confidenceAuthenticity, to align your values and be true to yourselfAnd Purpose, to direct your passions and to go outside of yourself and see the world through other eyes