This is a tested recipe to become a programming expert:
- Learn to use a text editor or IDE
- Arguably the most imporant tool for programmers
- Navigate source code quickly. Some Vim plugins: cscope (only for C), ctags, ctrlp.
- Read documentation
- C: man pages (sections 2 and 3) and info pages (libc, gcc, make, gdb, etc)
- Ruby: ri pages
- Read interesting books
- C: Expert C programming. Build your own Lisp. …
- Ruby: Ruby under a microscope. Metaprogramming Ruby. …
- Skip the basic (syntax, control-flow, etc). Read fast. Focus on sections with interesting titles. Do the excercises. Use the sandwich approach (start with first few chapter sections, then last few sections, then the middle sections).
- Read source code from interesting projects
- C: coreutils, binutils, findutils, …
- Ruby: rake, God, jekyll, unicorn, …
- If something is unclear from source use a debugger (byebug for Ruby, GDB with ‘-g3’ compile option for C)
- Make programming projects
- C: clones of linux utilities (cat, ls, etc), a server, …
- Ruby: a static site generator, a DSL, a server, irc bot, …
- Answer and ask questions in online forums or chats
- IRC channels
- Share knowledge in blog posts (like this one)
Repeat these steps often. There’s no better way to become a programming expert.