Code Year
codeyear.com
codeyear.com
Something to think about...coding well takes a certain type of mind that most people don't have. Code is, as Fred Brooks says, "pure thought-stuff." You need to be able to build and understand multiple layers of abstract stuff all at the same time.
Coding is like having a vivid dream in that you're occupied with something entirely mental and disconnected from your physical reality. But unlike real dreams, it's coherent and rigidly structured, and fits in your conscious mind.
Some people can think this way. Most people can't, even if their mind is advanced in other ways.
I don't think most people, even the ones who are interested in Codeacademy, realize this.
(That said, I think it's useful for people to try to learn to code to understand the basics. And surely lots of people out there could code, but haven't learned yet. But most people will not be able to build complicated "apps and websites.")
I personally believe that many people just can't grasp the ideas behind programming. But I would say that this is just because programming is hard - so hard that even those of us that are good enough at it to program for a living still struggle. It seems to me that the really good programmers are the ones that recognise just how rubbish they actually are at programming and try to do everything to make their code as easy to understand as possible. Functions that take up less than one screen, files that never have more than a thousand lines of code or so, using interfaces so that you don't have to understand implementation details, unit tests so that you can have confidence in a block of code and not have to doubt details when debugging, checking input values for functions. These are all things that you see in code written by those recognised as being good programmers, and yet they are all techniques that aim to reduce cognitive load when reading code. I don't think this is a coincidence.
So, if those of us that are good at this only just manage to get over the bar of adequecy, it stands to reason that there must be a lot of people that just don't make the grade, assuming a normal distribution of programming skill.
Where did we get this idea come from? I'm genuinely curious.
I've recently taken a huge bet in the opposite direction of this assumption that not everybody can learn coding, and I'm very interested in what (if any) evidence exists on both sides of the argument.
It's a paper that focuses on some strange patterns that came out of a statistical analysis of the 1988 Computer Science AP test. It turns out that there are a few questions that end up being a great indicator towards someone's natural programming ability.
Definitely worth the read.
"“Educators of computer science have repeatedly observed that only about 2 out of every 100 students enrolling in introductory programming classes really resonate with the subject and seem to be natural-born computer scientists…I conclude that roughly 2% of all people ‘think algorithmically,’ in the sense that they can reason rapidly about algorithmic processes."
Is dev bootcamp new? Looks cool!
It was born out of this thread: http://news.ycombinator.com/item?id=3267133
There are 20 willing students signed up to be experimented on in the spring. I'll definitely keep folks here posted on the results.
What does Jung have to do with this?
As was recently discussed though: there is no shame in good enough.
Minds are plastic, and people choose to fill them however they like. If you practice musical performance, you become more musical no matter how much "natural talent" you start out with. Though there are people with physical limitations and true tone deafness, they are few and far between.
Becoming better with practice holds for the development of problem solving strategies and heuristics as well; all anecdotal evidence aside, improving visualization ability and learning from experience is the formula for making "those who code well". What we lack in our education process today is teaching the ability to think critically and logically and the process of breaking larger problems into smaller, manageable ones - and this is why we have people who think they can't code, or simply won't code even if they have the honed mental tools to do the job well. The fact is, it is very hard to think in the abstract for extended periods and most people just don't want to do it.
The mind is plastic, but there's a strong genetic component too...and this all has been debated soooo much...
I find it natural - not hard at all - to think in the abstract for extended periods. Most people don't.
Also I agree with you that it's a slippery slope. But only if you choose the wrong ski lift: The ski lift of assholeness. (How's this analogy going?) The truth is, there are plenty of facts out there that you could use to become an asshole with. Like the fact that your little brother is physically weaker than you. But that doesn't mean that you should beat him up. And it doesn't change the truth.
The placement makes it seem (to me) that the quotations and made in promotion as opposed to being used as backing for support.
their quotes are used with their permission and they're all partners for code year.
But just by the pattern and placement they seem like testimonials, when they were not said in testimony.
And upon trying to register got 'We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly.'
It seems to me that making educational material free & widely available is the first step. That's the equivalent of putting textbooks in anyone's hands.
The next (massively exciting!) step will be when online learning becomes measurable and demonstrable. See the Khan Academy tools video [http://bit.ly/rVFlsE] for a peek at how much is possible on that front.
In the case of teaching people to program, I'd like to see lessons, videos, and exercises become the onramp to a system where students can connect/collaborate (think GitHub + StackOverflow for beginner/intermediate coders). I know from my own experience that there's nothing like a little positive peer pressure to keep you on track and that sharing your progress with peers is fun and keeps you motivated.
All the undergrad courses--as far as I can tell--are just introductions to some field or other. Once you get to grad school--and some during undergrad too--you start doing research. This is productive while being didactic; however, I doubt it would be nearly as efficient without the useless classes before it.
In short, while learning you're just solving known problems poorly (that compiler you wrote for your class was probably not comparable to GCC :). The stuff that actually needs to get done and the things you need to do while starting learning are unfortunately different.
Remember the target market is full of people who don't code at all. Just getting their feet wet and realizing they can do it is the important part. The focus can come later and will probably happen organically.
if text.response_time < 5
puts "She digs me!"
elsif text.response_time < 60
puts "She is vaguely interested."
elsif text.response_time < (24 * 60)
puts "Delete her number and move on :("
end
You may think it is pathetic (because it is!) but it is surprisingly effective.Just of curiosity, I would like to know whether that event affects the server badly, if I keep my browser open?
Jokes aside, timing out would be useful.
A Firebug like prompt is the plan i.e. "Script is taking too long to finish, do you want to stop it..." maybe every (n * X) time interval for n is every time the msg is shown for a specific peace of code.
Only if learning to be a blackhat would be that easy.
Move forward 10 years, and it was all gone.
Sadly the extension of the computer concept to tablets and smart phones does not seem to carry such a legacy.