Yes, coding in your very broad sense is necessary to modeling in Granger's sense. The bigger problem is that coding isn't sufficient for modeling. We can and do get lost in the details of programming languages and tools. We design "learn to code" programs that teach typing and data-entry as opposed to abstract thinking.
No, you shouldn't have to work a 40+ hour week and then go home and practice to make a living as a software engineer. But if we want highly performant programmers, we should figure out the best ways to practice (and probably spend less--but more effective--time on production code to balance it all out).
>No, you shouldn't have to work a 40+ hour week and then go home and practice to make a living as a software engineer. But if we want highly performant programmers, we should figure out the best ways to practice (and probably spend less--but more effective--time on production code to balance it all out).
You're coming very close to identifying a major problem with our industry that isn't likely to go away. Yes you absolutely do have to "go home and study" to keep up as a software engineer/programmer. This is due to two reasons:
1. Advancements in technology outpace us
2. We're generally overloaded by management that doesn't understand what we do.
As for #1 there isn't much we can do to change that, and who would want to?
But for #2 it's a major problem. In many cases our 40+ hours have to be filled with coding because of the unrealistic deadlines that are posed on us from managers who don't understand the work.
Most of us are managed by people who have no idea what we do. They want "more more more" in terms of features and gizmos but haven't the slightest understanding of what goes into it. Add in scope creep and wasted time with meetings (that make them look busy) and that adds up to a long work week for a developer. And when you ask for time to study or learn something new, the response is "sure, when things aren't so busy".
This just reinforces my belief that you need passion to do this. You have to love development so much you're willing to put up this stuff, work your ass off and still want to go home and learn more.
Yes and it's also because the projects you'll typically work on in a corporate environment are like maintaining and adding features to boring CRUD apps and your skills will atrophy if you don't actively seek interesting, challenging work on your own time.
Your statement seems to infer that a NFL player only "works" one day a week for about 5 hours, and the rest of their training is done on their own time. I highly doubt your average football player would agree: they are working every time they are in there practicing.
Specifically related to your link - about someone who seems unhealthily obsessed with his job I would note - do you see how there's something in his schedule called Rest? How he is encouraged to unwind and have a social life? His personal motto "Balance in all things"? That's something which is missing from the "programmers should practice" narrative.
Neither the person you are replying to or the OP says you need to work 40+ hours a week and spend 10-15 hours a week practicing. Most things which have long term benefits only require 15-30 mins to do them and see results. (exercise, music, foreign language). It really does build up over time.
Yep, I don't get why Wolfram language would replace APIs we already have in place.
Because it's in natural language? WolframAlpha demonstrates (unsurprisingly) that it's still finicky. You still have to do just as much work to ensure connected services are working together properly.
Because--according to universal computation--it covers the entire computable world? So does any Turing-complete language.
I do see this as another cool thing along the lines of IPython Notebooks or JS Fiddle where you can quickly hook up to services and share the results. Uniquely, WolframAlpha's datasets and some of Mathematica's features. So it'd be nice for homework sets or Bret Victor-esque reactive documents (see http://worrydream.com/Tangle/).
Hmhmhmhm... I'm working with the people who are building these cloud systems, so let me elaborate a little:
No, the Wolfram Language is not natural language. It's the LISP-like language behind Mathematica. We needed to do that from a branding perspective so that the Mathematica product can continue to exist for the academic market without being conflated with the underlying language, which has much wider aspirations.
But as for natural language, you can press '=' and go into 'natural language mode' and write stuff like "total the list", but in my opinion it isn't very good yet and is only really useful for absolute beginners. I think it could get much better in the future when we have nice sophisticated type inference going (which I am working on right now).
As for IPython: the In[..] and Out[..] lines you see in IPython (and amusingly some other cloud system-based IDEs now) mirror v1 of Mathematica back in 1987 (I believe deliberately). It's an amusing accident of syntax that evaluating In[1] works in both Python and Mathematica.
But yes, exactly, part of this whole story is an online IDE (actually, a set of them) that makes it extremely easy to get a whole system deployed. Imagine setting up some machine learning, creating some slick visualizations, allocating some persistent storage, putting it behind an API, and creating an embedded dashboard, all in the space of 20 minutes and a few dozens of lines of code.
The closest existing competitor is FP complete's cloud Haskell system, but I'd love to know about others.
Ah, so it actually is Lisp. I immediately though Wolfram had a Lisp epiphany when he said "the idea of symbolic programming, and the idea of representing everything as a symbolic expression". This is basically the idea McCarthy had 50 years ago. However, I always had in mind that Mathematica features a more Python like language and did not know that there is a Lisp inside.
Sooooort of. There are major differences, differences that make a difference, so to speak.
Lisp: everything is lists.
Wolfram Language (prior to V10): everything is an expression. An expression has a head, and parts. The head is the primary place you attach rules. The head can be List, but can also be, say, If, or Disk, or Entity, or Timeseries, or Image, or Graph, or Graphics, or Button, or Frame, (and on and on and on).
Wolfram language (v10): expressions can be numerically indexed (i.e. Part[{"A","B","C"}, 2] == "B"), or symbolically indexed (Part[<|"A" -> 1, "B" -> 2, "C" -> 3|>, "B"] == 2). This new datastructure is called an Association (analogous to a hash map / associative array / dictionary, of course), but eventually it could have heads other than Association.
Anyway, its all quite uniform. No pointers, no references, nothing you "can't see". And the new Association data structure interacts beautifully with lists when you allow it to interact with Part -- you end up with something like XPath, but capable of expressing, for example, almost all of SQL, or LINQ, but in a very functional way.
Anyone who supports math puzzles (or whatever else) in an interview would have to argue that their perception of the candidates performance offers a clear enough data point that it doesn't dilute other information available to them. Given Google's study finding data otherwise, they certainly have the burden of proof.
The headline is misleading, but the article itself is more solid in this regard.
In fact, if you want children to be able to think, you shouldn't "teach them to think". You should teach deep knowledge and skills in a particular subject matter context:
"Maths classes tend to be more sophisticated, with lessons that show the often fascinating ways that geometry, trigonometry and calculus work together in the real world. Students forego calculators, having learned how to manipulate numbers in their heads."
High expectations can also be effective:
"Yet his most effective change was also his wooliest: he expected the best work from all of his pupils."
I've been thinking about this for a while--I created a spaced repetition system to digitize and learn material in college (alas, I don't use it anymore). I have a philosophical approach to the question here (also cited in Gwern's article): http://blog.learnstream.org/2012/08/spaced-repetition-in-nat...
Your distinction between learning facts and learning ways of thinking is interesting. Most of the spaced repetition research and design is around fact recall--what's called "paired associates" because you recall some response paired with some stimulus. I don't have any evidence for it, but I'd say that the schema can be lost just as well as facts can be.
One thing I will say is that spaced repetition is generally known for the repetition--that you retain something over time, and the spacing is more thought of as convenience. But the truth is that spacing is also part of better learning--when recall is difficult it's learned better (called "desirable difficulties"). I thought of that because Robert Bjork does that research with skills as well as facts. (See http://www.wired.com/geekdad/2012/01/everything-about-learni... for an overview.)
Yes it's not obvious to me how to impart knowledge in a SRS format that's more than fact recall. I was thinking of starting with thermodynamics because it's one of the more straight-forward equation courses - but then how do you properly do problem solving? I suppose if you walk through a problem broken up into enough chunks phrased as questions, and somehow give users a toolbox from which to choose equations from, it might work.
Not sure how deep down the rabbit hole you want to go, but here's what I know:
The field of intelligent tutoring systems is essentially how to break up a problem and estimate your knowledge on each piece (called a "knowledge component"), and then how to instruct based on the resulting student model. I got started by reading about Andes physics tutor: http://oli.cmu.edu/wp-oli/wp-content/uploads/2012/05/VanLehn... but there are many examples.
Most of the research doesn't actually incorporate spaced repetition. One exception is Philip Pavlik's work: http://optimallearning.org/
It's still a lot of effort to break things down into knowledge components and figure out the sequencing and instruction. That's why companies like Carnegie Learning and Knewton exist, and even those are only targeting elementary or intro level material for now.
Sayemm's quote about prodigies seems to imply that there is something innate causing a singleminded obsession. Maybe in some cases, but there are cases like Mozart and the Polgar sisters (http://en.wikipedia.org/wiki/Judit_Polg%C3%A1r#Early_life), who were basically raised into the target of their grit and passion.
I think one of the answers, as in the forth point, is environment. Take programming. In my case, I got started at a young age because I had a computer and found a programming book one time when I was bored. From there it was extremely easy to surround myself, via the internet, with people who are gritty about programming, to read books and blogs all the time, and to have projects all around me.