learning software technology