programming study advice