learning new things in software