I'm not sure "thinking like a programmer" is a concrete goal, what would be accomplished. Getting a job?
Programming is a thing, but it's always been very diverse, creative, individual, personalized and wide variations of requirements. No two programmers will solve the same complex problem the same. The best programmers will solve it without programming!
For programming itself, I think the fascination with computing itself is enough. You can go the academic route, hobby route, enterprise programming route or make your own way in the world. Being able to cobble up the pieces in order to build solutions is often enough skillset needed. There's never been a profession where you learn more on the job.
If there's one goal the profession should embrace it's simplification and interfacing with the users, aka userfriendliness!
Greg Wilson made the talk "What We Actually Know About Software Development, and Why We Believe It’s True".
The gist of it is that we're too much willing to believe bloggers without experimental evidence (e.g "DSLs are good"), and not willing enough to follow/apply proven scientific results ("code reviews significantly reduce errors" ).
That was 10 years ago. Today, he writes:
> "The best way—in fact, the only way—to improve productivity is to improve quality"
This is a highly controversial statement (with which I agree, but that's not the point), stated here without supporting evidence.
Are we supposed to trust him? Where's the Greg Wilson from 10 years ago?
He could have been the evidence-based software guy giving the software industry the push it needs towards more proof/experimental-studies!
Programming is a thing, but it's always been very diverse, creative, individual, personalized and wide variations of requirements. No two programmers will solve the same complex problem the same. The best programmers will solve it without programming!
For programming itself, I think the fascination with computing itself is enough. You can go the academic route, hobby route, enterprise programming route or make your own way in the world. Being able to cobble up the pieces in order to build solutions is often enough skillset needed. There's never been a profession where you learn more on the job.
If there's one goal the profession should embrace it's simplification and interfacing with the users, aka userfriendliness!