Jeff Atwood NY Daily News Op-Ed: Learning To Code Is Overrated
theodp writes: Responding to New York City's much-ballyhooed $81 million initiative to require all of the city's public schools to offer CS to all students, Coding Horror's Jeff Atwood has penned a guest column for the NY Daily News which cautions that learning to code isn't all it's cracked up to be. Atwood begins, "Mayor de Blasio is winning widespread praise for his recent promise that, within 10 years, all of New York City's public schoolchildren will take computer science classes. But as a career programmer who founded two successful software startups, I am deeply skeptical about teaching all kids to code." Why? "If someone tells you 'coding is the new literacy' because 'computers are everywhere today,' ask them how fuel injection works. By teaching low-level coding, I worry that we are effectively teaching our children the art of automobile repair. A valuable skill — but if automobile manufacturers and engineers are doing their jobs correctly, one that shouldn't be much concern for average people, who happily use their cars as tools to get things done without ever needing to worry about rebuilding the transmission or even change the oil." Atwood adds, "There's nothing wrong with basic exposure to computer science. But it should not come at the expense of fundamental skills such as reading, writing and mathematics...I've known so many programmers who would have been much more successful in their careers if they had only been better writers, better critical thinkers, better back-of-the-envelope estimators, better communicators. And aside from success in careers, we have to ask the broader question: What kinds of people do we want children to grow up to be?"
He's right that we need rounded people as programmers - but we are more likely to get them if the possibility of being a programmer is accessible to a wider range of people than at present. That's the virtue of this approach; it opens the prospect of programming as a career to a wider range beyond us geeks and nerds!
On the other hand it may make us unemployable as ordinary people nick our jobs...
it's good to teach kids science...
Not everyone should or should want to become "programming literate", but it's not supposed to be like learning how to read and write. There is more to learning to code than coding itself. There is plenty of science at school that people never use in their adult life, but it's useful to have some understanding of how the world works, how others work, and each subject bring a new way of thinking - a different way of thinking is brought with coding and that's useful to everyone.
I disagree. Today, nearly all kids are given the opportunity to participate in school sport. Not all will go on to be famous athletes, but most will benefit from the experience. Personally, I was an introvert and lousy at sports, but the school sports program instilled in me the importance of physical fitness and a love for nature and the outdoors. The program also taught me about personal limitations, strengths and weaknesses: I was smart, but certainly not good at some things! Didn't feel like it at the time, but that was a healthy too, I think.
If it acquires resources on instantiation like a duck, then its a shared_ptr<Duck>
pleading for money from Microsoft, etc.
People still write books even though there's more books out there than a person can read in their lifetime. Software will keep on being written. Considering it is a low cost endevour to start a software business, it is good for lots of people not willing to take monetary risks.
Coding is great because it gives a person a real appreciation for math. Though, I already see the transition though that a person who knows which apps to use for a project can be more valuable to general companies than someone who writes custom apps. Until we invent natural language inputs, there will be a use for a coder, but even after then, we'll just be coding, but in natural language.
God spoke to me
We all want students to be well-rounded, right?
Well why should that not include a crack at programing?
I see his point that Reading/Writing/'Rithmatic are all very important. The thing is, programing if it appeals to you, is a way to get better at all three of those things - because you are learning aspects of all three in an applied, not theoretical, way.
Coding helps organize your thoughts in a way not dissimilar to how you might want to arrange thoughts for writing. Coding ABSOLUTLEY helps reading because my God do you use Google/Stack Overflow.
Arithmetic is just kind under there sneakily embedding itself into all your code, especially if you do any GUI and animation stuff at all.
So I say it makes for a great experiment to expose all kids to programming, and see what happens as a result. It certainly couldn't make the schools any worse than they are to introduce a subject that demands logical thinking to succeed.
If it doesn't work well for the kid, good to find that out now and rule it out as a possible interest early. But it also may get some kinds started much earlier than they would otherwise.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Sure, we don't teach kids how fuel injection works, but they'll be driving cars when they're old enough
We also don't teach them how to drive in school. That's something done outside of school.
Perhaps that was a bad analogy?
Comp sci and maths should be combined. Algebra/trigonometry have applications in 3D graphics and it's a lot easier to understand the maths when you apply it.
People that really want to learn how to code will do so at their own will, either by learning it themselves from a young age or pursuing it at a higher level of their education. I agree with atwood in that formative learning years shouldn't be hindered with CS schooling. Though a small skim of it's history is in order, it really shouldn't take up student focus off of reading, writing, and maths.
I think it is a good idea to know how fuel injection works. I have a book on the K-Jetronic which I had in my Lotus and understood pretty well how it worked, which helped in tearing down the engine and doing a full overhaul and getting it back together and running again.
In today's modern cars, understanding how the Fuel Injection System works IS coding.
I don't think every body should have to be a star programmer, but exposure to programming will help a person to better understand how to use their computer and why it works the way it does. Just like understanding machine language will make you a more efficient 3GL and 4GL programmer.
I don't think that everybody should have to learn to code if they don't want to, though, and I don't think we ought to be singling out people that specifically don't want to learn coding and offer them lots of extra incentives to do something they don't want to do. Rather, we should spend all the money on people who DO want to learn coding.
If you are not allowed to question your government then the government has answered your question.
Programming is a trade. It is specific to a language and OS. I learned Integer Basic on Apple ][ Plus and that did me no good because when I got to college, the new thing was procedural programming. And then when I graduated, it became OOP. Or something - I cannot keep up with the buzzwords these days.
My point is that programming shouldn't be taught at the K-12 level. They should learn the basics - like Natural sciences. And considering the pathetic knowledge of most Americans about science, we should be concentrating there instead of creating cheap coders for Facebook and other companies who want cheap labor.
Education is about learning to learn and critical thinking not a trade like programming - and no, programming does NOT teach critical thinking or even logical thinking aside from the basic truth table. Philosophy is much more valuable than any computer science course in the grand scheme of things. And so is art and music. Programming is like auto mechanics - valuable, but not part of a well education.
I've worked professionally, and as a freelance. I can assure you that computer literacy is a must, especially when IT is short-staffed, or when the immediate supervisor(s) are technologically illiterate. This is a long-term fix, so don't expect real results until about 12-13 years from now.
[Not that I'm actually that guy, but...]
I want your children to grow up to be automobile mechanics so that repairs are dirt cheap and mechanics become entirely interchangable cogs.
I want my children to grow up to be upper level executives at Firestone, Midas, Monroe, NAPA, etc.
Anybody going into a hard science, engineering etc should have this tool at their disposal.
They don't however need to be taught programming in school. Just like turning wrenches, those that will take to it, will find their own way. Money spent on 'the rest' is wasted anyhow.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
You sure there's no fuel-injector in that espresso machine? I sure feel energized after having one!
Do not look into laser with remaining eye.
"Normal" people didn't start buying PCs until about 1995 anyway. If you really want to push the definition back you might be able to claim 1990. So that's 20 to 25 years of PCs being relatively common in the home.
Most people will look at the end-use. The tablet "walled garden" scenario developed because the traditional mass-market PC and OS makers dropped the ball on giving the customer what they wanted, and Google and Apple picked up the slack and actually gave the customer what they wanted. I personally find tablets generally lacking given what I want to do, but for most people it's apparently right up their alley.
Do not look into laser with remaining eye.
You can't outsource a mechanic's job because he needs to be where the cars are.
You can't outsource a mechanic's job because he needs to be where the cars are.
You can outsource most of it, and that's really already happened. Most neighborhood automotive rebuilding shops have disappeared. Machine shops have dwindled in number. So now, rebuilding tends to happen on a larger scale. More and more of what mechanics do is just swapping assemblies.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
I think that was his point. It should not come as the expense of fundamental skills such as reading, writing and mathematics. In fact, that was a quote pulled directly from the article summery. If kids are not learning fundamental skills such as reading, writing and mathematics, pushing coding or any other comp science into the mix is glossing over the problems and will not benefit much of anyone.
We had computer programming in high-school (Turbo Pascal). I took the class - it did not inspire me. I already had the passion to code on my own time at home. With the Internet and cheap computers today, kids will find their own way.
I took Automotive in high-school as well as technical drawing and music - guess what? Those programs did not inspire me to become an excellent amateur pianist, backyard mechanic or semi-pro electrical CAD technician that I am today. It's all about the person. If my school didn't have programming, I would have been doing it anyway. My school didn't teach aviation, but I went out of my way on my own, sought the necessary (serious training) and now I fly aircraft.
The concept/argument of introducing someone who "wouldn't have otherwise been exposed" seems a little ludicrous to me. If the person doesn't have the natural drive or interest, I'm sorry - you're just making it harder for legit folks that deserve the job to get one because recruiters now have a tougher job filtering out the morons.
Do an intro class of computer programming for the kids - don't spent a too much on it. The education system sucks at teaching anyway. Fix that first, then we can talk.
($0.02)
I wish my school offered more than 1 class in BASIC in the late 90's. I wish they offered more electives in many other subjects as well. About the only electives were art and foreign languages. My senior year I took 3 art classes and Latin.
Have you tried shutting it off and starting it again?
If the schools were already doing a great job at teaching kids the stuff they've always tried to teach -- in other words doing a great job in their core job duties if you will -- and wanted to take on this additional challenge/responsibility, I'd say, great, have at it.
I know I can have a new job in less than a month. There is no "allowed" when it comes to my vacation time. At best I'll say "I'd like a week off sometime in the next month, when would you prefer?" That said I'm from a country with such things as labor laws: they MUST give me paid time off, it isn't optional.
My wife was a school attendance clerk.
She could do the word docs, and the Excel, and she could use the predefined reports that the attendance software provided.
Enter the new software, Infinite Campus. It put the control of the reports in the hands of the end user.... big mistake.
Rather than learn to code the new reports themselves, which means every school might have different reports, she simple quit, along with many others, teachers and staff, who just did not want to deal with it.
Had she been taught programming in High School, like I was, she could have easily learned the pseudo-sql language needed to make your own reports.
Alternatively, you could argue that a system with totally undefined reports was a bad idea, and I would agree, but that is what the school district did.
Never answer an anonymous letter. - Yogi Berra
The car analogy breaks down here. A computer is not like a car. It is something like a package of five engines, 5 sets of tires, six transmissions, several seats, a few truck beds, and some chassis elements. You can put together anything from a pick up truck to a bulldozer to a formula 1 race car with the provided kit. And coding is how you put together whatever you want. Most people put together only golf carts. But companies put together specialized vehicles and without knowing coding the managers would manage it very inefficiently.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
If you see coding as something you use to build GUIs, sure his fuel injection analogy might more or less apply. But you can also use coding to automate everyday tasks in almost any job, dramatically increasing your productivity. Depending on your working environment you can do this using bash, Python or even Excel macros. But you do need to unlock a certain way of thinking of what you are doing that is what these coding classes should aim for, in my opinion.
This is a false dichotomy. We can teach computer skills as well as math and science and reading and all the rest. I agree that all students don't need to become master hackers, but I think a bit more computer literacy, taught young, isn't a bad idea. And I'm sure they can find time to squeeze that in without disrupting the other subjects.
Stasis is death. Embrace change.
Our industry is founded by people who have the urge to learn to code, one key at a time, and spent many months, often years, to upgrade their skills
They did not have to be 'caught' by others - they are successful because they are self-motivated
To say that those 'rounded ones' needed to be caught is thus a misnomer --- as many of those awaiting to be caught do not possess the self-motivation to be successful in the first place
Muchas Gracias, Señor Edward Snowden !
Human knowledge is doubling at about every three years. That implies that we need to cram a lot more education into our students which is a difficult if not back breaking demand. Obviously nations like Japan traditionally are quite severe in the demands put upon children. Americans would see their system as child abuse. But against that we have a strong counter point. If you want great trumpet players you must train many thousands of trumpet players for several years for the great ones to rise from the mundane players. Programming should be about like that. If we train 30 million young people to very high levels of programming we will see programming super stars emerge. We very well may need those super stars to survive as a nation. If that seems extreme then simply consider that drones use a lot of computer programming and if an enemy has and edge your drones are dead meat. Our air craft will soon fly without humans on board. Naval war ships are being designed to operate without human crews. There is no way to send reliable messages from afar to such war weapons. It has to be done by heavily protected, internal computers. Programmers will need to have the highest level of skills to keep us ahead of other nations.
If someone tells you 'coding is the new literacy' because 'computers are everywhere today,' ask them how fuel injection works
I'm a system programmer/administrator w/30 years experience *and* i know how fuel injection works - port and direct. Knowing at least a little about a lot of things has helped me in my life and career more than, I believe, would have knowing a lot about a few things. Along with that, and perhaps more important, is really, actually knowing your limits.
It must have been something you assimilated. . . .
There's nothing wrong with basic exposure to computer science. But it should not come at the expense of fundamental skills such as reading, writing and mathematics
But so many people struggle to see what the point is of the math they learn beyond arithmetic. But if they had a semester/year of programming before taking algebra, many of the struggles that they have with math between arithmetic and calculus will be gone. Teachers won't need to think of story problems to try and help students realize that math is used. The students will already know how to apply many mathematical principles because they've used them, or see how they can be used, in their programs.
"You can't outsource a mechanic's job because he needs to be where the cars are."
But you can reduce them to minimal wage parts exchangers and button punchers and that's exactly what's happening.
Learning programming is worthwhile for the logical thinking skills it involves: I'm all for making it available. The problem is that putting such an emphasis on it, at the expense of other useful subjects, is going to backfire for those who can't learn it.
It's not PC to say so, and there are lots of "experts" who insist it ain't so, but programming is a talent that not everyone has. Anyone who has been in the business knows that, unless they never interviewed new people and never worked with anyone who hadn't already proved themselves. Anyone who went to college for CS knows that: there are always good students who try but just can't be taught to do the work. Genetic, or some unknown environmental factor, or whatever, it's a fact beyond debate.
I have no idea what the percentage is in the general population, but there are going to be smart, productive people who can't do this particular thing, and they're not only going to be wasting their own and their teachers' time, but they're going to be labeled as failures because of something no one can change.
well the problem with him is that he separates what coding is used for from coding.
the correct counter question would be: you really want a fucking all mechanical fuel injection system in your car and not a computer controlled one? is he not aware how much better the fuel injection system is if you can sequentially correctly program more complex fuel patterns that rely on more data read from sensors?
world was created 5 seconds before this post as it is.
Programming is a practical application of math, you could probably substitute it for formal proofs with no ill consequences (the point in both cases is to teach logic, but programming is more useful.)
I'm a signature virus. Please copy me to your signature so I can replicate.
You'd have to learn to think clearly AND how to interact with others that are disagreeing with you.
The computer doesn't care how you interact. It can't go soft on you. It works or it doesn't.
Soft human logic can be useful too, but that hard computer logic can be revelatory. And you get soft interaction logic a lot of other ways through life, hard computer logic not so much - or at least, through a dark filter as a user of computers. Programming gives you such a greater clarity of what logic demands.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
That's interesting, I don't have many memories of being forced to play team sports. I do remember a lot of individual running, jungle gym type stuff when I was younger, and chip ups when older. Occasionally we would play some "Chinese wall" game or something, but only do I remember dodge ball or basketball being mandatory like once each in my entire academic career in public school. Perhaps being forced to play team sports instead of more personal physical activity is the cause of many people's hate of P.E./sports (which would seem like two separate categories).
If someone in a role is is important to the success of the company, then you can't do without someone in that role.
There's an annoying difference between being important enough to be refused time off, because someone doing that job has to be there, and being important enough to be given more instead of just replaced when the problem is raised.
It's a common thing that if a place is mismanaged badly enough that only one person can do a job that they will be such cheapskates that they will just replace the complaining single point of failure with a different one.
"Growing a spine" may mean being prepared to walk out of the place without getting a chance to clean out your desk or get tools. It's not as simple as the sitcom or movie scenario suggested by turbidostato above. Hero in your own mind perhaps but replaceable work unit number 43 to HR.
it's especially stupid as if you're tuning a custom fuel injection then you're using a laptop to adjust it.. and it certainly would benefit the guy doing it to know wtf he is doing.
world was created 5 seconds before this post as it is.
Russia had mandatory CS classes for 30+ years. Look at where are they now
We don't need coders -- We need people who know how computers work.
We need classes to teach people what the difference is between the OSes. We need people to know what https is. We need people who know why to VPN, what security is, and how to protect their info on the internet. We need anti-phishing anti-419 courses. Indeed, teaching C/S to the English teacher is wasted, but perhaps they knowing how the internet works is not lost?
Yes, there are a few programmers who teach themselves. But for the most part I suspect it's like most skills - we develop as we go along, absorb good and bad habits. Enabling a few more to engage with being a programmer to the point where it's conceivable must be a good thing. We need 'ordinary' programmers, as well as the hobbyists who taught themselves and are self starters.
On the basis that you had holiday owing? That sort of organisation deserves to be given a VERY hard time by its slaves when they can get to revolt.
... but I know enough about scales that I can find the notes and I also know that they are historically grown - much like the computer keyboard. I also can sing and recite some classic songs from Schubert and Loewe. I learned all this in school, in regular music class. I also learned poetry and what a jambus rythm is. These are all small but valuable cornerstone of my education.
Long story short: No one in his right mind expects everybody to be able to code a well-architected appserver or an asynchronous website that runs on all browsers or whatever. Or, hell no, how to deal with those bazillion quirks modern IT comes with. ... That is the job of people who are grown up and earn their money with this sort of thing.
What people should learn in school is the difference between a variable and a value and a constant/literal. They should also have some basic concept of a digital network such as the internet and what a client and a server are and what their differences are and how these two relate to each other. CUAS and a few regular expressions or simply knowing that such things exist would be neat too. If they can write an if statement and roughly know how a function looks in some easy but useful PL such as Python - that would be something someone knows after having "accelerated IT" in school as a kid or something.
The big problem is that even professionals today don't know the CUAS, don't know how to use the clipboard or that a computer is there for automating stuff and that somewhere within their word processor there probably is some function for a more adanced search & replace. This is the problem we have to fix. If members of the bundestag are to dumb to handle computers and the entire site gets infected by malware and bots - that's an exact result of people not even learning the very basics of computing - something someone would learn in less than two hours in their initial lesson with a computer professional.
Bottom line: Proper computer classes in school won't magically transform society into an utopia, but teach children the very basics of how to handle computers and smartphones and tablets and "cloud-services" correctly. And that would be a very big plus.
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
It's been interesting over the years watching the industry trying to establish qualifications and standards, and seeing them look very silly because technology advances overtake the rules that used to provide the basis for those rules. For example once upon a time there were very separate categories of programmers and systems designers. This was because programming screens and reports took a LONG time - so the designer drew pictures of what the screen or report should look like and left the programmer to produce them over the next month. These days that sort of thing takes minutes, so there's no point in separating the roles. Of course this does mean that unsociable geeks get to be expected to interact with clients - which may not be the best experience for either side; be nice to your uber-geek - they get you out of holes...
It's ridiculous to think that they are forcing kids to learn computer science. Not everyone wants to go that route. Personally, if I had been forced to do electronics, physics, etc. I'd be put off so much by school that I would have dropped out early to get a job. At the end of the day early school (primary/high) counts for very little in prep work for the real world. In all honesty, you're better of dropping out early and heading to TAFE for a year or two to specialize more in the field you wish to get a job in and then hitting up Uni afterwards (if needed).
Just like music, language skills and art, programmers benefit from learning core computer science skills in early childhood.
Sure, an adult can learn these things. Will they ever be as good? Will an adult who learns how to play violin in adulthood ever be as good as someone who learned as an adult? No.
However, we live in a technology-driven society now, and unlike where the value of the occasional child violin prodigy could be questioned, there is no question that if even one child out of the thousand who take these introductory computer science classes excels at it, the world-changing innovations they could potentially achieve make the entire exercise more than worthwhile.
Also, if you asked a plumber if everyone should learn plumbing, or a mechanic if everyone should learn how to fix their car, they would similarly say no -- it's in their vested financial interest to keep the field small.
I don't know why large publications / websites keep giving these people oxygen in the face of such an obvious conflict of interest. Ask a computer science professor from a respected college if THEY think kids should learn these skills and I guarantee you'll get a different answer.
It should be obvious to most on here why a car analogy fails in regards to opportunities with programming and automation.
Also, you might notice that:
- regarding cars: currently only a few big motor companies are making money by *making* cars. Most of the other people that make money with cars, make that money by *using* car. You don't need a special custom car built for your business.
At most, you need your company/start-up/mom-and-pop-shop's logo on the car, and that's about it.
Thus from that point of view, indeed teaching all student how ignition works isn't the most critically important skill.
- regarding computers: that where the difference starts. Not only do big companies make money by *writing* code (Google, Facebook, etc.). Also all the small player that make money with computers need some kind of specific code.
Start-ups, small shops, etc. usually need at least some solutions custom developed for them. Might be as simple as a webshop setup for a small familial business, might be an ad hoc web platform for a new kind of service.
The company/start-up might not do it all on their own, but they at least need to have a vague idea about what could be done, and there's need for someone to actually write/develop the thing in the first place.
In short, against the car analogy: it seems there's a lot more money to be made by small entrepreneurs by harnessing their ability to develop an App or a web platform, than by harnessing their ability to understand how ignition works.
Now, you have to factor a few other things in the mix:
- IT jobs are the first that companies try to outsource. (with variable success. but that won't prevent that the company will first thing to hire someone in new dehli before thinking of hiring junior who happens to have learned coding in school and has some experience making apps)
- technician able to fix cars are required where the cars are physically present. Mechs able to fix cars aren't going to be easily outsourced.
So in a way Jeff Artwood was right but for a reason he didn't think about: kids need to have an idea about coding as much as they do need to have an idea about a car's internals: both might get handy.
- There's still tons of money to be made by small entrepreneur designing App, webservices, etc.
- There's job security in being able to fix cars.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
A thing my CS professor liked saying was: "Computers are stupid, they only do thing people tell them to do". Having an understanding that a computer isn't a magic box but a machine humans developed using methods that utilize patterns that seemingly are alien to the human mind would be more helpful.
Still,some basic programming skills should help understanding that computers are bloody fast at processing repetetive tasks but still won't do anything that someone from the CS field would call intelligent.
My teenagers were taught how to drive in (taxpayer funded, feeder pattern, majority-minority) public High School. They were also taught epistemology - and also how fuel injection works, and also basic coding...
Apparently kids in the elite schools don't get a thorough education? Weird. Guess they don't need it, though.
Writing a simple script is more of a skill than checking your oil. Its more like changing your oil. You don't have to be an automotive expert to do it, but you need more than a trivial understanding of what you are doing.
Ninjas don't carry tic tacs
There should be enough CS in the general eduction system to do two different things: give all students an appreciation for what software can and can't do and how it works, while identifying and channeling the small number of people who will be able to take it up as a career.
I don't expect most of those people learning how to code to actually become professional programmers. But as they will be using and working with software a lot, it would be useful for them to have an idea of how code is compiled and executed by the processor. Like it's good to understand why a combustion engine needs fuel and why the different types of fuel matter. We don't all have to be mechanics, that stuff changes anyway, but the basics are useful.
Thank you, Bradley Manning, Edward Snowden and so many others, for courageously defending humanity, my freedom and more!
Since no one else is saying this exactly:
Yes, we should absolutely teach our students how a car works, and how to repair it. They will almost all need cars. They will almost all have cars. All of those cars will break down in some way, at some point.
If, as today, they don't know how the car works, they're going to get cheated by the mechanic. Mechanics try to charge you the most money possible every time you visit them. That is what they do. Even the relatively honest ones use bad statistics to get you to spend money to avert the very low-probability future risk of some relatively minor future inconvenience. The really crooked ones will eat you alive. It happens all day, every day.
It would be an excellent use of education funds to have a one-semester class on how to diagnose car problems.
I didn't become a better programmer until I learned and mastered algebra. In particular, functions (i.e., f(x) = x + 1). I understood mathematical functions better than computer functions. Technically, they're the same. The mathematic instructor explained it better than the early computer courses that I took.
1) computer science does not equal coding
2) shop class, including some automobile repair, was a required course in my high school. Also home ec. Both have come in handy, although I am not a professional mechanic or seamstress.
3) computers, including some coding, was also a required course when I was in high school, twenty some years ago.
One can only hope that the managers are now employed in posts more suitable to their level of skill, like road sweeping.