I agree, To learn Bitcoin properly one must tinker and try different things. Writing scripts to test Bitcoin concepts (encodings, generating keys, etc.), running nodes, testing various wallets, etc.
I will be going through @DarthCoin's guides for sure.