Thursday, April 19, 2007

A reader asks...

I was asked this question on asktom, but it seems more appropriate here than over there.

I would like to ask a bit different question than the one that you are answering on this site because I am really really wondering on this for quite a while..  How long you are working on SQL and would like to know how you go about answering questions in such different dimension be in related to tuning , DBA activities,SQL queries , backups.... name the topic and tom has answer for it..  some times the questions themselves are so vague and confusing that one needs to scratch his/her head to make out what is being asked, but still you seems to answering these correctly, how you go about all this...  pls ignore this in case you feel like this question does not match with motto of this site ..

To me, it all comes down to one thing, well - ok, two things:

  • Experience
  • Specialization

Maybe the two are really the same - if you are really experienced, you must have specialized.  If you specialize - you can become very experienced.

It takes years, double digit number of years sometimes - to become truly experienced.  I still remember learning SQL in 1987 (using SQL/DS on VM/CMS and DB2 on MVS).  In 1993, when I first joined Oracle, I knew SQL - but I didn't know SQL yet.  I can say the same thing about C however (it is not just SQL, any technology/language can fit there).  I've never achieved the knowledge of C that I current have of SQL in fact.  But I am really really good at programming C.

After a while, you get to see so many things, you can appear "magical" sometimes.  Just this morning someone came to asktom and asked about some "sqlplus settings".  Turns out - the problem they were experiencing had nothing whatsoever to do with sqlplus at all - it was a server setting.  It was a problem however that I've seen time and time and time again.  I recognized it immediately.  But if you look at the question - it is pretty vague, not much to go on.  But since it followed a pattern I had seen so many times before - I felt pretty confident I knew what it was.  Other experienced people (Michel Cadot there - on that thread for example) didn't pick up on it - but only because they had never seen it before.  Which in this case - could be a good thing for them (it is good for Michel that they weren't aware of it).  The only people that would be aware of the stated issue would be those that were subjected to the evil cursor_sharing=force/similar setting.  It could well be that Michel just was never exposed to that!  That would put them into the "very luck" category.

Which brings up another point the breadth of experience.  Prior to coming to Oracle in 1993 - I had one employer.  All of my experiences were based on that one employer and what I did there.  I was a PL/1 and SQL programmer on a mainframe.  I was a SAS programmer (they called me "sas master" way back when).  I was a C and embedded SQL programmer, I did some Ada on the side.  I became the lead database guy (Developer/DBA was my role).  So, in six years I had 4 evolutionary roles working on 4 different projects.  That gave me a fairly broad look at things - or so I thought.  When I came to Oracle - all of a sudden I was working with dozens of customers on dozens and dozens of systems.  I really became "broad" then - it was very much like consulting (but I didn't charge, I am in pre-sales).  The more experiences you can get yourself exposed to - the more experienced you become.  In dealing with so many different people, using so many different tools, on so many different platforms, under so many different circumstance, with so many different sets of standard operating procedures - I learned a lot.

What I learned most of all - if I did things in the database - man, was I portable, debuggable, tunable, flexible, whatever-able :)  It was those early experiences that really made me database centric, to treat the database as my operating system.  I would work on Windows or maybe use a Solaris server - but not really know what I was going to be deployed on.  As long as I did 99% of the work in the database - I was pretty confident it would roll out on whatever I was going to have to work on.

So, in short, it all comes down to experience, your experiences (work on the same project for 10 years and - well.... I'd rather work on 10 projects in 10 years or 20 projects or more), and whether you were able to really focus in on what you enjoy doing.

 And - and I will refer people to:

The fine art of asking a question in a sensible way that at least has a chance of getting an intelligent response is one many of us need to work on....



Anonymous Anonymous said....

I have worked with alot of people with alot of experience in one skill set who were incompetent. So its not just experience, its the person. I have seen oracle people with 20 years experience guess at performance problems like a novice. I have seen people with 3 years experience do root cause analysis, do a sql trace, and get the correct answer.

Getting good at something technical is 90% personality and 10% talent. So people who are not technically gifted can over come that with the right, "lets figure this out" personality.

Curiousity is also important. If you know what you know and you don't look into anything else, you can do this for 30 years and be on 30 projects and still suck.

A few keys are:
1. never rely on your day job to teach you what you know. You need to work on techicanl skills outside of the office.

2. The dirty secret is that you don't have to spend alot of time learning technical skills. you just spend a little bit of time several days a week it adds up.

3. don't study one book. Skim all books for what you need and then critical analyze sources by comparing and contrasting them.

4. don't be afraid to ask questions.

5. don't learn just one thing. you understand pl/sql better if you know what a computer science data structure is. You don't need to be an expert in it, but you comprehend better.

6. if you are just doing one thing at your job and that is all you are able to do, you need to quit as soon as possible and get a new job. If you are not learning you are wasting your time. In our businesses jobs rarely last until retirement, so the sooner you move on to a job where you learn something the better.

Thu Apr 19, 02:10:00 PM EDT  

Blogger Jeff Hunter said....

One thing I think you left out was curiosity. While something my not be relevant to you, you are curious and want to learn more about how something works (which maybe goes with specialization, maybe not). Tom investigates the "Yeah...but" because he wants to find the answer.

Thu Apr 19, 02:17:00 PM EDT  

Anonymous Anonymous said....

I'm glad you posted on this, it helps clarify why some people ask such vague questions. In many cases, they are coming from fora (I'm thinking various MS places with experts, though there are of course certain Oracle sites) where the mode is to answer the questions in this magical expert manner.

Unfortunately, there is no certain way to distinguish real experts from posers, and the posers are the generally the ones who spread myths and legends. All we can do is ask people to show their thought processes. Even dummies win the lotto sometimes.

Thu Apr 19, 02:33:00 PM EDT  

Blogger bill said....

and the ability to explain things. knowing stuff, being able to do stuff and being able to explain how to do stuff are three different things. the firs two i can lay some clain to, the last one... ummm after being at your presentations and classes, ain't no way.;-)

Thu Apr 19, 02:38:00 PM EDT  

Blogger Alberto Dell'Era said....

Curiosity ... yes, that's definitely a trait of childhood everyone should want to keep in adult life. It's useful or even mandatory in nowadays ever-changing environment, but also prevents "mind-aging".

Thu Apr 19, 03:55:00 PM EDT  

Anonymous Anonymous said....

I am not sure about the "90% personality and 10% talent"
After all, the "lets figure this out" in order to succeed needs talent. I think everything is about talent, a personal gift. And this happens to all professions i.e. no matter how hard i work out and practice, i will never be Cobe or Zidan. I also see this to co-workers : Some people "catch things" instantly, some not. No matter their experience...

Thu Apr 19, 04:24:00 PM EDT  

Anonymous RobH said....

I liked Tom's answer of experience, but I agree with the 1st postthat its more than just "time in". Just because you have 10 years doesn't mean you are better than someone with only a few.

Part of experience is randomness, the *variety*. Being in development often challenges you to think differently or look at something another way. You're often exposed to many different aspects of the database. I think the more varied your experiences, the better. Each provides you with a new piece of the puzzle. Next comes time. Once you begin to see the same piece more than once, your varied experience becomes re-enforced with solutions from the past.

Curiosity is pivotal, but must be controlled as well. Often I see people go off on a tangent because they are curious about something that was introduced during a problem and they forget the main goal.

My questions for tom are:

Don't you ever get sick of answering questions on the mountain? I've asked my share. I always try to not repeat a question already asked.

If you could any one, any question...who would it be, and what would be the question?

Thu Apr 19, 05:05:00 PM EDT  

Anonymous Anonymous said....

TOM can you pls. elaborate the last point in your post starting with

"And - and I will refer people to:"

seems like you were bit hesitant to answer this is it?

Fri Apr 20, 07:23:00 AM EDT  

Blogger Thomas Kyte said....

TOM can you pls. elaborate the last point in your post starting with

the reader wrote to me:

Some times the questions themselves are so vague and confusing that one needs to scratch his/her head to make out what is being asked

I was addressing that - that the ability to ask questions correct is sorely lacking in many people, and those posts will help show them the right thing to do

Fri Apr 20, 07:26:00 AM EDT  

Anonymous Anonymous said....

I used to work on PeopleSoft, running on Oracle/Unix. It required that you become well-versed in all three.

I now work on SAP. It requires that you become well versed in...just SAP. The breadth and depth of the the SAP programmers I deal with is very thin indeed.

What's this "grep" thingie?

Fri Apr 20, 07:38:00 AM EDT  

Blogger David said....

Arthur C. Clarke wrote that "Any sufficiently advanced technology is indistinguishable from magic." As a corollary, I suggest "Any sufficiently advanced technology expert is indistinguishable from a magician."

Fri Apr 20, 09:30:00 AM EDT  

Anonymous Gabe said....

experiance ... specialization ...

Maybe some mojo too!

Fri Apr 20, 01:33:00 PM EDT  

Anonymous Anonymous said....


how many hours/week do you spend reading and answering questions? Is this now considered part of your job at Oracle? It seems like its good marketing and PR for the company.

Fri Apr 20, 03:00:00 PM EDT  

Blogger Roderick said....

I guess others have already touched on some of the keys to success in knowledge transfer. First is a passion to learn how stuff works. It helps tremendously to be interested in topics that happen to be very important to many people in getting their jobs done. Though I suppose it is another talent to recognize what knowledge has commercial value vs. knowledge with none so one can conserve brain cells.

Next one needs an ability to correctly deduce how stuff works. Tom uses well-designed test cases and I imagine that creating a test case draws upon logic, experience, and creativity.

Third: One needs to have a desire to share you've learned. This time it helps tremendously to have good communication skills to convey points. Also, one has to care that others comprehend your statements and be aware that different people may need different "examples or analogies" knowing that people will have different life experiences to draw upon.

I suspect experience comes mostly into play in appearing to do things quicker than most people and being able to complete the task with less effort. This includes an appearance of being able to pull the correct answer to a vague question out of thin air. This may include having good pattern recognition skills. One would have to remember vaguely that some question had already been asked N different ways. Then it makes it easier to recornize when variation N+1 comes along.

Sat Apr 21, 01:55:00 AM EDT  

Anonymous Anonymous said....

"But I am really really good at programming C"

Is C knowledge essential for advanced level Oracle DBAs?

Sat Apr 21, 10:47:00 PM EDT  


<< Home