How to become an Efficient and Good Programmer