Why Having a Tiny Brain Can Make You a Good Programmer

This post is not just for software developers. It is intended for a wider readership; we all encounter complexity in life, and we all strive to achieve goals, to grow, to become more resilient, and to be more efficient in our work.

xray-of-homer-simpsons-tiny-brain-295x300

Here’s what I’m finding: when I am dealing with a complicated software problem – a problem that has a lot of moving parts – many dimensions, I can easily get overwhelmed with the complexity. Most programmers have this experience when a wicked problem arises, or when a nasty bug is found that requires delving into unknown territories or parts of the code that you’d rather just forget about.

Dealing with complexity is a fact of life in general. What’s a good rule of thumb?

Externalize

parts-of-the-brainWe can only hold so many variables in our minds at once. I have heard figures like “about 7”. But of course, this begs the question of what a “thing” is. Let’s just say that there are only so many threads of a conversation, only so many computer variables, only so many aspects to a system that can be held in the mind at once. It’s like juggling.

Most of us are not circus clowns.

Externalizing is a way of taking parts of a problem that you are working on and manifesting them in some physical place outside of your mind. This exercise can free the mind to explore a few variables at a time…and not drop all the balls.

Dude, Your Brain is Too Big

I have met several programmers in my career who have an uncanny ability to hold many variables in their heads at once. These guys are amazing. And they deserve all the respect that is often given to them. But here’s the problem:

kim_peekPeople who can hold many things in their minds at once can write code, think about code, and refactor code in a way that most of us mortals could never do. While these people should be admired, they should not set the standard for how programming should be done. Their uncanny genius does not equate with good engineering.

This subject is touched-upon in this article by Levi Notik:

Screen Shot 2015-04-01 at 9.47.43 AM

who says: 

“It’s not hard to see why the popular perception of a programmer is one of some freak genius, sitting by a computer, frantically typing while keeping a million things in their head and making magic happen”

wsshom1A common narrative is that these freak geniuses are “ideal  for the job of programming”. In some cases, this may be true. But software has a tendency to become complex in the same way that rain water has a tendency to flow into rivers and eventually into the ocean. People with a high tolerance for complexity or a savant-like ability to hold many things in their minds are not (I contend) the agents of good software design.

I propose that people who cannot hold more than a few variables in their minds at once have something very valuable to contribute to the profession. We (and I’m taking about those of us with normal brains…but who are very resourceful) have built a lifetime’s worth of tools (mental, procedural, and physical) that allow us to build complexity – without limit – that has lasting value, and which other professionals can use. It’s about building robust tools that can outlive our brains – which gradually replace memory with wisdom.

My Fun Fun Fun Job Interview

I remember being in a job interview many years ago. The guy interviewing me was a young cocky brogrammer who was determined to show me how amazingly clever and cocky he could be, and to determine how amazingly clever and cocky I was willing to be. He asked me how I would write a certain algorithm (doesn’t matter what it was – your typical low-level routine).

Well, I was stumped. I had nothing. I knew I had written one of these algorithms before but I couldn’t for the life of me remember how I did it.

Why could I not remember how I had written the algorithm?

Because I did such a good job at writing it, testing it, and optimizing it, that I was able to wrap it up in a bow, tuck it away in a toolbox, and use it for eternity – and NEVER THINK ABOUT HOW IT WORKED ANY MORE.

Hello.

“Forgetting” is not only a trick we use to un-clutter our lives – it actually allows us to build complex, useful things.

Memory is way too precious to be cluttered with nuts and bolts.

tech_brogramming10__01a__630x420Consider a 25-year-old brogrammer who relies on his quick wit and multitaskery. He will not be the same brogrammer 25 years later. His nimble facility for details will gradually give way to wisdom – or at least one would hope.

I personally think it is tragic that programming is a profession dominated by young men with athletic synapses. (At least that is the case here in the San Francisco Bay area). The brains of these guys do not represent the brains of most of the people who use software.

Over time, the tools of software development will – out of necessity – rely less and less on athletic synapses and clever juggling, and more on plain good design.

Quotation-Donald-Knuth-science-reality-people-Meetville-Quotes-184888

The Password Crisis is NOW

We saw it coming.

As far back as several decades ago. Remember those innocent, nostalgic days when we only had to remember a few passwords? Like an email account, or maybe an online banking account?

Those days are gone. The passwords I am now expected to remember have accumulated…like barnacles on the hull of the ship of life…like warts on the frog of society…like hangnails on the fingers of ambition. Like…

You get the point.

change-all-the-passwords

All My Keys Were Locked in my Car As it Was Running

In my college years, I used to keep all my keys on a chain. This included my apartment keys, my car keys, my bike keys, my work keys…a feck-load o’ keys. It was a blustering snowy night in Syracuse, and I had started the car. I had to step out to wipe the snow off the windshield – not realizing that I had locked and closed the door. THE CAR WAS RUNNING. I couldn’t get into my car to turn off the engine. I couldn’t get into my apartment, which was across the street…I was stuck.

top-worst-passwordsI won’t get into the story of how I solved the problem. I just wanted to make a comparison. IT SUCKS.

Now that most of our keys are virtual (and require memory), we have new problems.

I HAVE TO CHANGE MY PASSWORDS FREQUENTLY (because I keep forgetting them) AND THEY ARE SUPPOSED TO BE HARD FOR OTHERS TO FIGURE OUT (which means…I keep forgetting them).

Passwords_Tattoo

Have you noticed that some web sites will rate your new password right as you are typing it? Like, it’ll say your password is STRONG or WEAK, etc? Don’t you hate it when you squeeze another password into your brain, and you strain to remember it, only to discover that you have to start all over because you forgot to include at least one number, one capital letter, at least three Chinese characters, two trigonometric symbols, and four Egyptian hieroglyphics.

Does this sound familiar? …

“I’m locked out after too many login attempts”

Many people are giving a shout-out for the new services that provide a solution by remembering all of your passwords, and reducing your need of memory to one single password that you to use for that service. It basically does the remembering for you.

I don’t know about you, but that just kinda creeps me out. A blow to the head is all it would take to knock that single password out of my memory. Then what?

WHAT’S THE SOLUTION? Multiple Biometrics

Biometrics_traits_classification[1]

It is already becoming a standard practice to use multiple assurances (like security questions) to recover accounts, so things are moving in the right direction. It may be a while though before technology for biometrics becomes commonplace. But I think it’s INEVITABLE.

Imagine that your password is 80% reliable. Now imagine that you are using a computer that has hardware to take your fingerprint. Imagine that your fingerprint is 80% reliable. If you enter both the password and the fingerprint, then you have 96% reliability.

Imagine that you can announce your name, and the microphone picks up your voice and compares that to a pre-recorded sound of you saying your name, and that is 50% reliable. Now we are up to 98% reliability.

If the threshold for entry into an account were set to some value (like 78% for a casual social media app or, 99.5%, for a sensitive financial account) then you could issue a combination of biometric data to get the % up the the necessary threshold. This would allow for more variability, and flexibility.

Just Try To Steal My EyeBall, My Voice box, My Fingers, Or My Memory

In the future, when biometrics is a common form of password protection, you might try to run off with one of my eyeballs and use that to forge my iris scan, in an attempt to hack into my bank account.

But you won’t get very far.

thumbOne reason is that my cousin Guido doesn’t take too kindly to people running off with my body parts…if you catch my meaning.

Another reason is that there’s a lot left of me that would still be needed. And one of those things just might be a password. And the whole point is that we should have many modes of identity detection. This is the way nature prefers it.

Imagine that you and I are friends. We meet on a street corner and I tell you that I am in a bad way, and I need to borrow $200 dollars, and I promise to pay you back next month. After talking this over for a few minutes, you are probably not going to stop and say…..hmmm, are you really Jeffrey Ventrella? Prove to me that you are who you say you are!” No. You will be 100% sure it is me; you will have no hesitation about who I am (although you may have some hesitation about trusting me to pay you back – but that’s another issue, which I prefer not to get into).

Why do you know it’s me? Multimodal communication: the sound of my voice, the shape of my face, the words I speak, the clothes I wear, the fact that we are in front of the local coffee shop…the list goes on. Multiple assurances are built in to natural language. Only a rich combination of multimodal identity assurances will get us past the current password crisis.

Big Bro

This is of course not all that there is to say about how to solve the password crisis. It’s a little scary to have bits of my identity flying across the internet and being processes on servers out there in the world. A corporation or a government will probably run that server. I damn-well better trust that server!

For now, I’ll just leave it at that. I’d love to hear your thoughts. Unless you are a flower child living in a remote forest and subsisting on mushrooms and larvae, you probably have experienced password anxiety.

Tell me what YOU think!

.