ColdFusion Muse

The Inquisitive Mind

A misconception about technical folks is that they are fully left-brained and incapable of true creativity. Anyone on the inner circle of geekdome knows this is not the case, but folks on the outside looking in often only see the engineering skills - attention to detail and minutia, obsession with systems and process, and a penchant for pocket protectors. Of course in the last 10 years you can add flip flops, body piercings and a sort of pigeon English consisting of acronyms, techno-babble and quips from Monty Python and the Princess Bride. That should tell you something in itself. There's more to IT folks than numbers and obscure discussions about the best Star Trek Movie (Khaaaan!!!!). That got me thinking.

And Now for Something Completely Different

In fact, the process of "building" an application is a very creative process. Some programmers or designers aren't wired as creative people. They often do well as members of a team with specific tasks and measurements. But the best ones have a creative bent. That is not to say they are visually creative (like a graphic artist). No indeed, I know excellent programmers for whom trying to remake a button in Fireworks or Photoshop is simply too perilous. But the creative process is embedded in them nonetheless.

As someone who hires developers I think one of the most important qualities that an IT person can have is a penchant for growth coupled with an inquisitive nature. I am looking for a man or woman who is not entrenched in ideology. I want someone who is confident in what they know and aware of all the things they don't know. As humans we have a tendency to embrace our blind spots, turn them into dogma, and go after dissent with torches and pitchforks. If you don't believe me try saying something nice about Windows in a MAC forum. Instead, we need to be more concerned about what we don't know. We need to learn to be confident enough to question our assumptions, break them down and force them to hold water. We need to truly believe that there are "unknown unknowns" out there waiting for us to discover. We need to embrace the inconceivable.

Breaking Assumptions (Rodents of Unusual Size? I don't think they exist... Gahh!)

I like folks who are bothered by what they might be missing. For example, a man (let's call him "Tim") walks into my office with a potential project. He is a circus clown and he wants to build a community site for clowns - a place for clowns to come in and .... well... clown around. If I'm gathering requirements there are a few things I might envision immediately. Since it is a community site I want some blogging, some video and picture gallery type stuff, some facebook and twitter integration, a signup module etc. In my mind's eye I can see all things that make up a "community site". But what I don't see... what I really need to see... is what "community" means to a bunch of clowns.

If I am on my game I will suddenly become intrigued with the world of clowning. Like a method actor, I will want to dive in and understand clowning, clowns and clown footwear. I might want to visit Tim at the circus. I will want to ask questions that have nothing to do with the project like, "How do you feel when people laugh" and "is there a bar with extra footroom where clowns go to hang out" and "Where do you get your baggy pants? Do retiring rappers donate them?" and "When you sleep do you dream of large women?"

Why bother? Why worry so much about what clowning is like if I already have a good grasp of the project fundamentals? My question for you is, how do you know you are not missing something? Besides just being innately curious and "wanting to know", I have a constant nagging suspicion that I'm missing something. I don't automatically trust my insight. That's one of the secrets to growth in life by the way. We tend to remember all the times we are right and ignore the times we miss the boat. This leads us to walk in lockstep with our own point of view. Eventually we become "set in our ways" and people stop trying to help us change at all. Meanwhile, we are convinced of our own dizzying intellect.

Stop for a minute and consider how you have changed. How have you grown since you reached 18? Do you recall your belief system back then? What was important to you? What did you spend your time doing? Did you care about the curtains or did you just want to sing? It kind of makes you laugh doesn't it? If it doesn't make you laugh you are either under 25 or you need professional help. Now image what you will remember as funny when you look back on where you are right now. Does that make you uncomfortable? The truth is that you believe many things right now that you will not believe in the future. Yet, instead of allowing this fact to humble us and cause us to learn and grow, we resist it and hold tenaciously to our assumptions. We often have an enormous stake in being right and not nearly enough of a stake in pursuing truth.

That's the philosophical angle, but it has a very practical application. If I think my clown instincts are "good enough" I am going to make assumptions about clowns that result in poor requirements. Instead of being an innovative partner with Tim I am going to drag him into my world and foist my own assumptions upon him. Perhaps a clown community site should have support groups and meetups for depression and alcoholism. Maybe they need a suicide help line. Perhaps clowns need the "clown horror story of the week" or a "featured car" for their pimped out little jalopies or a celebrity clown death match game to play. I don't know these things, and I won't know them - unless I'm willing to relinquish the idea that I know everything I need to know. I have to drop my assumptions and start from scratch.

Although this is an important trait when it comes to requirements gathering, assumptions become dangerous obstacles when you are troubleshooting. Consider this scenario. A ColdFusion server is slowing down dramatically at 8:30 every day. I call a meeting and invite a ColdFusion developer, a system administrator and a networking engineer to the war room to try and figure it out.

  • Muse: Ok, here's what we know. We have a dedicated Win2k3 server with a financial site on it handling about 3000 users. The users log in at around 8:00am and they stay logged in till around 3:30pm. The general purpose of the site is for users to manage a portfolio of stocks, options, commodities and mutual funds. Each day at around 8:30 the site bogs down for 10 minutes and then recovers. Let's hear what you have to report.
  • Sys Admin: Backup processes are finishing normally at around 3:00 am. Virus scanning comes up with no malware. Audit and web logs don't show any sort of brute force attack or DOS at that time. No Windows scheduled tasks are running and there are no unusual log entries. I'm wondering at this point about permissions. Perhaps the domain controller is bogging down and causing a delay in checking permissions on files or something. I am also running a trace on the DB at 8:30 tomorrow to see what sort of activity is going to that server at that time. Perhaps the DB is bogging down.
  • Muse: Ok... what about networking?
  • Network Person: I checked the drivers on the nic and the port settings on the switch as well as routing rules and response times. Networking looks solid. But my guess is that there is some other network device that is flooding the DB server with requests at that time and we just don't notice it on other aps that are not as critical. I have a trace on the DB port and I'll let you know what I find out.... oh, and I got you a shrubery.
  • Muse: Uh.. thanks... Hmmm.... ok, what about the CF server itself.
  • CF Developer: I checked the number of web connections coming in at that time and the users don't necessarily increase substantially. But at around 8:30, CF requests start running very long and eventually they queue. Processor and memory appear normal. The queue clears out after around 10 minutes. If the database server is slowing down at that point then it would account for it. I am currently logging slow pages and I will be looking at the queries on those pages to see if I can't speed them up or perhaps cache some of them.
  • Muse: Ok... sounds good. It seems a consensus is emerging that the database might be the culprit so we will follow through and meet here again at...
  • Wesley (the Janitor who is chopping wood outside the open window): Excuse me, but did you say things are slowing down at 8:30?
  • Muse: Uh... yes... say... this is a somewhat urgent situation and I'm not sure we have time for...
  • Wesley: Oh... I'm sorry. I didn't mean to interrupt but... it's just that I have the same problem with my quote service at that time and I thought there might be a connection.
  • Muse: Hmmmm... your quote service you say...
  • Wesley: Yes. I dabble in the stock market in the boiler room using an application called "Blue Collar Trading"... or is it Yellow... no no definitely blue... Anyway, I just thought that...
  • Muse: Ok, you have my attention. Your quote service also slows down at 8:30 you say? Do you have any idea why?
  • Wesley: Well, when I called "blue collar quotes" support and asked them they said that they get a very high volume of requests at 8:30 since it is right as the market open. It sort of maxes out the system for a short time, then things settle down. I guess it is all of the users setting their watch lists or something. They also said something about a redneck and marrying my cousin which I did not find particularly useful.
  • Muse: Thanks - you've been very helpful. Perhaps you'd like a job on our team? You seem pretty sharp to me.
  • Wesley: I couldn't take the pay cut or the hours - but thanks anyway.
  • Muse (to Wesley): As you wish.
  • Muse (to team): All right, we know this server is retrieving quotes. Has anyone checked to see what the performance of the quote provider is at around 8:30? [Stony silence... a lone cricket chirps by the window... Wesley squashes him with a crunching sound]
  • Muse: Ok, let's call the quote provider and set up a test script on a separate server. I want to know how the service is performing at that time.
You can see how each of the members has a stake in his or her answer. The sys admin sees things in terms of agents running, permissions and security. The network person sees drivers and packets and ports, and the CF developer sees queries and code. But only the janitor (who should have been listed among our assets to begin with) had no stake in a "system". He was able to break through critical assumptions and ask the question "what if". Inquisitive, creative people do this instinctively. They are able to ask "what if" and "why" without a stake in the outcome. It's a result of natural curiosity that supersedes ego.

So expand your mind. Look carefully for your blind spots. Don't hold too tenaciously to your beliefs and assumptions. Let your ego stay mostly dead. Remove any obstacle to allowing your view to expand and grow. In the long run, you will have less ground that you have to defend and you will find your abilities improving rapidly.

You May Have Noticed...

For those extra savvy readers there are a number of movie references embedded in this post. Some of them are obvious quotes and some are merely inferences. See if you can find them all :)

Comments
Eric Paisley's Gravatar Loved the movie references and as always loved the article. Not to give any away, but my favorite was the reference to the enchanter
# Posted By Eric Paisley | 4/27/09 12:42 PM
Matt Olson's Gravatar Great article! Can you please address one other character in your next article? The Tenured know-it-all...

The person who is open to no new ideas because, "That's not the way it's been."
# Posted By Matt Olson | 4/27/09 2:26 PM
John Allen's Gravatar I think I'm an ok guitar hack. Been playing since I was 6.

Writing good code is the creative process to the extreme.

Reading great code is also pure joy.
# Posted By John Allen | 4/27/09 8:17 PM
Christopher Vigliotti's Gravatar CF Developer, Photographer and Musician checking in. Thanks for the thought provoking, inspiring post.
# Posted By Christopher Vigliotti | 4/30/09 9:33 AM



Blog provided and hosted by CF Webtools. Blog Sofware by Ray Camden.