I was tagged by Denis Gobo to write a bog post about career challenges and how I overcame them. I'm not going to tag anyone else because I can't seem to find anyone that hasn't already been tagged, and I think this thread has already "made the rounds" as it were. But I didn't want to leave Denis hanging, so here goes. 🙂
I'll start out by saying that some of the less technical questions I see circulated are often the most difficult to answer. Maybe I am lucky and haven't faced a whole slew of challenges in my career, and maybe it is hard to decide what to write about for fear of my perception of a "challenge" to be laughable to some of you, and downright scary to others. I'm going to stick with a couple of safe ones.
Like Jason Massie, I taught myself SQL Server the hard way; in fact, I taught myself virtually everything I knew about computers before I was thrown into the industry. I did not take computer science as a degree or even in any elective courses, as I took economics in University. I bought a computer primarily to help subsidize my income, getting a quick grasp on graphic design and charging other students big bucks for high quality overheads, presentations and papers. Eventually I moved on to web sites and ASP, and ramped up quite quickly, becoming a prolific poster on a couple of IE-HTML mailing lists and all of the ASP newsgroups that the ancient Internet Mail & News program would let me consume. This community involvement led to my first job out of school (in fact the offer came before I had graduated, much to the chagrin of my classmates), a position which has evolved over time (and survived the company changing hands) but is essentially the same today. The involvement also led to my first MVP award, I think in 1997, an honor I continue to hold to this day — even though several years ago I changed disciplines from the dying ASP technology to my current rank in the SQL Server group. In general it has been a long road for me, and while I was kind of startled by my first introduction to MS Access (I remember thinking, "Hey, this is like Excel, but harder!"), I have barely looked back. So what were a couple of bumps along the way?
DBA Personality Conflicts
Once I started working with databases, I was somewhat motivated and somewhat pushed by management to become the resident expert. For the first four or five years of my career, I was the only "database guy" in house. Until we bought a company with a DBA who knew SQL Server but was trained in Oracle, and they had an existing system I had to become acquainted with. This guy had the strangest ideas (to me) about how to design a database and how to write code to interact with that database. He was a big pusher of the "central identity" scheme, where one table served as the clearing house for all IDENTITY values generated in the entire system, because he didn't want any customer to have the same identity value as any book. Sensible to a point, until that clearing house table can't keep up anymore. He was also the guy who named *almost* all of his columns with the simple data type prefix, e.g. intCustomerID, strAddress1, decDiscountRate. But scattered throughout his tables were random exceptions to the rule, e.g. ContactID instead of intContactID. So programming against this nightmare schema was not fun at all; you constantly had to remember which tables had these exceptions to the rule. Performance tuning was a lost cause because everything was done using a cursor, there were nested triggers all over the place, I brought these problems (and many others) to his attention, but like most arrogant DBAs, we each felt that we were right, and the conversations went nowhere. Eventually I rebuilt the existing system completely from the ground up, and the old system was retired. This of course did not finish happening until the other DBA had moved on to browner pastures. The biggest satisfaction I got out of this was that the new system handled more volume, even though it used less hardware – we went from 3 clustered database servers + 18 application servers to a single database cluster and 6 application servers. We needed new SANs to handle the disk space for the additional volume we could handle, but that's a good problem, right? In any case, I am once again the only database guy, which works out well, except for the week prior to a 3-week vacation (hint: that is right now).
Drawing the line between design and development
A less critical but more frequent challenge I come across is resisting the urge to jump across the partition wall and fix the GUI or the middle tier. People do some really strange things sometimes, and it's hard to stay in my little corner and worry only about data integrity and performance. I am big into aesthetics, and as you might have noticed from connect, I am a pretty big advocate for usability; I see failures in these areas all the time, and once in a while it is very hard to keep quiet about it… I am no C# guru, but several times I have fixed things in our web applications because I just couldn't take it anymore. I would love to be the GUI guy, and the business logic guy, and the interaction guy, and the database guy, but there just aren't enough hours in the day (nor is my head big enough) to wear all of those hats. So I continue to struggle to pick my battles.