Comment Re:Blacksmiths (Score 1) 255
This is either you associating with the wrong 'professional programmers' or you running into folks graduating from non-ACM accredited schools, or you mistaking information systems or information technology for computer science.
It actually has more to do with the sheer numbers of kids that play Minecraft. I totaled the statistics for one of the servers I manage...3176 unique players in a month of uptime. Obviously, not all of them are going to be super interested in the programming/logic side of Minecraft, but there's very few days where I don't have at least one or two people discussing relatively in-depth programming questions via ingame chat.
I see a LOT of inspiration and ambition, and a LOT of latent talent, and they will 'get there'.. but they're not there yet as far as *professional* code goes.
Oh, obviously. What Minecraft does is give kids an easily accessible programming interface with immediate, "real world" applications. It fosters that interest, the inspiration, and gives it an outlet while it matures. Minecraft offers a complexity level for any level of programmer.
At my level, I'd be using a central server to manage resource gathering with state-saving, set up just-in-time resource delivery to crafting systems, or create a centrally managed RFID identification network. At the entry level, someone else can dig a hole or place blocks. And everywhere in between, from setting up sorting systems to automating base defences...underneath it all, it's providing a constructive outlet for an interest that might someday become a career in computer programming.
My point: a lot of self-taught programmers, unless they've had formal education in another technical field, are going to have holes upon holes in their background, and no amount of Mindcraft API bs is going to rectify that.
I agree with your premise here, that enthusiasm and self-teaching needs to be complemented by structured learning of the stuff that the learner doesn't know they need to know. Personally, I think the structure of "formal education" has shifted dramatically since you were in school, and resources like Codecademy, Udacity, Coursera, and Khan Academy are allowing kids to self-learn in ways that rivals, if not exceeds the traditional classroom-based formal education, but that's a completely different conversation.
As a sidenote, the bit about "Mindcraft API bs" is just...unnecessary. Most tools have their place. Minecraft is a very effective tool at fostering inspiration and talent into learning and understanding. Few ten year olds care about datatypes, objects, or the concept of a client/server architecture, but if you put those things into the context of making a mod for Minecraft, a solid percentage of them now care *a lot*. In my mind...that's a good thing.
Every 'real' software engineer I've run into has s switch in their thinking a couple years in at which point decision logic is not even second nature, but subconscious. You act like it's a skill, at the mature engineering level it's part of the autonomic nervous system of a computer scientist who writes software for a living.
That "subconcious level" understanding of programming has to start somewhere. By definition, a skill is the ability to do something well. To do something well, you have to start out by doing something poorly.
Obviously, someone in highschool encountering decision logic for the first time and going nuts with it in a virtual world isn't going to be working on the same level as a professional with years of experience under their belt. But given two applicants for an entry level position, one of whom has a degree, and the other has a degree and six or so years of "hobby programming" under their belt...guess which one I'm going to hire?
It's not you personally per se, but coders of your generation...
No. This isn't a question of generation. "My generation" is no more a single cohesive entity than "your generation" is. And just like your generation, each of us are individuals with different skills, weaknesses, and assumptions, just like you.
The kids who get interested in computer science, they start running into limits in their knowledge...like needing to store and fetch data. This prompts a search for ways of doing data management...which brings them to the concept of data structures. Giving kids a framework to explore the extent and limits of their knowledge (eg Minecraft modding) is a far better solution than brushing them off with "go write a real application". Responding to curiosity with a an intellectual put-down (instead of explaining *why* a concept is important) is precisely the reason many kids today think computer science is dry and boring.
Point of order, I was building application servers and prototyping electronics back before the Internet and cell phones were a thing. I just didn't jump into programming until the late '90s.
tl;dr: Encourage talent and inquisitiveness with knowledge and level-appropriate tools, don't stifle it with rhetoric.