Saturday, April 30, 2005
Confessions of a computer geek
Last night I started a big upgrade project for the program that runs our office. I wrote the program a few years ago and spend at least a couple of hours a month tweaking it, making it better, and expanding it to meet new needs. Every time I go into the program I am reminded that like a child going off to college, the thing has a life of its own, of which I am no longer in control.
I do some type of major upgrade to the client program at least once a year. There isn’t much worse than explaining to the boss why the new program resulted in a day’s worth of lost sales, so every time I work on this stuff I spend some quality time with it, wrapping my arms around it, so to speak, so that I once again understand how it works. Or, at least sort of have an idea of what’s going on (if I’m lucky). A few months ago I rewrote a lot of scripts and pruned hundreds of lines of code just so I could feel like I was in control again. Putting the database back online with the new client was a scary experience.
Most of the work I’m going to do this weekend sits inside my head. I’ve tried flowcharting, documenting, writing up plans, and other good organizing stuff on all sorts of major projects and found the effort to be futile. My current crop of changes have been sitting in my head now for 6 months. Not a word of what I want to accomplish has ever made it to paper (or text editing screen). Before I can write code I have get my hands into the code. I have to have a working mockup of the user interface in front of my eyes so that I can see what it is I’m about to create. This is the weird way my brain works. When putting together a website the first thing I work on is a color palette and artwork. Once I have those things to hang code off of I can start doing all the backend work. Until then anything I do is just wheel spinning and ends up in the trash. I used to think that there was some value to the wheel spinning, but have figured out there isn’t. Sort of like burning rubber, it stinks up the place, makes a lot of noise, and only impresses the idiot behind the wheel.
Anyways, today was the day (really, yesterday), so I put together a Dev folder for the upgrade, opened up the files, and started exploring all the different screens. I tweaked layouts, and then started into the scripts. I made minor changes I’ve been wanting to make for a few months, and talked to the scripts a little bit. Yep, I talked to them. If I treat the scripts as stupid inaminate objects they win every time. I’m in the middle of doing all these tweaks with the left brain, while the right brain kept commenting on how this or that was going to impact the upgrade. Suddenly, the 2 brains merged.
I stopped tweaking and fidgeting, and started writing. I couldn’t write fast enough. I wrote about everything I was going to do. I wrote down solutions I’d thought of months ago to problems I knew I’d encounter. I wrote up justifications for what I was going to do. I emptied my brain.
Of course, once my brain was empty it filled up again. I went back over my work and created ways to accomplish the goals. Stuff I’d been mulling over for months was trashed, and new, better ways of doing things replaced the notes I’d written 15 minutes before. My brain emptied again and I was tired. I looked at the screen full of notes, and even though I hadn’t written a line of code, felt like I’d just completed one hell of a long day’s worth of work.
But, that’s not the interesting part. What I find interesting is the way my brain works. I am a visually oriented person. But, I don’t see images or pictures. That scene in the Matrix where they are watching the screen of characters flow down speaks to me. That was the first time I’d ever seen a graphic representation of what I see in my head. Now, what I see isn’t the same, but I understood that scene because it’s close enough. I see my projects, even graphic projectsf, as symbols and patterns flowing across my brain. When I get close to what’s right, everything begins to mesh, and I reach a point I call unity (or sometimes the event horizon (I have no idea why)).
When the patterns are all scattered around, and nothing meshes, I know I’ve headed off in the wrong direction and need to start over again. When the patterns are flowing and weaving together I know I’m almost done. When it all stops I am done, and I know I have accomplished something good. I can see this even without closing my eyes.
I am not capable of much, but, I can code. I don’t speak Russian, or French, or Polish. I do speak Applescript, PHP, SQL, HTML, and a few others. One day I’ll be conversant in C++. I can’t draw, but I can tell you when a block of code is perfect and beautiful. I understand the poetry of well written code. I will never be able to play the piano, but I can make a computer do backflips.
I sometimes wonder what my life would have been if I’d been born a hundred years ago. It would have been a miserable life, because computers are the only means I have ever found for expressing what is inside of me (and I have tried many non-computer ways). Working with computers is the only job I have ever had that has brought me joy and satisfaction.
A few years back, there was time when I viewed the world through lines of code. Everything was just code snippets waiting to be run and debugged. I don’t see the world like that anymore (and don’t care to). I am not a pasty-skinned computer geek who spends his days gaming (I don’t play computer games at all) and lookng at porn (God’ll get me). I’m very much engaged with the world and enjoy all sorts of things (like piano music, a good book, fine art, and amateur boxing). But, I can’t do any of those things. Through very painful trial and error I have found that if I want to accomplish something then it will be through a keyboard and mouse. If that’s the way it is to be, then so be it. It’s certainly not I would have picked out when I was I kid.