BENNU’S JOURNEY - Heavy Bombardment

To the Neophyte Coder; Plotting a course

I recall standing near a workbench, looking up at a wall covered in strange yet interesting looking tools. Some were sharp with inviting handles —which I instinctively knew were designed for endless hours of entertainment, and others were such alien compositions of shapes, buttons, knobs and dials that I immediately expedited them to the top of my list-of-purposes in life.

My father —who had developed the uncanny ability of appearing just outside of my field of vision moments before my would-be self-inflicted enlightenment, would endeavor to redirect my focus to something he felt to be more suitable. For the times that I would not budge and he could not move me, he would reluctantly agree to let me pursue my mission of choice on the proviso that I strictly adhere to a small set of fundamental principles.

As grateful as I am for the safety and guidance that these principles provided, it wasn’t until years later that I realized what their true value really was. New challenges are daunting and can invoke emotions of extreme excitement the one moment, and extreme frustration the next. Learning curves tend to begin steep and are accompanied with the euphoria of things just clicking, the angle soon tapers off and the challenge becomes significantly more difficult while frustrations, uncertainty and questions begin to compound. Our physiology responds to these stressors in the well-established fight-or-flight manner and our ego steps in to help us rationalize why the challenge is no longer worthy of our efforts.

The true value of the principles I had to take along on every challenge as a boy, was the frame of mind it placed me in for the journey. These principles, like compasses, maps and other tools of navigation gave me a way of overcoming the obstacles I would be encountering. I eventually realized that the better I understood them, the more things I completed and more importantly —enjoyed.

This is not a post about which programming language to learn, which stack is best or which course to complete —there’s plenty of that available all over the place. I’d like to instead give you a small set of fundamental principles —tools of navigation if you prefer, that might at times make all the difference on your adventure.

1. Habits Matter

Say you set out to build a dog house, you’d begin with some sketch of what it should look like, then put a list together of materials and tools you’d need to get the job done. You’d set out to acquire these items and realize that things are expensive, this realization will have a subtle but profound effect on the overall quality of your work, simply because the more costly a project, the more important it becomes for it not to end up a waste.

What is not immediately obvious, is that costly personal projects tend to guard against developing bad habits. You’ll research your approach extensively, pay much closer attention to details, and double —maybe even triple check your measurements before execution. Coding does not come with such guards, you’re free to put up and tear down constructs at whim, weird and wonderful things can be created and destroyed in mere moments, you are a god —and it is this boundless freedom that makes the need for discipline all the more important.

Actions are assimilated into habits, and these habits will accompany you on to other projects, becoming increasingly efficient and easier to call upon as they develop. Now habits are stubborn things, they take root and reach into the very fibers of our character, once rooted they become near impossible to remove and extremely difficult to replace. Life is short, it’s wiser and easier to insist on good habits from commencement, liberating your energy for grander endeavors than overcoming bad ones.

2. Cultivate Beginner’s Mind

Curiosity is inherent in us all, but never expressed as zestfully as when we are kids, devoid of all the aspects of self that we pick up along the way. As kids, we are not worried about asking silly questions or concerned about not getting it, we don’t have reservations or a need to keep herding our attention as it continually drifts away to any of our many hang-ups. Kids are present and completely absorbed in the moment, their minds are open and ready. In the practice of Zen, this is known as Shoshin.

Cultivating Beginner’s mind as an adult is not an easy task, we collect insecurities, opinions and facts along the way that act as lenses through which we evaluate new information —and on the rare occasions that we find ourselves in an open enough state of mind to see value in something new, our attention is snatched away by the many competing distractions of contemporary life.

Our physiology does a poor job of learning when seeking to fight or escape an uncomfortable situation, so it is important to be in a tranquil state of mind. Take the time to get into one, open a dialogue with your hang-ups, many of them will move on once given recognition.

Our mind is a network that needs to move a concept around to understand and internalize it, this process works best when not interrupted. Eliminate distractions in your environment so that you can remain in the moment. Take time out of your day to let your mind wander and blend your ideas and concepts into fascinating constructs, and remember not to let your eagerness get the better of you, focus instead on the merriment of the journey.

3. Be Consistent in your efforts

Our brains, like our muscles respond well to consistent stimulation, some days putting in the time comes easy, others make it tough. You will encounter obstacles that you’ll have to work through, and how you’ll be doing that might not be evident at first. Don’t be discouraged, just keep coming back. The obstacle in itself is a challenge and holds a valuable lesson, insist long enough and it will be revealed. For the really tough ones, always remember that you are not alone, communities around code are larger, easier to access and friendlier than ever before. Just keep coming back.

4. Don’t buy into the hype

Growing up, completing school assignments or accessing new information required access to a library. I am forever grateful for the advent of the Internet (and all the infrastructure it depends on), for making information available at any time, all the time —but not all information is created equal. The difficulty in discerning is that much of what is out there is a blend of selective facts, keen observation and opinion. This gets reverberated and commented on with good doses of subjectivity and bias —and you’re ultimately left perfectly lost, or perfectly convinced that you have discovered nirvana.

The world of coding is very fragmented; many amazing things are being done on many islands. While you’re bound to find an island with a philosophy that resonates with you —and this is as good a place to start as any, there are a few good concepts that apply equally well to all —the essence of which is best captured in Urs Enzler’s Clean Code Cheatsheet. Venture to learn more about and actively apply these concepts to your work regardless of the island you take up residence with. Hype is cyclic, you’ll see ideas come and go, these concepts offer the kind of fundamental value that will be paying dividends throughout your adventure.

5. Old is always New

Coding feels modern, it’s not something older generations did for a living and most of its use cases didn’t exist a few decades ago, schools are still trying to work it into their curriculum and most people still consider it nerd sport —so you’d be forgiven for thinking it’s all new. The truth is, many of the ideas circulating today were discovered between the 50s and 70s. When encountering new ideas, look to the past for more information, much of it is impressively well thought out and documented.

6. Balance outdoes Haste

Coding is not easy, the most critical and best concealed of its many difficulties is that of remembering to take care of oneself. We often get lost in our work, losing track of time, forgetting to eat or walk or stretch. We carry our frustrations home with us where they creep up on our loved ones and disturb our sleep. When not absorbed or frustrated we’re frantically trying to keep up with the latest practices and trends, or sinking into feelings of inadequacy and depression.

Be wary of such behavior and don’t let any of it develop into routine or habit. Coding —like all worthwhile pursuits, takes time. Enjoy the journey and be good to yourself.

Work is a rubber ball. If you drop it, it will bounce back. The other four balls– family, health, friends, integrity– are made of glass. If you drop one of these, it will be irrevocably scuffed, nicked, perhaps even shattered.

― Gary Keller
Share Comments