It has been about 18 months since I entered the domain of the elastic ninjas and I have had something of a breakthrough six weeks ago having entered the new (to me) discipline of code refactoring and de-smellification. It is the sense of gratification and humility. As I become better in my newly adapted language, Ruby, it reminds me of what I still don't know - which is a feeling hard to explain at this point in my life. I know that I have a new opportunity to master a domain, having mastered one previously. I know what I'm in for and I know the shape of the rewards - but feeling it happen remains invigorating.
There are all sorts of jokes and stories about the difference between coders, programmers and software engineers. That's all about the discipline. But what is striking to me, after all of these years not having had to learn any particular technology to a master's depth, is how well things work now. Let me explain.
I first began object-oriented, client-server programming in 1987 at Xerox. I was absolutely convinced in every way that was the way of the future, and so I flatly refused most everything else, especially mainframe work. I had a torx screwdriver in a world full of nails. Not much work. And so ultimately I didn't do as much OO SOA as any self-respecting programmer should have. Of course I was also equally convinced that I wanted to be the computer guy in the Office of the Future - either that or work for Jacques Cousteau. Suffice it to say that it would be a long time before people without degrees from MIT would be trusted to do such lofty conceptual work. Ha! Object Oriented Client Server my Windows 95 butt! Do you know Oracle Forms? This was the sound of the employment recuriters world when I got married 18 years ago.
But I understood the concepts. So my career evolved by following the concepts and practical methodologies of implementing the whole Lampson / Bobrow / Seely-Brown concepts of augmentation. And more importantly, given my experience in the bureacracy at Xerox, I became all about field work and satisfying the paying customer. Follow the market first, theory second.
The other important thing is that back in my high energy days, a lot of stuff didn't work. Now I'm sure that was a function of me being in somewhat obscure markets, and I know how it sounds for me to make such a broad claim. But I remember the days in the early 90s when companies like Netmanage had to enable TCP/IP on Windows. This was in the middle of the UNIX wars. Sad, slow days for client server, and how many years would it be before LAMP as the world suffered through the death of DEC, Unisys, and the Sun plug-compatibles? As I look back on the mid-90s and the birth of multimedia just before the era of dot com and thin client, it was a long sad time. Fortunately for me, data warehousing and visual programming were hot.
Still I remember that Java was still buggy. Nothing in my area of expertise was good enough. I forget the name of the French(?) company whose business intelligence front-end was supposed to be the future. I was working at Schwab at the time, during the days of the Simpson trial, and the Java programmers I knew complained about how difficult it was to work with UI. By that time, I was pretty sharp with a compiled VB clone and, if I wanted to be, Delphi. I wrestled with problems like object refresh order and dependencies, which continued to dog the industry until the guys at Appsource (with my old friend spookytooth) threw down with Wired for OLAP.
It would be years until the DW and BI world had anything to do with the web..and still I had to resist the urge of PHP and other 4GLs. I finally understand what an insufferable techno-snob I was. But I think the ultimate payoff remains.
---
It has been said that if you cannot explain something clearly and completely, then you don't know it. And for that reason, I have gone back to review the very basics of coding. It is working well in my new ambitions for perfection in code writing - very much as my ambitions for writing English have egged me on over the years.
So putting all of that blather together in context makes me feel much better. And now I'm basically competent in writing Ruby objects using the RSpec TDD methodology. Every once in a while I look up at my monitor and realize that six months ago most of what is on my screen would look quite Greek, but now allows me to do some pretty cool things. I am comfortable working with a subset of the Amazon API. All of this in service to creating and evoloving the snazziest harness for BI applications in the world. That's the plan.