чи все вивчати програмування?

Пропоную вашій увазі переклад статті «Should Everybody Learn to Code?», яка здалася мені цікавою.

imageЩоб перевірити, чи зможуть професійні графічні дизайнери написати просту комп'ютерну програму, Брайан Дорн, в той час студент магістратури в Технологічному інституті Джорджії (Georgia Tech), попросив їх прочитати і відредагувати фрагмент програмного коду. Дорн хотів зрозуміти, чи зможуть вони самі розібратися — як автоматизувати роботу в Adobe Photoshop. Дизайнери стали шукати інформацію в Інтернеті і, на жаль, у багатьох випадках вводили невірні пошукові запити: наприклад, намагалися розібратися з Java, коли насправді їм був потрібен JavaScript для цього конкретного проекту.

Це могло бути пов'язано з відсутністю загального базового розуміння комп'ютерних і програмних структур», писав Дорн в журналі Communications в травні 2011 року.

На думку його наукового керівника, професора та директора програми Контекстуализированной підтримки в навчанні в Школі інтерактивної обробки даних Georgia Tech Марка Гуздайла, результати цього експерименту показують, що «є багато людей, яким потрібні знання в комп'ютерних науках… і які будуть використовувати їх у житті, але вони ніколи не вивчали цю дисципліну, і їх самонавчання проходить неефективно, що призводить до втрати часу і мотивації».

Всі фахівці, що мають справу з аналізом та обробкою інформації, або «займаються роботою, для якої необхідно вищу освіту», повинні знати, як читати код, який може їм знадобитися, і вміти адаптувати його.

Багато шановні діячі від колишнього президента США Білла Клінтона до творця Facebook Марка Цукерберга і фізика і космолога Стівена Хокінга публічно заявляли про те, що базові навички програмування необхідні всім в сучасному світі. «Вміння програмувати стало четвертою складовою грамотності. Кожен повинен знати, як наш цифровий світ працює, не тільки інженери» — вважає Марк Серман, виконавчий директор Mozilla Foundation. Його цитати, які відстоюють цю позицію, як і схожі цитати багатьох інших знаменитостей, є на сайті ініціативи code.org.

Згідно з прогнозами Бюро трудової статистики США, зростання попиту на ІТ-фахівців та професіоналів з технічною освітою складе 34% до 2019 року. Багато фахівців вже в тій чи іншій мірі пов'язані з програмуванням. Гуздайл наводить дані дослідження Університету Карнегі-Меллон 2005 року, яке передбачало, що у 2012 році з 90 млн. працюючого населення в США понад 55 млн. будуть використовувати електронні таблиці та бази даних, що можна вважати елементарним програмуванням.

Дослідження Університету Карнегі-Меллон також показує, що багато людей займаються програмуванням, не усвідомлюючи того: наприклад, створюючи макроси в електронних таблицях або роблячи запити в базах даних з використанням SQL. «Отже, багато фахівці будуть мати справу з програмуванням» — говорить Гуздайл, — «і дані наших досліджень про те, як люди вчаться програмувати, і про їх типових помилках, показують, що базові знання комп'ютерних наук були б дуже корисними для подальшого самоосвіти».

Багато з тих, хто уникав курсів з природничих дисциплін і математики у коледжі зараз відчувають великі труднощі при самостійному вивченні програмування, говорить він. «На скільки більше людей використовували б програмування в своїй роботі, якщо б ми їм трохи допомогли? Ось цікаве питання».

Що вам треба вивчити

Кожен повинен освоїти «computational thinking»(1) — так вважає Жанетт Вінг, корпоративний віце-президент Microsoft Research і в минулому — професор комп'ютерних наук в Університеті Карнегі-Меллон. «Computational thinking» допомагає людям мислити абстрактно і розділяти завдання на невеликі частини. Програмування — це один із способів навчитися цьому навику, вважає Вінг.

«Це не означає, що кожен повинен освоїти якусь мову програмування, як Python або C++, хоча багато хто ставлять знак рівності між програмуванням і набором коду,» — каже Вінг. Навпаки, варто сконцентруватися на вивченні досвіду вирішення завдань в комп'ютерних науках, аналогічно тому, як ми вчимося розв'язувати математичні та інженерні завдання. Написання програми — це спосіб явно висловити дії, які людина або машина можуть виконати. «Більш фундаментальний навик, пов'язаний з критичним мисленням, — це computational thinking, необхідний для того, щоб зрозуміти код, який потрібно написати».

Інша точка зору

Зовсім інакше дивиться на питання вивчення програмування розробник ПО Чейз Фелкер, автор статті в журналі Slate «Можливо, не всі повинні вчитися програмувати». «Якщо чесно, одна думка про те, що можна навчитися програмувати за рік викликає у мене здригання: я був би в жаху, якби для мене писав програми хтось, хто закінчив лише кілька класів. Не тому що він (на жаль, більшість програмістів — чоловіки) вивчив щось не так, але тому що занадто багато чого він ще не знає».

Визнаючи, що деякі його колеги успішно вивчили програмування самостійно, і що для вивчення програмування не обов'язково вчитися в університеті, Фелкер вважає, що людям потрібне щось більше, ніж просто запам'ятовування основ, їм необхідно розвинути певний тип мислення.

«Якщо ви не мрієте стати програмістом — і значить не готові присвятити багато часу на його вивчення, не важливо самостійного або в навчальному закладі — я не розумію, навіщо вам вчитися писати код». — пише Фелкер. «Так, це цікаве заняття, в основі якого лежить вміння розв'язувати задачі, та елегантні вирішення цих завдань, які з часом починають у вас народжуватися, принесуть вам багато задоволення». Тим не менш, Фелкер вважає, що всі, хто вивчають програмування поверхнево, навряд чи зможуть застосовувати ці знання в житті.

У відповідь на заяву мера Нью-Йорка Майкла Блумберга в 2012 році, що він почне вивчати програмування, програміст Джефф Етвуд, автор блогу Code Horror, задає питання: "… чи можете ви мені пояснити, чому Майкл Блумберг став би більш ефективний у своїй повсякденній роботі по управлінню найбільшим містом в США, якщо б він прокинувся одного ранку першокласним Java-розробником?". Програмування важливо, погоджується Етвуд, однак і багато інші важливі навички. «Я б не радив всім вивчати програмування більше, ніж, наприклад, слюсарне або водопровідне справа».

Рух «кожен повинен вчитися програмувати» невірно з кількох причин, на думку Этвуда. Воно базується на припущенні про те, що «чим більше коду в нашому житті, тим краще». Код стає самоціллю, таким чином метод ставиться вище завдання.

«Суспільство та уряд отримали б більше користі від базового розуміння того, як працюють комп'ютери та Інтернет… Вміння користуватися Інтернетом стає основоположним навиком, і ми спочатку повинні подбати про такі елементарні речі, перш ніж прийдемо до набагато більш складного програмування».

Гуздайл очікує, що з боку програмістів може бути опір його ідеям. «Я не пропоную всім писати код професійно. Я б хотів, щоб кожен закінчував університет, будучи здатним написати 10 рядків коду, які потрібні саме їм». Зміст навчання програмуванню у вищій освіті — навчити студентів певного рівня комп'ютерної грамотності, включаючи здатність мислити в термінах коду і розуміти, що код може бути корисний.

Комп'ютерні науки в освіті

Фахівці в сфері комп'ютерних наук вважають, що США вже занадто довго відкладають введення базової освіти з дисципліни в середньому освіті. «Багато країн розробили і впровадили національні програми з навчання комп'ютерним наукам у школах, щоб краще підготувати учнів до нової глобальної економіки. Проте децентралізована система прийняття рішень в освіті США сильно стримує спроби введення стандартів програми з комп'ютерних наук». — йдеться в доповіді 2010 року «Addressing Core Equities in K-12 Computer Science Education».

На думку Гуздайла, найбільша проблема в навчанні комп'ютерних наук у США — це нестача вчителів. За його оцінками, в країні близько 30 000 старших шкіл, однак лише близько 2000 вчителів, що володіють достатнім рівнем кваліфікації.

Діти вже в 5 років можуть навчатися програмування. Питання в тому, чи варто на це витрачати час в такому віці. Сумніви викликані тим, що когнітивні здібності, необхідні для навчання програмування, такі як здатність до абстрактного мислення, зазвичай розвиваються у дітей до 12 років.

Гуздайл вважає, що комп'ютерні науки мають викладатися в школі, але не у віці 5-6 років, враховуючи сучасну ситуацію: лише 12% старших шкіл в США пропонують класи з комп'ютерних наук, і набагато менше середніх і початкових шкіл, що створює великий часовий розрив. «Діти швидше всього не зіткнуться з програмуванням ще довго після 5летнего віку, навіщо тоді давати їм цю інформацію в такому ранньому віці?»

Вінг також вважає, що вивчення програмування у віці 5-ти років може бути недоречним, проте діти вже в 5-6 років можуть вивчити базові концепції, точно також як вони вивчають арифметику. Підростаючи, вони дізнаються й інші концепції — що таке алгоритм, як представляти дані, різні підходи до аналізу, вважає вона.

Перспективи

Поряд з читанням, листом, основами математики та природничих дисциплін, комп'ютерні науки можуть стати стандартною складовою шкільної програми. На думку багатьох експертів, це буде великий крок вперед. Складність проблем у світі зростає з кожним роком, і системи, які нам доведеться створити для їх вирішення, зажадають розвинених навичок «computational thinking», таких як абстрактне мислення, декомпозиція і композиція, вважає Вінг.

«Я б ввів трохи програмування в кожен клас з природничих наук, математики і мистецтва, може бути, навіть з англійської мови» — говорить Гуздайл. «Вивчення комп'ютерних наук у старшій школі має бути доступне для всіх, так само як наука і математика».


(1): Термін computational thinking з'явився відносно недавно, в 1996 році. У російській мові на даний момент його немає усталеного перекладу (як правило, для перекладу використовується більш широке поняття «математичне мислення»). Далі у цьому тексті ми будемо використовувати англійський термін.

Від перекладача

Особисто мені близька думка, що в сучасному світі для всіх буде корисно вчитися програмування. І навіть якщо в майбутньому програмування не буде вашою основною діяльністю, це дозволить сформувати навик computational thinking, який буде корисний для абсолютно різних професій.

Я навчаю програмування і алгоритмам студентів-біологів в Інституті біоінформатики. Досвід показує, що для освоєння програмування зовсім необов'язково мати якийсь серйозний математичний або технічний бекграунд, головне — почати, і все поступово прийде.

У зв'язку з цим, радий анонсувати, що ми з Інститутом біоінформатики запустили онлайн-курс на платформі Stepic для навчання програмуванню «з нуля» на мові Python. Перший дедлайн за завданням буде на наступному тижні, 24 листопада, тому записатися на курс ще не пізно! Упор в курсі зроблений не стільки на конструкції мови Python, скільки на формування алгоритмічного мислення через рішення задач на програмування.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.