I've never felt like a good or confident programmer. I think part of the problem was that I didn't start using PCs until I was about 12/13 and I didn't start programming until I went to uni to study computer science. It was a steep learning curve which put me off to an extent. I did about 3 years of Java and about 6 months of C at uni and I've had some good and bad moments from when I started up to today.
Good moments:
- Writing your first "Hello World!" application (well, it's got to be there, doesn't it...).
- Writing your first recursive method...that works!
- Writing your first abstract data type implementation from scratch (e.g. Linked List, Stack, Queue, Priority Queue, Binary Search Tree).
- Writing your first GUI (even if it does use absolute positioning...yuck!).
- Writing little utility applications for yourself that make your life slightly easier.
- The first time a friend asks you for help trying to do something and you not only understand the question but can actually help them.
- Writing your first 'game' (minesweeper for me).
- Understanding how ActionListeners work in Java (it took me a bit of time)
- The first time you get paid for being a programmer.
- Writing your first recursive method...that doesn't seem to work no matter what you try.
- The first time you get a compiler error that you just cannot understand. You spend 5 minutes convinced there's a bug in the compiler only to finally realise there's a misplaced bracket, semi-colon, a colon that should be a semi-colon (or vice versa) etc.
- The first time you ask someone else (friend, colleague, boss (!)) to test an application that you have thoroughly tested and not been able to break that they can break instantly by doing something you hadn't thought about.
- The first time you get a bug report in production code that you wrote.