Learning New Things : Networking and Community

I’ve mentioned networking and community a number of times over the years. Most recently in a post called Community and the Hive Mind, where I talk about the impact of community on learning.

I think it’s important that you become as self sufficient as possible, but that doesn’t mean you should ignore what’s going on around you. Why would I bang my head against a brick wall for days if I can reach out on Twitter and get a response in minutes from someone who is better than me? As I said in that linked post

“This is not about expecting help. This is not about trying to offload my responsibilities onto others. It’s mostly about getting a second opinion and the odd bit of advice. More importantly, the other people in the community need to know that you’ve got their back too. This has to be a two-way street!”

Networking and getting involved in the community is a great way to increase your access to information, which makes learning much easier.

From a selfish perspective, the more you contribute, the more opportunities seem to come your way. It kind-of feels like I’m living a charmed life at times, but all these opportunities come from being actively involved and putting yourself out there. To quote Samuel Goldwyn,

“The harder I work, the luckier I get.”

If you want to start getting involved in the community you might want to consider reading my posts on writing tips and public speaking.

Check out the rest of this series here.



Oracle REST Data Services (ORDS) 3.0.10 : Going down the rabbit hole!

Oracle REST Data Services (ORDS) version 3.0.10 was released last week. In addition to a bunch of bug fixes it was the first release to include the Auto PL/SQL feature.

Auto PL/SQL is similar to the AutoREST feature available for tables and views, but it allows you to enable PL/SQL objects for Remote Procedure Call (RPC) over HTTP(S). At this point you might be asking yourself what the difference is between REST and RPC over HTTP and I explain that here. Regardless of whether it is REST or not, it’s a nice convenience feature that I’m sure some people will find useful.

Over the weekend I went full on down the rabbit hole, which resulted in this article.

There are a number of issues with the current release and the docs for it, all of which have been fed back to the relevant parties, but on the whole I think it’s a neat first step.

My preference is still to define conventional ORDS RESTful web services rather than use this feature, but Auto PL/SQL may be just what some others are looking for and it’s always good to have options! 🙂

As far as the 3.0.10 release generally, I upgraded 4 non-prod installations to this release, all actively used for fronting APEX and RESTful web services and nobody has had a problem yet. 🙂

If you are yet to experience the joys of ORDS you can read the articles I’ve written about it here, as well as an introduction to JSON here.



Learning New Things : What About Exams/Certification?

I’ve covered the subject of exams and certifications a number of time over the years. Where Oracle certifications are concerned you can read my thoughts on the subject in this certification FAQ, or watch me talking about it whilst driving, back in the days when I had a car. 🙂

I feel an exam should only be important if it is part of your process.

  • If an exam is a goal that gets you off your ass to start learning something that’s great.
  • If an exam syllabus is something you use to help organise your learning process that is also good.
  • If you need the piece of paper for your job, then I guess you better do it, even if it is not part of your process.
  • If you just enjoy doing exams them because you “gotta catch-em all” like Alex Zaballa, that’s fine. Although you do have a problem Alex! 🙂

The important thing is you are learning and progressing as an individual. If you are cramming to pass an exam then forget everything, I think you’re wasting your time and making the certification look shitty. It’s just my opinion, but that is not personal development.

Another thing that concerns me is blind adherence to the exam syllabus. This is very much a starting point, not the end goal. In the past I used to stick rigidly to the OCP syllabus until I had passed the exam, then start looking at other areas. Now I find myself going off on tangents all the time. There is often far more interesting stuff that is not on the syllabus. I think that’s reflected in the fact I often had a complete set of OCP upgrade exam notes within a few months of the GA release. For the 12cR1 exam it took me years because I was spending more time writing about stuff that wasn’t on the syllabus. 🙂

I’m not saying my opinion on all this is correct. I just think the piece of paper is worthless. It’s the journey that counts!

Check out the rest of this series here.



Learning New Things : Learning Gets Easier

Learning new things is a skill. Like most skills, practise makes perfect. So the more you try to learn new things, the easier it gets to learn new things. 🙂

Associations (Mental Hooks)

When you start trying to get to grips with a new subject it can be really daunting. Regardless of how good you were at the last thing, you are back to the bottom of the pile again, a beginner, which can be really hard on the ego. Having said that, if you have been good at something else, you already have a bunch of mental hooks to hang things on!

Have you noticed how people often explain things by likening them to something else? For example, “The mitochondria are the powerhouse of the cell!” Why do we do that? Because we are making mental associations. It’s easier to remember things that are similar to something we already know. When you know very little, you don’t have many mental hooks to hang things on. As you learn more, you have more mental hooks, so hanging new things gets easier.

As an example let’s think about learning a new programming language. If it is the first time you’ve learnt a new programming language all of the concepts are new, both the basic concepts of programming and the idiosyncrasies of the specific language. Fast forward to a point where you are pretty good at your first language and someone asks you to switch languages, what do you do? Start from scratch or translate? I’m guessing the latter. You understand how to do a specific task, say string handling, in one language, so you translate. You Google, “Javascript equivalent of strpos PHP”, and find out Javascript has “indexOf”. That was a lot easier for you than a total novice because you already have mental hooks.

Looking Below the Surface

Often the cockiest people are the ones that know the least. They literally “don’t know what they don’t know”. They are blissfully happy in this little world where they believe they have all the answers. I’m sure this is one of the reasons why young people become cocky douchebags in their teens and early tweeties. They think they know all the answers. As people progress, they start to understand the gaps in their knowledge, which is typically quite a humbling experience. Many “experts” don’t like the term “expert” because the more you know, the more you realise you don’t know. It’s a bitter pill to swallow.

If you’ve lived through this once, you are more likely to question things the next time, or at least appreciate there are probably hidden depths you are yet to encounter. That is positive if your desire is to keep progressing.

Understanding the Effort Required

We previously discussed time and repetition. The more you learn, the more you should appreciate the time and effort required to get good at something. That can be both good and bad.

If I thought it would take me 20+ years to get to where I am now, I don’t think I would ever have started. After 7 months I thought I had this Oracle thing cracked! 🙂 I am daunted by the thought of being bottom of the pile again, but at the same time I understand the effort involved in getting good at things, and I know I am mentally and emotionally capable of it. That is quite liberating. That alone gives you an advantage over a complete beginner!

You can’t teach an old dog new tricks!

It is true that as you grow older the makeup of your brain changes, which could make certain tasks harder, but you (hopefully) have more focus and maturity, which in many ways makes learning easier.

One of the biggest factors that happens with age is distraction. I speak to many people who say they would love to spend their evenings and weekends geeking out, but their wife/husband/kids would kill them etc. Learning to use your time efficiently and staying in the habit of learning is an important factor. Remember, it’s little and often!

Rather than sitting on the train staring into space this last weekend, I had my laptop open and I finished off one article and wrote 2 blog posts. That was lost time before I decided to make use of it! Don’t let yourself off the hook by saying you don’t have time. Find those little pieces of time you currently waste that could be reassigned to learning.

Check out the rest of this series here.



Learning New Things : My Process

I’ve written about this before on the blog, but I think it’s important you understand a little about the process of learning new stuff.

There is a classic way to help transfer things from your short term memory to your long term memory.

  • Cover the material. Read it. Understand it. Try it out. Convince yourself you know what is going on. Maybe discuss it with someone. This first step is the most important. If you have truly done this step, not skim read some stuff whilst occasionally looking through the window, you are part of the way there.
  • Within a couple of days, skim through the material again. You don’t have to go into as much depth as before, but make sure you cover the pertinent points.
  • About a week later, skim through the material again.

At this point, there is a very good chance you will know the information and it will have moved from your short term memory to your long term memory.

I find writing helps me with this process.

  • When I am learning something new I take notes in a text editor. These notes often form the basis of articles. At the end of this process I’ve covered all the material and got working examples and links to the relevant source material, but it’s not in a form that’s fit to publish. This is my 1st pass through the material.
  • Within a couple of days I neaten everything up and add a little more explanation and hit the publish button. This is my 2nd pass.
  • Invariably someone will make a comment or ask a question about the content. Every time someone does I read the whole article/post again. This is my 3rd, 4th, 20th pass. 🙂

My process naturally falls into the pattern I mentioned earlier, which helps me learn stuff. It’s worth mentioning I never even try to remember syntax. It is a waste of my time. It is process and context that I care about, not party tricks.

This process works for me. It might not work so well for you. The important point is you should define and constantly refine your process until it is optimal for you. Schools and Universities don’t tend to focus on helping you learn how to learn. In my experience you are left to your own devices for that. Here’s a quote from Dune.

“… because his first training was in how to learn. It’s shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.”

Check out the rest of this series here.



Learning New Things : Pick the Right Thing to Learn

I think at this point in the series it’s pretty obvious that you need to do a lot of work to get good at something. It’s going to be really hard to have that level of commitment if you dislike what you are doing.

If you hate your job, it is very unlikely you will put in enough effort to get good at it. If you hate your college/university course, it’s very unlikely you will do well in it. You have a whole life ahead of you. Pick something you enjoy doing and become an expert in it. Don’t waste your life making do with what you have if it makes you unhappy.

My nephews are physical kids and pretty good at football (soccer). Because they enjoy what they do, they don’t really notice how much effort they’ve put into it over the years. They think it just “comes naturally”. If they had spent the same number of hours doing maths or playing an instrument they would be pretty good at that too. Maybe not great, but pretty good.

So find something you enjoy, direct your time and effort into that and reap the rewards. Do what you love!

Check out the rest of this series here.



PS. If for some reason you are forced to keep working at something you hate, try committing some more effort to it. Maybe as you get better at it you will grow to love it, and it might love you back! 🙂


Learning New Things : Time and Repetition

This post could be summed up in a single phrase,

“Practice makes perfect!”

It should be obvious, but it takes time and repetition to get good at things. You’ve probably heard people say things like:

  • 10,000 hours practice to become an expert.
  • It takes 1000 repetitions to create a new motor engram for physical actions.
  • It takes 5000 repetitions to break a bad habit where motor engrams are concerned.

Whether these exact numbers, or even the orders of magnitude, have any basis in truth is not really the point. The message is pretty clear and I believe it. You get good at what you do regularly, even if that means getting good at doing the wrong thing. 🙂

There is no point just telling yourself you want to do something. Get off your ass and do it, then keep doing it until you get good at it.

I’ll give you some anecdotes by way of example.

  • When you watch “experts” at work they will often appear to make leaps of faith and solve problems in a manner that almost appears like magic to someone with less experience. What you’ve not seen is the years of practice they’ve had that has allowed them to spot patterns and anti-patterns, which now allows them to “intuitively” jump straight to the correct answer. Beginners are always looking for “the secret”, but there isn’t a magic button. It’s years of adherence to a meticulous process. Go to sessions by Jonathan Lewis or Kyle Hailey and you will see their process. It’s well defined and almost obvious when they explain it, but it takes effort and discipline, which most people are not willing to put in.
  • People often ask me how I have the time to produce content for my website when it is not my job. I do something most days. I typically use a couple of hours every day to learn new stuff and I get most of Saturday as well. You don’t produce thousands of articles and blog posts overnight. You do little bits here and there for years. The more you do it, the easier it gets to gather the information, process it and produce something. I think it’s obvious to anyone who reads my website and blog I’m not the most literary of people, but I’ve developed an approach and a style of writing that works for me. The fact other people seem to like it is a bonus. The problem with this answer is it doesn’t sound good to people with a short-term approach to everything. They want to start a blog and be an Oracle ACE yesterday. That’s not how it works…
  • I am very flexible. People will often see me stretching and ask me how I got so flexible. My answer once again is, “Little and often!” I stretch in one form or another every day, sometimes multiple times a day. People are rarely happy with this answer, because they want the magical zero effort solution. They would rather spend the next ten years looking for the magic solution, rather than actually getting on with it.

You see the pattern? It all comes down to the effort you put in over a number of years, so you can either start now or wait until they invent that stuff from The Matrix that allows you to download Kung Fu in 30 seconds. 🙂

Check out the rest of this series here.



Learning New Things : We don’t need no freakin’ test case!

When people ask a question about IT the first response will often be a request to provide a simple test case to demonstrate the issue. Typically these requests go unheard by the original poster, because it is seen as too much effort and/or of no relevance to their “real world” problem. Here are some of my thoughts about test cases.

  • A simple test case makes it easy for the person answering your question to jump straight in and help. They should not have to spend their time creating scripts to setup a test when you could do it. Don’t waste other people’s time. It gives the impression you think your time is worth more than theirs, which is just rude!
  • A test case is not a DESC of a table and the output of a “SELECT * FROM …”. It’s going to take time for someone to turn that into a table and insert statements. That’s your job! Don’t waste other people’s time.
  • I know you believe you have asked a really succinct and precise question, but you haven’t. Your question sucks. Your question brings with it a bunch of assumptions I can’t possibly know about. Often, the first time I truly understand the question being asked is when I see the test case.
  • A test case should be simplified to the point where the issue is still reproducible, but all the extra guff has been removed. It’s better if it doesn’t use your real database objects (tables, views, packages etc.), since you can post it without breaking data protection laws or your company IP policies. Also, it’s likely most of the objects and data in your system are nothing to do with the issue, so don’t include them in your test case.
  • Make the test case re-runnable. If objects need to be created, include the statements to drop them in the correct order too. This is important for a couple of reasons. It allows you to do a complete re-run for each test, so you don’t introduce some form of cumulative impact. It makes life simpler for the person who is trying to help you. Don’t waste other people’s time.
  • A test case acts like a regression test for your understanding of a system. You can rerun them against different database versions and patches and see that what you believe to be true still is.
  • Quite often, the process of defining the test case allows you to answer your own question. The removal of the unnecessary stuff allows you to see the real problem. I’m sure you’ve had the experience of trying to explain the problem to someone, only to see the solution for yourself. The test case is that process, without needing the other person. 🙂
  • A test case allows you to demonstrate the issue and eventually the resolution, which makes it far easier to get permission to apply the fix in production.

I think you get the picture!

Check out the rest of this series here.



Learning New Things : Finding Information

In an age where almost all information is a Google search away, why do people find it so difficult to get answers?

Let Me Google That For You!

This is going to sound silly, but I’m convinced most of the people who seem to have trouble don’t actually Google the question in the first place. Countless times I’ve answered a question by putting the subject of the email or forum post into Google and searching. Typically the answer is in the top 3 links.

This could mean one of several things:

  • They haven’t Googled it.
  • They have Googled, but don’t trust the answer.
  • They are working asynchronously. Machine gun out the questions, and work on something else while they wait for someone to come back with the answer.

Let’s look at these individually.

They haven’t Googled it.

If they fall into the category, they really need to leave IT and do something different. Seriously. If you’ve not figured out Googling for answers after the first day on the job, you are in the wrong job. You can’t be helped!

They have Googled, but don’t trust the answer.

This second option is more interesting, because the signal-to-noise ratio of the internet is a problem. Fortunately the answer to this is equally simple too. When you search for something and find what appears to be an answer, if that answer doesn’t come with a working example you can try yourself, you should probably question the value of it. At the very least you need to figure out your own test case to prove it. Either that or check out the next link on Google to see if that has a working example.

I appreciate not all problems can be replicated in a little copy/paste example on a laptop, but a great deal of them can. I was lucky that early on in my career I was influenced by Tom Kyte who always tried to give small test cases to prove a point. It’s a really good habit to get into. So many times I’ve “known something to be true”, then been unable to demonstrate it, then finally proved the opposite to be the case. 🙂 Your understanding changes over time. The database changes over time. What was true then may not be now.

Over time you will start to recognise names of content producers, and you will start to identify trusted sources of information, and perhaps more importantly, those whose content you should avoid.

Remember, even when you have built up a list of trusted sources, you should still constantly test what they say. Everyone can make mistakes.

They are working asynchronously

I suppose you could say they are trying to be efficient, but I think ultimately this approach will fail. You are not learning how to learn. You are still reliant on other people giving you the answers. This is not personal development. What’s more, you still need to test things or you are at the mercy of what some random person told you in a forum. Think about what I said in the previous section.

Your ultimate aim should be to become as self sufficient as possible. I’m not suggesting you will do everything yourself, but you should be able to find information, evaluate its worth and use it, without having to post help messages on forums every 30 seconds. If you are taking personal development seriously, asking others for help should become the exception, not the rule.

Where should you be looking?

As I said in Learning to answer questions for yourself!

  1. Google. A lot of the time, the first couple of links will give me the answer. Sometimes it’s one of my articles that gives me the answer I’m looking for. 🙂
  2. Search the Oracle documentation for the topic and/or quickly scan through the table of contents in the relevant manuals.
  3. Search My Oracle Support.
  4. If at this point you’ve not got the answer, you might be asking the wrong question. Try to refine your search criteria.

I’ve mentioned many of the points raised in this post over the years. You can see other posts on this type of thing here.

Check out the rest of this series here.



Learning New Things : A Series of Posts

I’m going to start a short series of posts about the process of learning new things. Many of the points have been discussed in this blog over the years, but I thought it would be nice to bring them together. I’m an IT guy, so there is an IT spin on it, but most of the stuff is more general in nature.

Here is the list of posts I’ve written so far. I will switch them to links as I publish the posts.

This series is about my experience of learning, rather than something more formal. I’m no expert! Feel free to disagree with me. 🙂