A Comfortable Couch

Thursday, September 16, 2004

Learning new things never gets easier

Occasionally, you hear stories about some developer hired for a job but who disappear on the first day. They don't steal anything, they simply don't comes back from lunch , give no explanation and are never heard from again. I'm sure that's often the result an inflated resume and a person who just can't confront the technologies they are supposed to be experts at. It's bad enough having to learn as you go, but trying to fake mastery as you go must be pure hell.

I'm finishing up a contract job where I'm porting the server side C code portion of a Domino application to the iSeries platform (AKA the AS/400). The client knew I had limited experience with iSeries, but still wanted me anyway, he trusts my abilities. To do this, I had to learn my way around the way odd green screen UI, the strange file system architecture, and the C build tools. And I'm still not quite sure where a "job" puts its error messages.

Being in the iSeries green screen environment is very awkward for anyone accustomed to Windows. If you've every played that game where you try to trace a line with a pen while looking at it through a mirror, you know what I mean. All the user interface and keyboard conventions you are used to are different; the Esc key, for some reason, is largely useless in the environment. Now I'm sure someone can give me a logical reason why F3 and F12 are used everywhere instead of the Esc key, but it doesn't change the fact that it's not what my subconscious typist daemon is expecting. All the usual Windows keyboard accelerators are absent or different on the iSeries, I'm constantly hitting the wrong key and getting the mental equivalent of small electric shocks.

I'm just starting to get the hang of it, although some things I've learned simply via repeated exposure. Its sort of like the "Who's on First" Abbott and Costello routine, where Lou learns that every time he says "I don't know" Abbot will reply "Third Base!". I've discovered that occasionally I want the iSeries to say "Third Base!", and I know how to make it, even though I'm not completely sure what's going on.

At first on this project I had the unmistakable urge to flee. I always feel that urge to some degree when it's learn-as-you-go and there is a steep learning curve, I think it's a natural reaction. Your brain doesn't like the repeated mental electric shocks that come from trying to simultaneously learn a new tool and get useful work done with it. I got that same feeling at Kubi when I was "helping" the Exchange team during crunch time, I was surprised both at how clumsy MAPI felt and how different the storage model was from Notes.

I felt the urge to flee most strongly was when I started the Notes Formula Language engine rewrite. I didn't really know C or C++ very well, I had never written any production code in it, mostly just some projects in school many years earlier. The old Formula engine code was extremely terse (lots of one and two letter variable names) the comments were sparse and often inaccurate, there was zero documentation on the engine, the compiler, or even the compiled byte-code format.

So here I was, a guy who barely knew C or C++ and taking on some very old, very terse, and very neglected code. I wasn't familiar with code, the language, the development environment and I had no experience with runtime engines. I many times wanted to quit, I wanted to quietly slip out the back, run away and become a forest ranger or something. Of course I didn't, I'm too proud to quit. I slowly and painfully trudged ahead until eventually everything became like second nature.

In the case of the iSeries, the urge to flee was gone after only 1 day. And while I can't say I'm an expert or even that I really enjoy working with the iSeries, I do feel like it's given me a mental workout. It's been kind of like a hamster wheel for my brain, I'd rather be building Couch but this helps keep me sharp until then.


Stan Rogers said...

Well, if this port ends up anything like the formula engine rewrite, the app should actually anticipate and react to conditions a couple of cycles before they occur on the iSeries. Fear seems to be a Good Thing.

4:25 PMlink  
Jake said...

Just walking past an as/400 green screen can induce a sever allergic reaction in me. Curious: what language(s) were you most proficient in before you took on the formula engine rewrite?

9:01 AMlink  
Damien said...

LotusScript, Java and of course Formula Language

9:51 AMlink  
Steve said...

iSeries rock. I'd like one in my house. OS400 is how operating systems should be written. Other than OS X which is also written properly.

The trick is to learn which vowels to take out. wrkdomcsl for example.

5:41 PMlink  

Post a Comment

<< Home