How To Talk To A Programmer (And Get Results)
(Photo credit: cisco.com)
Dave, would it be possible to cache our SQL database queries so we could work in an offline mode?
Nope. We designed the system to expect a persistent connection to the data. We’d have to completely redesign the communication module. I’m not even sure we could make it work anyway.
Okay, I was just curious.
Programmers, or developers as they are more commonly referred to in the software world, are typically really smart. But, they tend to view the world very black and white. I think it has to do with the fact that at its heart a computer really only understands “on” and “off.” It’s why we refer to them as binary devices. (Well, some of us refer to them that way.)
Your computer, or your smart phone, or your tablet, stores programs and data and all those pictures of your cat on a hard drive. A hard drive is made up of literally billions of memory locations called bytes. In fact, “giga” mean “billion.”
kilobyte == a thousand bytes
Megabyte == a thousand kilobytes, or a million bytes
Gigabyte == a thousand megabytes, or a billion bytes
The sizes continue.
Terabyte == a thousand gigabytes, or a trillion bytes
Petabyte == a thousand terabytes or a quadrillion bytes
Exabyte == a thousand petabytes or a quintillion bytes
Zettabyte == a thousand exabytes or a sextillion bytes. That’s 10^21, or
1,000,000,000,000,000,000,000 bytes.
It is estimated that in 2011 there was about 300 exabytes of data stored in the world. Today there is more than a zettabyte. Large companies like eBay, Google, Microsoft or the NSA have datacenters capable of storing zettabytes of data.
But, back to programmers. A “byte” is made up of eight “bits.” A bit can either be “on” or “off.” Programmers will refer to a bit being set to 0 (off) or 1 (on.) For example, to express the number 114 in binary code, you would record 0111010
. Most programmers write in high level languages that don’t require them to set the bits in a byte individually. But, when it comes down to it, your computer is all 1’s and 0’s.
What’s this have to do with programmers? Just that to a programmer, often things are “on” or “off.” When I approached Dave with the question about our software, I didn’t expect a response. Well, I did, but I expected him to say it couldn’t be done.
Why? Because we hadn’t done it. The program worked the way that it worked and anything else was a “no.” Essentially, the zero.
However, I’ve worked with programmers a long time and in addition to being very binary, programmers are naturally curious. My whole point in going to Dave was to plant the idea. I knew that he’d take my question and start thinking about it. He’d think about it on his way home. He’d think about at random times when he was eating breakfast, or about to go to sleep. And after letting it stew for a couple of days, Dave would come find me.
Rodney? I’ve been thinking about that question you asked about caching SQL queries. We can’t cache the actual SQL query, but we have a module that evaluates the query string before we hand it off to the communication module. I think all we would have to do is add a single interrupt call to that module.
Okay. . .
We’d make the evaluation module check for a valid connection before handing it off. If we couldn’t ping the server, we’d hold the query until the connection came back. We could even store it so you could turn the remote client off.
So, you’re saying. . .
Look. Your question was wrong. We can’t cache the SQL code, but I’ve figured out a way to give you what you really want!
And with that Dave would grumble about trying to talk to non-programmers and he’d head back to his desk to code up the solution. What was ironic about this exchange was not just that I did it on purpose, but that in the past, I told Dave I did it on purpose. I explained to him how I got him to spend his free time thinking about how to solve these clever use cases. And the fact that he knew what I was doing didn’t change the fact that it worked.
Had I gone to him and said, “I need you to modify our software to work in offline mode,” I would have had a huge fight as Dave spent hours explaining why it couldn’t be done. By presenting it as a question, and implicitly a challenge, I appealed to his natural curiosity. In the end, he had to convince me of the soundness of his strategy.
Occasionally, Dave got annoyed that he ended up convincing me of the things I wanted in the first place. But, he couldn’t get too upset. After all, it was his idea.
Sometimes you just need to understand how to speak their language, and think about those computer bits.
Rodney M Bliss is an author, blogger and IT Consultant. He lives in Pleasant Grove, UT with his lovely wife and thirteen children.
Follow him on
Twitter (@rodneymbliss)
Facebook (www.facebook.com/rbliss)
LinkedIn (www.LinkedIn.com/in/rbliss)
or contact him at (rbliss at msn dot com)
That’s sort of brilliant…
Thanks, Toad. Dave was known to say, “I don’t know what you do around here. . .but I need you here doing it.”
Developers and engineers are fun people to work with because they are typically motivated by the same things. . .and it’s not money. They like challenging problems.
You know it’s a great brain hack when they tell you they’re hacking your brain and it still works.
MY recollection was that you originally told me that the way to talk to programmers was to tell them you want something, then watch them explode and tell you why it couldn’t be done. Then go away and wait for them to come find you and say “You know, I’ve been thinking…” Has your memory added kindness, or has mine added humor? 🙂
I certainly remember ranting (somewhat) at you over some of your requests, but by the end it was kind of fun. I knew you were poking me in the brain, and it only mildly annoyed me that my brain went off and found the stupid answer.
Oh, and also? I hope I never ever ever have to write an offline dabatase sync again, but I was pretty proud of what the team came up with. It was very cool to watch an employee come in from the field, hook up his laptop, and find out that we had upgraded the database schema while he was out. The sync would upgrade his database schema and then play back the stored activities as if they had been performed on the upgraded database while he was in the field.
…I also remember literally being locked in the client’s attic with Don for a week until we could get the darn thing debugged in the field. Eh. Let’s call that one 50/50 “good times” and “war stories”. 🙂
I MIGHT be somewhat misremembering. . .maybe. Either way, it was the challenge of accomplishing something that you, yourself just stated was impossible, I think was the power trip. Like the kid pitching to himself by tossing up the ball? And when he misses he’s thrilled that he’s such a great pitcher!
Yeah, that week in the attic. I forgot about that. You, me and Don. Mostly, I had to find stuff to do while you guys wrote code. I answered a lot of emails that week as I remember.