Monday, February 2, 2015

Learning Oracle PL/SQL

I'm pretty behind on my blog, and even worse I'm behind on a promise.  So I'll try to catch up on my blog, but first my promise.

I've been lucky enough to work with Oracle products since Oracle database version 6 and Oracle e-Business suite version 7.  Working with Oracle I also got to work with just about every related technology from hardware to software, from network to disk, and from SQL to PL/SQL.

I think learning technology comes down to three basic methods.

  1. Lean by doing, sometimes people are just very good at a topic or area.  They try it, they do well right away.
  2. Learn by learning, reading books, blogs, manuals, also learning from others.  This is probably how most of my skills were gotten, learning from classes, reading, and most of all from other people that had the skill already.
  3. Learn by failing, attempting but failing.  I think this is the strongest way to learn, but that being said there are generally two possible outcomes.  Taking away what went wrong, and what should be done different next time.  Or just staying away from the topic all together forever.
Now imagine you were someone trying to learn PL/SQL, a standard programing language for Oracle.  Maybe you are just a natural at PL1 type programming syntax and ideas of record set based processing seem easy.  Or perhaps you tried some PL/SQL, it didn't work, the error messages were cryptic and you decided to just go use Java.

But what if you really want to learn PL/SQL?  What if you have done some basics but really want to be good at it?  Well then you will probably have to lean on learning from other people or things other people have written (books, blogs, etc...).  It seems everyone I meet is into the Google method of learning.  I try something (1), I fail (3), I then search for something in Google to find out why (2).  Based on this model I should move items 2 and 3 around in my list.

The problem with this model is that you only search for help when you fail.  This assumes that everything I tired (1) that does not fail (3) is good.   People who have inherited systems or programs that fail only on month end know all to well the fact that just because something works, does not mean it works well.

So when you want to learn a broad subject like PL/SQL well you have to learn from the ground up. Not just what has failed, but also how to get better at what you already know.  This also means learning broad interconnected topics such as writing, testing, and tuning code together.  Not as three separate subjects and not attempting to do this in 100's of bitesize bits of information through google searches for blogs.

Recently, some people I know put out a very good book to try and accomplish just this.  "Oracle PL/SQL Performance Tuning Tips & Techniques" by Michael Rosenblum and Paul Dorsey (technical editor Arup Nanda).  This is not a "stereo instructions" manual with diagrams of syntax, and descriptions of what things do.  Instead it is a very well thought out and put together set of learnings on how to take the basics of PL/SQL and make them extraordinary.  As I have surmised this is not done by reading one or two topics, or finding quick solutions by keywords in the index.  Instead it's a chapter by chapter discussion on how to learn what you need to know.

Spending a few hours of reading this book, can replace days of Google searches, perhaps even a lifetime.

Very worth while, and very high on my very short list of recommended programming books.