
Good morning . How are you ? It 's been great , has n't it ? I 've been blown away by the whole thing . In fact , I 'm leaving . ( Laughter ) There have been three themes , have n't there , running through the conference , which are relevant to what I want to talk about . One is the extraordinary evidence of human creativity in all of the presentations that we 've had and in all of the people here . Just the variety of it and the range of it . The second is that it 's put us in a place where we have no idea what 's going to happen , in terms of the future . No idea how this may play out . I have an interest in education -- actually , what I find is everybody has an interest in education . Do n't you ? I find this very interesting . If you 're at a dinner party , and you say you work in education -- actually , you 're not often at dinner parties , frankly , if you work in education . ( Laughter ) You 're not asked . And you 're never asked back , curiously . That 's strange to me . But if you are , and you say to somebody , you know , they say , " What do you do ? " and you say you work in education , you can see the blood run from their face . They 're like , " Oh my God , " you know , " Why me ? My one night out all week . " ( Laughter ) But if you ask about their education , they pin you to the wall . Because it 's one of those things that goes deep with people , am I right ? Like religion , and money and other things . I have a big interest in education , and I think we all do . We have a huge vested interest in it , partly because it 's education that 's meant to take us into this future that we ca n't grasp . If you think of it , children starting school this year will be retiring in 2065. Nobody has a clue -- despite all the expertise that 's been on parade for the past four days -- what the world will look like in five years ' time . And yet we 're meant to be educating them for it . So the unpredictability , I think , is extraordinary . And the third part of this is that we 've all agreed , nonetheless , on the really extraordinary capacities that children have -- their capacities for innovation . I mean , Sirena last night was a marvel , was n't she ? Just seeing what she could do . And she 's exceptional , but I think she 's not , so to speak , exceptional in the whole of childhood . What you have there is a person of extraordinary dedication who found a talent . And my contention is , all kids have tremendous talents . And we squander them , pretty ruthlessly . So I want to talk about education and I want to talk about creativity . My contention is that creativity now is as important in education as literacy , and we should treat it with the same status . ( Applause ) Thank you . That was it , by the way . Thank you very much . ( Laughter ) So , 15 minutes left . Well , I was born ... no . ( Laughter ) I heard a great story recently -- I love telling it -- of a little girl who was in a drawing lesson . She was six and she was at the back , drawing , and the teacher said this little girl hardly ever paid attention , and in this drawing lesson she did . The teacher was fascinated and she went over to her and she said , " What are you drawing ? " And the girl said , " I 'm drawing a picture of God . " And the teacher said , " But nobody knows what God looks like . " And the girl said , " They will in a minute . " ( Laughter ) When my son was four in England -- actually he was four everywhere , to be honest . ( Laughter ) If we 're being strict about it , wherever he went , he was four that year . He was in the Nativity play . Do you remember the story ? No , it was big . It was a big story . Mel Gibson did the sequel . You may have seen it : " Nativity II . " But James got the part of Joseph , which we were thrilled about . We considered this to be one of the lead parts . We had the place crammed full of agents in T-shirts : " James Robinson IS Joseph ! " ( Laughter ) He did n't have to speak , but you know the bit where the three kings come in . They come in bearing gifts , and they bring gold , frankincense and myrhh . This really happened . We were sitting there and I think they just went out of sequence , because we talked to the little boy afterward and we said , " You OK with that ? " And he said , " Yeah , why ? Was that wrong ? " They just switched , that was it . Anyway , the three boys came in -- four-year-olds with tea towels on their heads -- and they put these boxes down , and the first boy said , " I bring you gold . " And the second boy said , " I bring you myrhh . " And the third boy said , " Frank sent this . " ( Laughter ) What these things have in common is that kids will take a chance . If they do n't know , they 'll have a go . Am I right ? They 're not frightened of being wrong . Now , I do n't mean to say that being wrong is the same thing as being creative . What we do know is , if you 're not prepared to be wrong , you 'll never come up with anything original . If you 're not prepared to be wrong . And by the time they get to be adults , most kids have lost that capacity . They have become frightened of being wrong . And we run our companies like this , by the way . We stigmatize mistakes . And we 're now running national education systems where mistakes are the worst thing you can make . And the result is that we are educating people out of their creative capacities . Picasso once said this . He said that all children are born artists . The problem is to remain an artist as we grow up . I believe this passionately , that we do n't grow into creativity , we grow out of it . Or rather , we get educated out if it . So why is this ? I lived in Stratford-on-Avon until about five years ago . In fact , we moved from Stratford to Los Angeles . So you can imagine what a seamless transition that was . ( Laughter ) Actually , we lived in a place called Snitterfield , just outside Stratford , which is where Shakespeare 's father was born . Are you struck by a new thought ? I was . You do n't think of Shakespeare having a father , do you ? Do you ? Because you do n't think of Shakespeare being a child , do you ? Shakespeare being seven ? I never thought of it . I mean , he was seven at some point . He was in somebody 's English class , was n't he ? How annoying would that be ? ( Laughter ) " Must try harder . " Being sent to bed by his dad , you know , to Shakespeare , " Go to bed , now , " to William Shakespeare , " and put the pencil down . And stop speaking like that . It 's confusing everybody . " ( Laughter ) Anyway , we moved from Stratford to Los Angeles , and I just want to say a word about the transition , actually . My son did n't want to come . I 've got two kids . He 's 21 now ; my daughter 's 16. He did n't want to come to Los Angeles . He loved it , but he had a girlfriend in England . This was the love of his life , Sarah . He 'd known her for a month . Mind you , they 'd had their fourth anniversary , because it 's a long time when you 're 16. Anyway , he was really upset on the plane , and he said , " I 'll never find another girl like Sarah . " And we were rather pleased about that , frankly , because she was the main reason we were leaving the country . ( Laughter ) But something strikes you when you move to America and when you travel around the world : Every education system on earth has the same hierarchy of subjects . Every one . Does n't matter where you go . You 'd think it would be otherwise , but it is n't . At the top are mathematics and languages , then the humanities , and the bottom are the arts . Everywhere on Earth . And in pretty much every system too , there 's a hierarchy within the arts . Art and music are normally given a higher status in schools than drama and dance . There is n't an education system on the planet that teaches dance every day to children the way we teach them mathematics . Why ? Why not ? I think this is rather important . I think math is very important , but so is dance . Children dance all the time if they 're allowed to , we all do . We all have bodies , do n't we ? Did I miss a meeting ? ( Laughter ) Truthfully , what happens is , as children grow up , we start to educate them progressively from the waist up . And then we focus on their heads . And slightly to one side . If you were to visit education , as an alien , and say " What 's it for , public education ? " I think you 'd have to conclude -- if you look at the output , who really succeeds by this , who does everything that they should , who gets all the brownie points , who are the winners -- I think you 'd have to conclude the whole purpose of public education throughout the world is to produce university professors . Is n't it ? They 're the people who come out the top . And I used to be one , so there . ( Laughter ) And I like university professors , but you know , we should n't hold them up as the high-water mark of all human achievement . They 're just a form of life , another form of life . But they 're rather curious , and I say this out of affection for them . There 's something curious about professors in my experience -- not all of them , but typically -- they live in their heads . They live up there , and slightly to one side . They 're disembodied , you know , in a kind of literal way . They look upon their body as a form of transport for their heads , do n't they ? ( Laughter ) It 's a way of getting their head to meetings . If you want real evidence of out-of-body experiences , by the way , get yourself along to a residential conference of senior academics , and pop into the discotheque on the final night . ( Laughter ) And there you will see it -- grown men and women writhing uncontrollably , off the beat , waiting until it ends so they can go home and write a paper about it . Now our education system is predicated on the idea of academic ability . And there 's a reason . The whole system was invented -- around the world , there were no public systems of education , really , before the 19th century . They all came into being to meet the needs of industrialism . So the hierarchy is rooted on two ideas . Number one , that the most useful subjects for work are at the top . So you were probably steered benignly away from things at school when you were a kid , things you liked , on the grounds that you would never get a job doing that . Is that right ? Do n't do music , you 're not going to be a musician ; do n't do art , you wo n't be an artist . Benign advice -- now , profoundly mistaken . The whole world is engulfed in a revolution . And the second is academic ability , which has really come to dominate our view of intelligence , because the universities designed the system in their image . If you think of it , the whole system of public education around the world is a protracted process of university entrance . And the consequence is that many highly talented , brilliant , creative people think they 're not , because the thing they were good at at school was n't valued , or was actually stigmatized . And I think we ca n't afford to go on that way . In the next 30 years , according to UNESCO , more people worldwide will be graduating through education than since the beginning of history . More people , and it 's the combination of all the things we 've talked about -- technology and its transformation effect on work , and demography and the huge explosion in population . Suddenly , degrees are n't worth anything . Is n't that true ? When I was a student , if you had a degree , you had a job . If you did n't have a job it 's because you did n't want one . And I did n't want one , frankly . ( Laughter ) But now kids with degrees are often heading home to carry on playing video games , because you need an MA where the previous job required a BA , and now you need a PhD for the other . It 's a process of academic inflation . And it indicates the whole structure of education is shifting beneath our feet . We need to radically rethink our view of intelligence . We know three things about intelligence . One , it 's diverse . We think about the world in all the ways that we experience it . We think visually , we think in sound , we think kinesthetically . We think in abstract terms , we think in movement . Secondly , intelligence is dynamic . If you look at the interactions of a human brain , as we heard yesterday from a number of presentations , intelligence is wonderfully interactive . The brain is n't divided into compartments . In fact , creativity -- which I define as the process of having original ideas that have value -- more often than not comes about through the interaction of different disciplinary ways of seeing things . The brain is intentionally -- by the way , there 's a shaft of nerves that joins the two halves of the brain called the corpus callosum . It 's thicker in women . Following off from Helen yesterday , I think this is probably why women are better at multi-tasking . Because you are , are n't you ? There 's a raft of research , but I know it from my personal life . If my wife is cooking a meal at home -- which is not often , thankfully . ( Laughter ) But you know , she 's doing -- no , she 's good at some things -- but if she 's cooking , you know , she 's dealing with people on the phone , she 's talking to the kids , she 's painting the ceiling , she 's doing open-heart surgery over here . If I 'm cooking , the door is shut , the kids are out , the phone 's on the hook , if she comes in I get annoyed . I say , " Terry , please , I 'm trying to fry an egg in here . Give me a break . " ( Laughter ) Actually , you know that old philosophical thing , if a tree falls in the forest and nobody hears it , did it happen ? Remember that old chestnut ? I saw a great t-shirt really recently which said , " If a man speaks his mind in a forest , and no woman hears him , is he still wrong ? " ( Laughter ) And the third thing about intelligence is , it 's distinct . I 'm doing a new book at the moment called " Epiphany , " which is based on a series of interviews with people about how they discovered their talent . I 'm fascinated by how people got to be there . It 's really prompted by a conversation I had with a wonderful woman who maybe most people have never heard of , she 's called Gillian Lynne , have you heard of her ? Some have . She 's a choreographer and everybody knows her work . She did " Cats , " and " Phantom of the Opera . " She 's wonderful . I used to be on the board of the Royal Ballet , in England , as you can see . Anyway , Gillian and I had lunch one day and I said , " Gillian , how 'd you get to be a dancer ? " And she said it was interesting , when she was at school , she was really hopeless . And the school , in the '30s , wrote to her parents and said , " We think Gillian has a learning disorder . " She could n't concentrate , she was fidgeting . I think now they 'd say she had ADHD . Would n't you ? But this was the 1930s , and ADHD had n't been invented at this point . It was n't an available condition . ( Laughter ) People were n't aware they could have that . Anyway , she went to see this specialist . So , this oak-paneled room , and she was there with her mother , and she was led and sat on a chair at the end , and she sat on her hands for 20 minutes while this man talked to her mother about all the problems Gillian was having at school . And at the end of it -- because she was disturbing people , her homework was always late , and so on , little kid of eight -- in the end , the doctor went and sat next to Gillian and said , " Gillian , I 've listened to all these things that your mother 's told me , and I need to speak to her privately . " He said , " Wait here , we 'll be back , we wo n't be very long . " and they went and left her . But as they went out the room , he turned on the radio that was sitting on his desk . And when they got out the room , he said to her mother , " Just stand and watch her . " And the minute they left the room , she said , she was on her feet , moving to the music . And they watched for a few minutes and he turned to her mother and said , " Mrs. Lynne , Gillian is n't sick , she 's a dancer . Take her to a dance school . " I said , " What happened ? " She said , " She did . I ca n't tell you how wonderful it was . We walked in this room and it was full of people like me . People who could n't sit still . People who had to move to think . " Who had to move to think . They did ballet , they did tap , they did jazz , they did modern , they did contemporary . She was eventually auditioned for the Royal Ballet School , she became a soloist , she had a wonderful career at the Royal Ballet . She eventually graduated from the Royal Ballet School and founded her own company -- the Gillian Lynne Dance Company -- met Andrew Lloyd Weber . She 's been responsible for some of the most successful musical theater productions in history , she 's given pleasure to millions , and she 's a multi-millionaire . Somebody else might have put her on medication and told her to calm down . Now , I think ... ( Applause ) What I think it comes to is this : Al Gore spoke the other night about ecology , and the revolution that was triggered by Rachel Carson . I believe our only hope for the future is to adopt a new conception of human ecology , one in which we start to reconstitute our conception of the richness of human capacity . Our education system has mined our minds in the way that we strip-mine the earth : for a particular commodity . And for the future , it wo n't serve us . We have to rethink the fundamental principles on which we 're educating our children . There was a wonderful quote by Jonas Salk , who said , " If all the insects were to disappear from the earth , within 50 years all life on Earth would end . If all human beings disappeared from the earth , within 50 years all forms of life would flourish . " And he 's right . What TED celebrates is the gift of the human imagination . We have to be careful now that we use this gift wisely , and that we avert some of the scenarios scenarios that we 've talked about . And the only way we 'll do it is by seeing our creative capacities for the richness they are , and seeing our children for the hope that they are . And our task is to educate their whole being , so they can face this future . By the way -- we may not see this future , but they will . And our job is to help them make something of it . Thank you very much . 