Recently a teacher posted a request for recommended reading material, blogs, etc., for an aspiring Software Engineer. The student is in Grade 11 and currently learning to program with Java.
Most people would probably suggest that the student tackle many different programming languages (Python, C++, etc. ) and then perhaps focus on more complex algorithms and data structures. Software Engineering involves more than coding it involves exploring software design, testing (quality), usability, and much more. Communication and collaboration are 2 additional key skills for Software Engineering.
To get started on the path to exploring software engineering, algorithms, and the digital hardware systems currently used for software (this could change in the next 10-20 years) I would recommend the following 3 books.
They are all reasonably priced and at a comfortable reading level.
D is for Digital: What a well-informed person should know about computers and communications: Brian W Kernighan
Code: The Hidden Language of Computer Hardware and Software: Charles Petzold
Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today’s Computers, John MacCormick
These books in combination with lots and lots of deliberate practice will really enhance a student’s confidence in their computational problem-solving abilities.