I’m writing this in Emacs. I had an honest moment with myself about the things I know I should do better. One of those things is getting proficient in Emacs.

This isn’t an Emacs vs. anything post. I know that for my work, I could be more efficient if I invested some time in learning Emacs. But I was avoiding it.

At the end of the day, it’s about getting better, not about being good.

In Nine Things Successful People Do Differently, Heidi Grant Halvorson wrote:

Believing you have the ability to reach your goals is important, but so is believing you can get the ability. Many of us believe that our intelligence, our personality, and our physical aptitudes are fixed—that no matter what we do, we won’t improve. As a result, we focus on goals that are all about proving ourselves, rather than developing and acquiring new skills.

That last part…spending my time proving myself instead of acquiring new skills seems like a colossal waste of time. Don’t we all struggle with that?

Functional Programming

Another thing on my list is to embrace functional programming.

In Mastery, Robert Greene writes:

We humans live in two worlds. First, there is the outer world of appearances—all of the forms of things that captivate our eye. But hidden from our view is another world-how these things actually function, their anatomy or composition, the parts working together and forming the whole. This second world is not so immediately captivating. It is harder to understand. It is not something visible to the eye, but only to the mind that glimpses the reality. But this “how” of things is just as poetic once we understand it—it contains the secret of life, of how things move and change.

This is the core of functional programming. It is embracing the abstractions around the actions instead of the objects an application represents. It means I practice writing code in this new style. It means I read more functional code. It means I ponder the action behind an application and get a deeper sense of what I’m delivering.

Michael Fogus gives a great introduction to this in Functional JavaScript. There, he writes about pulling programs apart and re-assembling them from the same parts, abstracted behind functional boundaries. He talks about separating domain logic from generic assembly machinery. He talks about a consistent processing idiom.

Your eyes may glaze over, if you’re not interested in learning functional programming. But, can you see that I’m reinventing the way I solve problems? After 20 years writing code, I recognize that there is a fundamental change I must make to get better, and I’m doing it.

The Long Road

My lesson to myself tonight is to remember the long road ahead. I have time to accomplish more meaningful things in my life. I might have 35 productive years ahead of me, maybe more. What can be accomplished in 35 years?

Dave Grohl said:

I’ve experienced great things, I’ve experienced great tragedies. I’ve done almost everything I could possibly ever imagine doing, but I just know that there’s more.

He’s also said:

Neil Young is my hero, and such a great example. You know what that guy has been doing for the past 40 years? Making music. That’s what that guy does. Sometimes you pay attention, sometimes you don’t. Sometimes he hands it to you, sometimes he keeps it to himself. He’s a good man with a beautiful family and wonderful life.

I can go on and on with Dave Grohl:

It’s tough to go to sleep at night, and I wake up after five hours because I feel like I’m wasting time. I just sit up at night and think about what I can do next.

The point is to keep going, to know there is something more.

So, what would happen if you had an honest moment with yourself? What is it you are creating in your life? What things have you avoided to embrace? I’ll keep embracing Emacs, functional programming and several other hard-for-me skills. I’m glad I’m doing this.