future of software engineers