Sorting it all Out Michael Kaplan's random stuff of dubious value Be sure to read the disclaimer here first!
The other day I posted about a Program Manager job my group is looking to fill. The text of the job description had among other things the following text in it:
Desire to deeply understand core globalization features at their lowest levels
Desire to deeply understand core globalization features at their lowest levels
Anyway, someone asked me if I would post something about
Hmmm.... I guess the implication is that I deeply understand these features, huh? :-)
Just kidding, I think I do.
And this is an interesting question, one that got me thinking for a bit....
I guess I have always been attracted (in the true sense of a 'strange attractor') to technologies that were not necessarily attractive to everyone but which were intricate, and which although I could not fathom their design patterns, I could sense that there was some underlying brilliance in the model. A good example would be the database replication technology that was first implemented in Jet and then later significantly improved in SQL Server. The sheer scope of the problems that these technologies were attempting to solve would stagger me any time I really tried to think about it, yet here were implementations that made serious and (in my opinion) largely successful efforts to solve these problems. Amazing!
When I first learned about replication during the Access 95 Beta, I really dug into it, and was working hard to understand the innards of how it worked. At this point I had no contact with anyone at Microsoft other than some tenuous contact with the people running the beta and a few people in product support, but I immersed myself and even worked with customers who were all on the beta in violating our license and experimentally deploying solutions prior to the product's RTM. I quickly became someone that others considered to be an expert although for a long time I never took myself seriously as one; to me it seemed just kind of like I was a few months ahead of people since I had ben working so hard at it. Anyone could quickly catch up to that and surpass me....
Then one day I looked around and realized that no one was doing it. And in the meantime I was doing presentations, articles, newsgroup posts, and website posts. I was writing tools and pretty much establshing that I was a resource to be reckoned with on this particular topic. Not by trying to be one, but just by trying to do the best job I could at something, and succeeding.
Now wizards in Access were kind of the same way. The second contract I was ever hired to work on at Microsoft was for the Internet Assistant for Access 95. The Access developers at Microsoft were at the time dealing with the fact their "wizard development team" which was largely made up of former testers who after developing a huge bunch of new wizards for Access 95 were now working in the core product and had not really kept any fascination for writing VBA code once they were writing C code. So they saw this contract resource (yours truly) who they could hire to work on getting wizard builds out and fixing bugs in some of the wizards, and it would mean they would not have to spend as much time working in VBA. Everybody wins!
The Access wizard project was at the time I think 80,000 plus lines of code written across several versions of the product by a ton of different developers of varying skills, styles, knowledge, and coding preferences. Again the sheer scope of the project amazed me and I took the job and was able to take on all of the wizards (something they assumed I would not be able to do; they were resigned to having to occasionally do some VBA and were thrilled that they did not have to!). I really did work hard to understand this huge project and be able to do interesting things with it. At the time I simply figured anybody could have done the same thing; the fact that no one ever did was mainly a side effect of the fact that no one else really wanted to! But in the end I think I was able to get a better understanding of that code base than anyone else ever has (admittedly because no one else is insane enough to even want to!).
A few months ago, I told the story about the most robust software project I ever worked on, one that involved an Access wizard I wrote that used Jet replication and exposed a user interface over what I believed to be an important feature (and thereby taking two different things that fascinated me and synthesizing a solution). And I also told about how I managed to find yet another fascinating topic, one that I am once again completely blown away by the scope of the problem and the brilliance of the Microsoft implementation of a solution -- the globalization support in Windows that really is the original source for just about every other Microsoft product that has worked to implement international support. Although I had done some jobs before, I really began to apply myself to this problem, taking on dozens of projects where I was either writing code, reviewing it, or presenting on issues on a nearly perpetual basis.
I never would have said at the time that I was becoming specifically more knowledgable about any particular aspect of the problems that globalization support attempts to solve. But I was focusing on those jobs, to the point of exclusion of most other types of work that were offered to me. Over the course of the next few years I was doing so much work both inside and outside of Microsoft that I was really getting a good understanding for now only how to use the NLS functionality but also others were using it, and trying to use it. Through those many reviews of what many companies had done I was able to gain far more experience on the range of what people were trying. I was able to learn a lot from both their failures and their successes. Since no one else was really immersing themselves.
Suddenly, I found myself working for the core Windows internationalization team. This is a story I have told before, and one that still amazes me when I think about it. The whole thing is like an uber-geeky fairy tale or something. When I had a chance to do other contracts for the group I immediately said YES and then I took a full-time job and have been going strong for what is coming up on three years soon. And I am still loving every minute of it, feeling that there are unique things I can contribute and ideas of others that I can help shape based on my knowledge of what the functions and functionality do now. I am especially interested in collation (as many have gathered!), and many fascinating aspects of the issues and benefits of both getting out of the way and opening it all up.
I think that I have managed to indirectly answer the original first question that was asked (how I came to deeply understand these features). Now I would not recommend that anyone try to follow this particular path, since it was not really a path so much as a "drunkard's walk" that had me covering a lot more territory than I probably needed to.
But it does point to what I think software developers should do -- they should do what interests them, what fascinates them. It is by trying to work on what fascinates us that allows us to make this profession a creative, even artistic one. If that happens to be globalization (or if this post inspired it to be? <grin>), then there may well be a place for them.... :-)
The original point of the job description was (in my opinion, I would not presume to speak for either of the people who wrote up the descriptions of the positions) kind of a reference to the fact that most of the functionality we support works under the covers, and users tend to never really think about it except when it is broken. Working on the team would in many senses require the kind of person who would be interested in seeing what was behind the curtain rather than just accepting what the Mighty Oz was telling them. Everyone knows that dates have a format and that the alphabet sorts a particular way, but for either of the jobs I posted there has to be an interest in understanding what is happening under the surface to make that complex machinery so that for most people it is never an issue to wonder how it works, since it does.
Working on this team is learning how amazingly complex and wonderful that infrastructure is, for the technology that is on more machines and in more products than any other attempt at a solution on the face of the third rock from the sun.
This post brought to you by "P" (U+0050, a.k.a. LATIN CAPITAL LETTER P)A letter who is of the opinion that parts of this post were sheer poetry, with a capital P!
Regular reader Jan Kučera asked in the Suggestion Box: Did you ever got an non-technical post suggestion?
Michael, please don't tease people. Not everyone studied numerical methods to know what kind of strange attractor you are. :)
This may cure some of the symptoms (http://en.wikipedia.org/wiki/Lorenz_attractor).
I once had a girlfriend who was baffled that I ever managed to be able to attract anyone -- it just made no sense to her (even in her own case, and she fell in love with me!).
She would probably call me a strange attractor if she were asked....
So, love is mathematics? Or mathematics is love?