A Statement of Direction

set serveroutput on;
declare
    subtype t_string is varchar2(20);
    type t_entry is record(author t_string, subject t_string);
    l_article t_entry;
begin
    l_article.author := 'Anthony Harper';
    l_article.subject := 'Beginnings';
    dbms_output.put_line(l_article.author);
    dbms_output.put_line(l_article.subject);
end;
/

Beginnings are difficult, in any enterprise. Facing a blank canvas is sometimes so intimidating that the painting never gets started and the world will never benefit from the sharing of thoughts or emotions. Starting a long journey with an unknown destination is a challenge in terms of preparation, what do you need to bring and will you be ready to experience everything along the way to the fullest? Taking a little guidance from Douglas Adams, perhaps a towel is enough gear to hitchhike the entire universe.

The reader may ask these questions… Why write another blog about programming? Aren’t there enough blogs already? Is this content special enough to occupy all those bits on all those servers? Is anything really new anymore?

In starting this journey I have had to face these questions, and for a while it seemed that I didn’t have good enough answers to justify putting my thoughts into words to share with a global audience. Through the years I have spent mentoring others and turning to the writings of my mentors I have often wondered if I should dedicate part of my efforts to sharing what I have learned with a wider group than just those individuals that I have had direct contact with.

As I begin this journey, I want to thank Stephen Fuerstein for inspiring myself and countless thousands of Oracle Pl/Sql programmers over the years. Over the years Stephen has shared knowledge and wisdom that goes beyond how to do this sort of programming, he has led the way in showing us all that we can learn to apply best practices in any programming problem that we are asked to solve.

From Stephen, I have learned that while there are many ways to solve a problem accurately, the best solutions are guided by simplicity and an awareness that many developers will have to read and modify that piece of code over time. If we write something convoluted and exhaustingly complex, future developers will have a hard time understanding and maintaining it and the code will suffer from excessive fragility. Robust, maintainable code is the product of careful understanding, attention to detail, best practices and simplicity. Even when we are in a rush to complete a project, these principles should guide our development efforts.

Stephen has created a foundation for me that always encourages me to do my best work and helps me to be an example and guide to others. We stand on the shoulders of giants, and it is that vantage point which allows us to see further. My only hope is that I will do justice to the gifts that I have received and that a few will benefit from my efforts to grow these seeds of knowledge.

Perhaps an even greater contribution than the extensive array of books and articles on Pl/Sql programming that Stephen has authored is the the Pl/Sql Challenge site, which has grown into full maturity as the Oracle Developer’s Gym. I have always spent the early morning hours doing research on Oracle before heading in to the office. With the DevGym, the idea of waking up and going to the gym to work out was extended to the realm of programming and this has been a completely revolutionary concept for me. After I discovered the site, I took every quiz in the extensive library of thousands of quizzes offered there. These helped me to understand nuances that are not explicit in the documentation, and increased my desire to share best practices with the world of Oracle developers. Then I began to write my own quizzes to share.

With encouragement from Chris Saxon who is currently running the gym, I became a quizmaster in June of 2023 and I have been honored to regularly author competitive quizzes on the site for the developer community to sharpen their skill and understanding. As a volunteer quiz author, I have been able to highlight new features in Oracle and share classic problems in this area of programming. I encourage you to visit the site at devgym.oracle.com and take advantage of the free memberships at the gym, and take a daily quiz to warm up before a busy day of programming.

Working on new quizzes has become my weekend activity, and I feel a responsibility to the community to come up with good quizzes that will serve as tutorials on new concepts and reminders of best practices. I want to thank Chris Saxon from Oracle for supporting me in this activity and for his reviews that have helped me to create better examples of code.

I just received an email yesterday, confirming that Chris has nominated me for the Oracle ACE Associate award and that I have been selected by Oracle to join this prestigious community. Chris nominated me based on my work in the development gym to help the developer community. This is a landmark honor for me, and it has inspired me to go one step further in starting this blog. This is not meant to be an authoritative resource but a starting point to spark interest and share what I have learned over the years.

Oracle Pl/Sql programming is a niche skillset that is easy to enter, but takes dedication to really understand. While there are many Oracle Users Groups, there doesnt seem to be an OUG dedicated to this niche. My secondary goal in creating this blog is to lay the foundation for a new users group devoted exclusively to Oracle Pl/Sql programming that can serve as a resource, forum and community for anyone who is involved with Pl/Sql programming from beginners to advanced experts. I am still working on the name and logistics, but I think that the working title of the group should be International Oracle User Group For Pl/Sql Programming or IOUGPP.

The inspiration for this blog and this group has come from Stephen, Chris, Kim Berg Hansen, Jonathan Lewis, Adrian Billington, Richard Niemiec, Joseph Trezzo, Bryn Llewellyn, Tim Hall, Dani Schneider, Iudith Mentzel and countless others. With a little persistence and dedication to best practices, I hope to do justice to the foundation they have created and become part of an established and evolving tradition.

That’s it for stating the purpose of this journey. As for the roadmap, the next post will take a top down approach and provide a basic outline for the topics that I think will be good starting points. While many posts may tend to focus on more advanced areas, I will also develop tutorials that can encourage beginners to establish their skills with a solid foundation. It is my belief that a solid foundation in the basic concepts makes more advanced topics more easily understood. I welcome any feedback or ideas from the community at large for topics that deserve some exploration.

This post marks the first step on a journey with infinite horizons, I am glad we are taking it together.

Best Regards,

Anthony Harper


Source code for this article can be found at https://github.com/gaiansentience/practicalplsql

Posted

in

by

Discussion and Comments

Leave a comment