self-taught software engineer