Like you, I don't write much code, and when I do, it's to solve a problem and move on to the next project. I tend to use the brute force approach, that is, write statements to emulate the steps I'd follow to accomplish the task. Even if that's not the most efficient way to use the language.
If I wanted to learn more about writing AutoLISP, I'd start by going through Lee Mac's awesome repository of code.
Edit: To reinforce what BigAl said, it's a good idea to break down a big task into smaller ones. A job that seems overwhelming at first will get easier once you've broken it into manageable blocks.