Tackling the Technical Tome

» What is the best way to learn a new technology? I'm talking about the kinds that come printed like hieroglyphics on the pages of a hefty technical tome. What's the most effective way to assimilate this information? .. to master the technology .. in order to wield its Mojo. Like a Jedi does with his lightsaber.

Javascript's Javan RhinoI read somewhere how the average programmer reads less than one technical book per year. Surprising, no?

I enjoy learning about & mastering new technologies. Always have. The more powerful the better.

But you neednt read many technical books in order to understand why they're considerably more challenging than your average armchair novel.

Back in '07, after web-hacking my way thru the site for several years, I read this book on XHTML & CSS. Cover to cover.

What a difference that made! Night-n-day. Suddenly the mojo was mine. No more struggling to figure out why things werent working the way I expected.

That particular title weighed in at a respectable 650 pages. But it contained plenty of fluff. (I actually like that kind of fluff. Another big deal was learning the Unix shell .. for help with VPS server administration. Very powerful. Things that used to take hours, now take minutes.)

Javascript | The Definitive GuideWrestling the Rhino

But those 650 pages are nothing compared to the 1100-page behemoth sitting beside me here now.

I must admit » this thing looks intimidating. Formidable. Daunting. Sometimes I swear it snorts at me.

But heft alone is not my only reason for dismay. Each page comes chock full of technical terms, unwieldy jargon that must be mastered if I am to have any hope of accessing the power it contains.

How I would *love* to upload the contents of this monster (.. into my brain) .. all in one shot. You know, like they do in the Matrix. But that option doesnt seem feasible. So .. we're left with the old, standard method » reading. Ugh.

I've been working on this Javascript book, off-n-on now, for several months. So I have plenty of experience dealing with such adversity.

This is not a mountain, I've come to understand, that cannot be surmounted by sheer enthusiasm alone. I mean, if I could stay awake for a week and power thru this thing, I would. But that aint how it works. (At least, not for me.)

In a strange, counterintuitive way, pure passion actually seems a hindrance here. Because passion brings frustration. More passion » more frustration.

I get a running start (passionate, enthusiastic) .. before heading up the Javascript hill. Only to find myself soon running out of steam .. exhausted, having made pitiful little progress.

What's required here is not so much passion or enthusiasm, but rather sustained, steady effort. Methodical focus. You know » the tortoise and the hare.

Anyway, after getting gored by the rhino a few times, I started to glean a few insights .. strategies for dealing with an intimidating 1100-page tome. So I've had to regroup and reassess my approach.

••• today's entry continues here below •••

It's not so much the complexity, as it is the sheer volume .. of new material the novice must digest. I actually do well with complexity.

Rather it's the volume that's giving me trouble. And especially the fact that much of the information is totally new .. particularly the parts dealing with Object Oriented programming. Feel me?

Javascript's Javan RhinoStrategies for Tackling the Technical Tome

First, and most importantly is » the refusal to quit. I keep going. No matter what. No matter how discouragingly slow progress may seem. (And yes, it does seem discouragingly slow at times.)

You can file this mind set under the heading » Persistence. Or Perseverance. Dogged determination. Diligence. Heck, even Stubbornness will suffice.

The point is » I continue to press on .. glutton that I am. One page at a time.

Related to this point is the decision to abandon any preconceived timetables (.. such as » 1 chapter per week). I've found these self-imposed schedules only lead to discouragement .. which robs the joy we normally get from learning a cool, new technology.

I should note that I was reluctant to abandon my precious timetables. The self-imposed pressure of meeting a deadline created unnecessary stress. Stress, I'll admit, can be used to our advantage.

But learning should never be more about turning the page than gleaning the insights those pages contain. And that's what was happening.

Soon as I abandoned timetables, my studies improved markedly. Learning became more enjoyable. The unmeasured approach goes against everything I've held sacred for years. My learning now feels more 'Zen-like' .. if that makes sense. "Snatch the pebble from my hand, Grasshopper."

Or maybe I'm becoming more quantum, seeing how quantum mechanics also acts differently when you try to measure.

My new paradigm for absorbing and digesting the contents of this tome have become that of » a carpenter with his SAW .. cutting thru a log. The saw is my » attention. Let the saw do the work. Dont try to force it.

Enthusiasm makes you want to force the saw. Trying to force the saw (straight down) thru the log (i.e. » being over eager) is actually counterproductive. Rather » just keep the saw focused on its line (.. maintain concentration on the material) and develop a pleasant, steady rhythm. Zu-bah, zu-bah.

Javascript | The Definitive GuideLike a Walk in a Wooded Wilderness

Learning something new is like walking thru a wooded wilderness.

At first the going is slow and you must pay attention to every little detail .. in order to maintain your bearings.

After a while however, you find a path starting to form under your feet. Things (terms & concepts) become familiar. That's when you're able to pick up the pace.

If you spend enough time there, you eventually becomes very familiar with your surroundings .. to the point where things become "second nature." A well-worn path develops beneath your feet.

Periodically I return to sections of previous chapters .. reviewing them .. to make sure I havent lost my way as I continue to make progress, pressing into virgin territories.

I very much enjoy these return trips. They go fast. It all comes back quickly. But my first time thru a chapter always goes slowly. Like tromping thru mud.

Every day I go for a stroll thru the Javascript forest. Every day I advance a little further. (Farther?) Even if it's only a few pages. The underbrush here is still pretty heavy, but I'm beginning to get an intuitive sense of my bearings.

I never go long without picking up the book. Even if it's only for a short period. Because the longer I go (.. more than a few days) the harder it is to get back into the flow.

So one of my strategies has been to » pick up the book early & often. It's much easier to continue reading once you've begun (for the day), or when you've only recently put it down.

Javascript's Javan RhinoMore Strategies for Riding the Rhino

Another strategy is to never wait until everything is perfect. Never wait until all my chores are done. Cuz there's always something else that needs attention.

Sure it's nice to cozy up with a book after everything has been attended to .. the laundry washed, carpets vacuumed, bills paid, car cleaned. But for some reason that magical point never seems to arrive.

'Just do it' has become cliché, but it's a valid point here.

I also break up my study of Javascript with other, non-technical reading. Not sure why, but this seems to help keep me from burning out.

Being so hefty means you cannot easily lug around this book (.. without a forklift) like you can a paperback novel or your Moleskine.

So a good strategy is to print out a few pages to carry around with you .. on the run, and review them during dead-time throughout the day while you're out-n-about. (I stick them in my Moleskine. 3 or 4 pages is good.)

Late at night is not a good time to study Javascript. Sometimes, especially when I'm tired, I try to read the text, and nothing happens. It's like my brain says, "Dude, uh, we're done with Javascript for today," and refuses to process any more information. That's when I reach for another book.

Lately I've been tripping on (over?) how much programming deals in a world where 8 (not 10) is the base number. 8 bits per byte. Also hexadecimals. Base-16. E.g. » FF = 255 (15*16+15). Because F = the numeric value » 15 (.. not a letter in our alphabet). This awareness has a mind-expanding effect.

Computers operate largely in a binary world » base-2. Realizing there exist worlds other than the base-10 one in which we live and take for granted (based on our 10 fingers) .. is cool.

Booleans seem very simple » either true or false, 1 or 0, on or off. But I actually spent a few days going over this section, repeatedly .. trying to internalize it .. as tho I wanted it to become an intuitive part of me. Seared into my consciousness.

This could be another topic entirely (booleans). But the concept very much affects how computer circuits work, and therefore semiconductors, and therefore how computers themselves work, including transistors. Open or shut. One thing or the other. Either/or. [ More good info here, if you're interested in this sort of thing. ]

Javascript | The Definitive GuideSurprisingly Modular

One of the more surprising things I learned about programming .. is how MODULAR it is.

You can, for example, create code for one purpose, and then copy-n-paste a chunk of that code (repurposing) in other places, in other programs .. with little modification.

It's almost like working with physical building blocks. Very cool. Hadnt expected that.

Importance of Learning the Lingo

Here is a passage from the text that illustrates the importance of learning the lingo, the terms, the terminology:

"Javascript objects are composite values: they are a collection of properties, or named values. We refer to the value of a property using the . (dot) notation. When the value of a property is a function, we call it a method. In order to invoke the method m of an object o, we write » o.m()"

There was a time when I would read something like that and say, "Huh?" But now I know what they're talking about. That's actually basic stuff for me now. Progress.

At this point in the game, I pay particularly close attention to the terminology, because learning the terms allows me to ask better (more accurate) questions.

Javascript's Javan RhinoI'm talking about terms such as »

variable, value, type, object, property, reference, array, element, boolean, primitive, null, undefined, float, string, function, method, constructor,

wrapper object, expression, regular expression, parse, operator, operand, statement, scope, (including block-scope & function-scope),

hoisting, truthy, falsy, argument, parameter, NaN, overflow, underflow, binary, hexadecimal, octal, loops, global, class, source code, return,

unicode, literal, strict, integer, conditional, iterate, algorithm, inheritance, abstraction, console, whitespace, zero-based indexing, implementation,

syntax, prototype, encoding, escape sequence, initialize, invoke, equality, mutable, concatenation.

.. to name a few. They dont call it a 'language' for nothing. These are some of the terms I feel reasonably comfortable with .. enough to be able to ask effective questions if need be.

Again, my main strategy is to keep plodding away and resist feeling discouraged because progress does not come more quickly. And not to let much time pass before picking up the book again. Stay current.

Making progress in ANY learning endeavor (such as college) is very much a 'function' of what you DONT do .. of not getting distracted.

In other words » of being able to focus (Zen-like) single-mindedly on a given subject (or set of subjects) for an extended period (.. typically 4 years in the case of a college education).

Sure, it would be nice to be transported to Castalia in the 25th century, where we could all become a Magister Ludi. But most of us have lives to lead .. places to go and people to meet.

Javascript | The Definitive GuideIn other words, it takes a commitment. You dont just waltz thru 1100 pages of technical jargon.

To give you a taste of the type of things I'm trying to sort out (.. in my head) check this out »

» Regarding the subject of Converting Objects (.. which include Arrays & Functions) to Primitive Values (.. which comprise numbers, "strings-of-text", and boolean truth values).

This section is important to me because I understand primitive values and how they work, but Objects are new to me. So learning how Objects convert to Primitives is conceptually satisfying.

Anyway, note that .. the EMPTY ARRAY [ ] converts to an empty string " " and also to the number 0 (zero).

But (but!) the EMPTY ARRAY also converts to the Boolean value » TRUE. In fact, ALL object types convert to the Boolean value » TRUE.

This would not be a problem (conceptually) were it not for the fact that » the empty string and the number zero (0) both convert to the Boolean value » FALSE. See the apparent inconsistency? (Here with primitives » FALSE, while there with Arrays » TRUE.)

And then there is another, even more confusing factoid, where two objects with the exact same properties and the exact same values do NOT equal each other.

In other words, var Object1 = { x:1, y:2 } does NOT equal var Object2 = { x:1, y:2 }. Or put more syntactically correctly » Object1 == Object2 » false.

[ Normally I would not Capitalize the identifiers Object1 and Object2, unless they were Constructor functions. I did this because it makes it easier to see my example code. ]

My point is .. that counterintuitive things like these require you to pause and think about them. So you cant just motor thru the text. Your reading/progress gets slowed.

Telluride Ski ResortIf you've ever spent a week or two vacationing at a ski resort, you know how much more quickly your skills develop ..

.. rather than skiing for a day here and a day there.

Same goes for your command of the French language (Parlez vous?) after spending a summer in Paris.

Same principle applies for those learning computer Programming. The more you can IMMERSE yourself .. in the programming world, in the "language" itself (be it French or JavaScript) the more easily and the faster you'll learn. Hard to become a good skiier, I've found, if you only go a few days each winter.

Oh .. one more little thing I do .. to trick myself into believing the book is not so massive .. is to divide it, conceptually, into 3 sections:

  1. a 300-page section covering the CORE Javascript language
  2. a 400-page section covering the CLIENT_SIDE, of how Javascript works in host web browsers
  3. a 300-page REFERENCE section (plus a 100-page INDEX)

So it becomes (in my mind) 3 smaller books, instead of 1 massive tome. Divide and conquer. A time-honored strategy.

The first part seems the most conceptually daunting, the most abstract. The second part seems the coolest, the most fun. But you need to know the first before you can master the second. The 3rd part is » as needed.

HTML5 logoI've said it before, but it bears repeating » HTML5 + CSS3 + Javascript = the Future of the Web.

HTML is simple. CSS is simple in concept, but tricky in implementation. Javascript is a real programming language.

If you already know how to program, the transition should be relatively painless. If not, well, there are no shortcuts. (Dont think I havent looked.)

Much to marvel at in the world of programming languages. Truly wizardly stuff. And I only know a small fraction. Definitely worth learning. Much more to say, but I need to return to the rhino (.. or he'll wander off).

"Here, Spike. Nice rhino."

For more along these lines, here's a Google search preconfigured for the query » learn javascript programming language

Radified home

About this Entry

This page contains a single entry by Rad published on November 30, 2011 11:30 AM.

Photos from the New Digs was the previous entry in this blog.

Cracked Infected Tooth Pulled is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.