It's kind of weird to think that no-one gets their start like this anymore.
I've gotten bug reports for Hackety Hack where people say "I can't copy and paste from the lessons. Can you fix that?" I reply (obviously at more length and warmth) "Working as intended."
> You must type each of these exercises in, manually. If you copy and paste, you might as well just not even do them. The point of these exercises is to train your hands, your brain, and your mind in how to read, write, and see code. If you copy-paste, you are cheating yourself out of the effectiveness of the lessons.
I still think it's kind of amazing how such simple advice can be so effective. I often find that when I'm struggling to grok a new language or framework, that I've forgotten to hand-type at least a few examples.
The part of the body that learns how to program doesn't speak English. You hear it even in the metaphors programmers use: code smell, this "feels" like a recursive problem, "listen to your code," etc.
That means to learn as quickly as you can you want as many parts of your body involved -- the English-speaking part, your muscles, your eyes, your memories of all the times you've made a stupid mistake only to have it cause you hours of frustration down the road, etc.
: Really, the part of the body that learns anything doesn't speak English. English is just the data exchange format. ;)
Also, I don't know many professional programmers who type everything in by hand. It'll be something copied from a previous project, or cribbed from the documentation / somewhere online, then hacked into shape.
Of course, in order to do any of that you need to understand what's going on, but there might be easier ways to do that than manually typing in code.
Just because they're learning to code, doesn't mean that you should put artificial hurdles in front of them.
My pet theory is that it has something to do with information compression in the brain, kind of like Huffman coding, except you keep the table for life.
To me the weird part is that nobody gets their start sitting at a computer with somebody else. Or at least, if you do get a group of kids around a single computer, they're sooner going to watch YouTube (or play Minecraft) than learn to program.
My experience tells me that when you are just a bit beyond hello-world, it's way better to sit alone and maybe even disconnect from the Internet. I was starting with nothing more than a book on Delphi and the help system of Delphi, which included Win2k SDK, and feel that only by this way you could develop good debugging skills. I know some people who are learning software development, and the single skill they need badly is troubleshooting complex problems on their own and not relying on colleagues.
edit: now I see that my point is about sitting together with someone more skilled, but you're talking about kids leaning together, which is totally different.
This is one of the reasons the Raspberry Pi was created.
I can even use AIDE on my phone to write applications for my phone!
I have no idea why anybody claims we have less programming freedom than in the past.
I think perhaps we might not be starting programming with computers directly all the time, but perhaps there will always be some object that younger folks will learn to program. Heck maybe the next kids will decide to program phones or connected home appliances or something.
In my opinion, the abundance of dynamic and interpreted languages, powerful tools, programmable hardware, and the internet make getting into programming WAY easier than it was before.
Those home computers? You load a game, or you start programming. Since loading a game often meant fiddling around with a tape cassette and cable, and a few minutes hoping it would load, it's easy to see why people decided to try to code themselves.
I know abstraction is a good thing. I know it's powerful and etc etc.
But there's something nice about being able to squirt data to an address, and know it's coming out the parallel port, and having a hokey resister-ladder DtoA converter hooked up to turn that data into music. Or to have a single instruction to draw a pixel.
I remember being utterly confused by what a statement beginning with "while" did, but eventually I was reasonable enough to mostly implement a (very weak) checkers-playing AI.
This then lead to programming Lego robots in C, which was pretty neat. (Actually, thinking about that, the first programming I did was using the graphical LabView thing that Lego provides for Mindstorms robots.)
PRINT "Hello from the Computer"
It helped that our parents limited us to 30min/day of playing games, but were okay with me spending more computer time programming (or playing my own games, though I rarely did that. Making them better was way more fun than actually playing them).
I don't remember how old I was at the time, but it was definitely I was using Windows 3.11 (it was installed, but you couldn't run any decent apps when all your RAM was used up by win). By the time we got a Win95 computer (which in fairness was probably in '98 or '99) I was pretty decent at BASIC.
I continued to play around with it 'til I started learning C++ in maybe 2003? Luckily prolonged exposure to BASIC doesn't seem to have done any lasting damage :)
As a kid, I was never really exposed to programming. It wasn't offered in middle school or high school. It just so happened that I was never prompted to try it. I majored in something non-technical, and didn't write my first 'for' loop til I was 24.
Which is a shame, because as a kid I totally would have loved it. If only there was one class, one teacher, one person, somewhere, telling me to try programming -- I would have tried it, most likely, if someone pushed me.
Oh well. As a grown up, I've discovered programming, I have a job doing programming, and I love it.
But I also started earlier than most folks I know.
I was also given an Atari 130XE by an uncle that booted to BASIC, explored GORILLAS.BAS when DOS 5.0 came along, etc.
Access to this kind of information is easier than ever.
All this doom and gloom is self-pitying bullshit.
Don't forget that DATA statements just contain comma separated constants, and they were useful for a lot of stuff, not just POKEing a byte into memory. Manipulating these constants gave some people their first taste of 'reverse-engineering' level data. :-)
And the fact that people were typing in machine code, to directly manipulate the hardware, is pretty impressive. It's even more impressive if they went on to learn more about assembler in order to modify the code somehow. Instruction manuals for the machines included information about machine language programming.
He sounds like a modern day Woz, except he was successful despite not wanting to get involved in business. (by that I mean, Woz was successful, but we don't know how he might have turned out if Steve Jobs didn't push him to cofound Apple)
There's an unofficial modding API and thousands of mods , some of which are extremely sophisticated. For instance, "Red Power"  includes an in-game 6502-based computer for which the author wrote a Forth interpreter that can be used to control in-game objects, and somebody else has embedded a Lua interpreter that can do similar things, IIRC.
There are also dozens of user-created game modes (some of which only have informally-enforced rules) and special maps like "Feed the Beast" .
The only games I can think of with comparable amounts of content are MMOs and possibly the Elder Scrolls series, though in both of those cases the content is nothing like as varied, nor does it rely on its user's creativity to anything like the same extent.
Minecraft is very much like Lego, only you can also program your own bricks.
I love the idea of Minecraft but never got into it, but KSP is irresistible to me. I just can't get enough of it. I wonder what it is about these open ended sandbox games that favours independent devs. Maybe it's the fact they don't rely on a massive ammunt of pre generated content, or even really a designed experience even. Instead they are based on a suite of components you then create content with yoursef. They're really toolkits, just as Leggo is.
“My strongest early memory is of my dad dragging me through very deep snow on a sled,” he said. “I looked up at him and he seemed annoyed at me. Perhaps it was tough work, dragging me, or perhaps I had been crying. And I realized that—hang on—he’s actually a real person, with his own perception of things. It’s not just me looking at things; he is also looking at things.”
I wonder if it's rare for someone so little to experience empathy so powerfully. Certainly I don't recall realizing anything like that until much later.
The whole story about Notch and his father is very moving.
We have a Minecraft server running on an older Mac mini in the house, and my kids’ have friends — some local and some from other states — that log in and play with them. Sometimes they are all on Skype, talking to each other while they play. It is so cool, and fun to watch them all interacting in their Minecraft world together.
It's amazing that he doesn't consider himself to be a good programmer. In what other profession would someone as accomplished as Persson say that?
There aren't that many professions were a decent piece of work that makes one person happy can scale up to make a million people happy with minimal marginal effort.
Pure technical ability is a dime a dozen. Check YouTube for a zillion teenagers who can play shred guitar as well as anyone. But inspired creativity is rare and valuable, and execution requires only a certain level of technical ability, not mastery.
Quality of programming and success are not necessarily related.
And from other sources (can't verify) minecraft code is reported to be quite bad, which is the main reason many of the bugs weren't fixed very fast.
Having said that, he had a vision, executed it well and made a lot of money. My hat is off to him for that.
I dunno about you, but writing truly readable, intuitive, easy to maintain code is quite difficult. And you'll likely never get it right the first time. Refactoring for readability takes consultation from other human beings, and lots of time.
And when you're writing software for a business, it's really important to put in that time. You know what you're writing is going to last five or ten or more years and will be seen by dozens of people. It _needs_ to be good.
But for a guy working independently on a novel project? Fuck all that, I say. Just iterate as fast as you can towards the vision that you have while keeping some minimum standard of readability/maintainability. It doesn't need to be very good code, it just needs to be good enough that you can go back to it later without being completely confused.
Life typically means just that - it's not some shorthand for a term of imprisonment.
Can you show me an actual statistics on what percentage of "X faces life" in English texts relates to severe criminal charges, and what percentage means something "non-sensationalist"? Because as a non-native speaker, I've always seen it in the former context.
(Incidentally, Google's de-duplication logic fails horribly on that query. 6 of the top 10 results are the same blogspam-copied story, and it's not even fresh news.)
‘Life after x’ never refers to a life sentence—neither I nor anyone will have a statistical reference to back them up on this assertion—it's just not needed.
well, i suppose 'faces life after quadruple homicide' would.
If you made that kind of money, why would you even bother to do anything but just retire and enjoy life?
Say, you are a programmer, and you are enjoying your work. Would you enjoy yourself more riding a Ferrari today? Sitting on some Caribbean beach? Following your favourite NBA team by going to all their games? Study medicine? Start a charity? How do you know you would stay happy doing that? Would you feel guilty spending your life lying on a beach, where you might have written some useful software instead?
Most people would shrug of those ideas or not even think about them because "that's life". If you have a hundred million in the bank, though, all of these are realistic options.
If money is no objection, some feel that they really are themselves to blame if they aren't happy for a minute or don't accomplish anything they feel valuable in the rest of their lives.
>“When you have the kind of success Minecraft has brought, you can just choose yourself the way you want to do things,” said Persson. “I don’t want to feel like I’m in charge or anything... I try to have a studio where people go to make games for the fun of it, not just because some investor has said we have to make money.”
He pretty much is retired. Making the games he wants to with other people is how he enjoys life. Profit is not at the top of the list.
Sounds awesome to me!
I really don't understand some of the bile that follows Persson around.
Are people really that fucking bitter that a guy who by his own admission is a complete klutz (programming and business-wise) can become so successful?
To me, it seems like a superficial comment that misses any of what actually matters about the topic for the sake of a smug joke.