30 хвилин, щоб пояснити програмування 15-річному [закрито]


100

На наступному тижні я зголосився сісти і поговорити про життя та роботу розробника зі студентом із 15-річного досвіду роботи.

Улови це

  • У мене всього півгодини, і
  • Я буду лише одним із людей, що розмовляють з нею - інші люди, що займаються різними ролями в бізнесі, також будуть перебирати елементи своєї роботи з нею протягом дня.

Що я повинен висвітлити, і що на землі можна сподіватися навчити її всього за півгодини?

Я припускаю, що вона, мабуть, не має досвіду розробки або програмування.


158
Це пригнічує, наскільки багато з цих відповідей ставляться до дітей - у них короткий проміжок уваги, вони не розуміють речей, якщо вони не зорові, вони не можуть впоратися ні з чим складним. Тут ми говоримо про п’ятнадцятирічного віку. П’ятнадцятирічні люди цілком здатні розуміти і робити складні речі, витрачаючи години, глибоко вникаючи в щось, і маючи абстрактні думки. Я б взяв розумного п’ятнадцятирічного віку над будь-яким із вас, чморів!
Том Андерсон

8
@tom З іншого боку, я особисто переживав, як більшість дорослих навіть щось, окрім візуалів на комп’ютері, знаходить як нудне. Це залежить від малюка і того, наскільки вони цікавляться комп’ютерами.
поштовх

6
@jh: Хе! Думаю, питання полягає не в тому, чи є цій людині п’ятнадцять, а в тому, чи вони розумні і допитливі. Ми, можливо, всі (забороняючи Макспм) зараз старі даффи, але колись нам було всі п’ятнадцять, і я швидше за все сумніваюся, що ті з нас, хто розумні та допитливі дорослі, були тупими і незацікавленими підлітками.
Том Андерсон

33
"Спочатку я приходжу на роботу трохи після 10 ранку, випиваю багато кави, ганяю її за допомогою гірської роси та енергетичних напоїв. Наступні 2 години я переглядаю пошту, обмінюючись рецептами з єдиною розробницею жінки в вся будівля, потім короткий дрімоту після обіду. Встаньте, ще раз перевірте електронну пошту, перегляньте youtube для котячих відео, знайдіть останні свіжі комікси про ділберт та smbc. Перш ніж ви це дізнаєтесь, його 4:30, час їхати додому. Я не можу багато чого зробити, але 100 програмістів збирають дог однаково щодня 3 роки, ну ось так народжуються відеоігри ".
Джульєтта

5
@Tom: точно. Багато програмістів почали ще до 15 років, тому я не розумію поблажливості.
Ніл Г

Відповіді:


130

Я багато спілкуюсь з вузами, тому досить часто відповідаю на це питання. Майте на увазі, що 15-річним людям набагато простіше пояснити програмування дітям, ніж 50-річним, тому вам не потрібно дурити речі або використовувати надумані аналогії.

Я зазвичай починаю з прикладів, що таке програми:

  • Такі програми, як iTunes, Photoshop, Chrome та ігри, включаючи консольні ігри.
  • Такі ОС, як Windows, Mac OS, iOS iPhone, Android. (Повірте, вони будуть знати, про що ви говорите.)
  • Програми, які стискають числа або вирішують дійсно складні математичні задачі - симуляцію погоди, біологічні симуляції, обчислення пі, AI, обробка мови тощо.
  • Більшість складних веб-сайтів передбачають і програмування.
  • Торговельні автомати та банкомати, транзитні мікрохвильові піски та холодильники, навігація автомобілів.

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

Тоді вони зазвичай запитують, чи я весь час за комп’ютером, чи тому я завжди в Facebook, і чому очі ще не погані. Хлопці запитують, чи я знаю, як "зламати людей", а дівчата запитують, чи це хороші гроші чи скільки дівчат на уроках інформатики.

Після цього, якщо вони все ще зацікавлені, вони зазвичай починають задавати конкретні запитання, на які набагато простіше відповісти (або, принаймні, на Wiki): такі речі, як, як би ви зробили гру, як працює Windows Messenger і т.д.

Якщо у вас є комп’ютер, ви можете показати і розповісти якийсь код - щось, що матиме відчутні ефекти, як, наприклад, обробник натискання кнопок у діалоговому вікні налаштувань Firefox, головний цикл або код фізики в ігровому двигуні, деякі Джерело JavaScript з веб-сайту тощо.


73
Дякую, що нагадали, що пояснити програму дитині може бути простіше, ніж пояснити це дорослому. Я постійно забуваю, що вони ніколи не були оточені комп’ютерами.
поштовх

12
хахаха, я все це отримую, якщо ви знаєте, як "зламати людей" хахахахаха
Джон Коннеллі,

3
@jhocking Я також думаю, що багато з них яскравіші, ніж у більшості ідіотських поколінь. Якість убік, чиста кількість прочитаного ними тексту обов'язково принесе користь.
Рей Міясака

4
@rei: Ну, я розвинув соціальні навички, і я вважав, що це заслуговує уваги на увагу, яку отримували нечисленні жінки в тих класах ... Це було цілеспрямовано, але ... насторожує. Якби це я, я б біг кричати. Будучи в оточенні орди спітнілих дихальних ротових апаратів, це може бути поворотом для будь-якої нормальної людини, тому або вам доведеться сподобатися увагою, або вам доведеться дуже сподобатися comp sci. Тож мене, звичайно, не здивувало, що жінок було так мало. Я думаю, що в менших школах це не так жахливо.
Satanicpuppy

4
Ну, я, як правило, затримуюсь хоча б на п’ятнадцять хвилин, а, я використовую бічні двері - таким чином Ламберг не може мене побачити, хе-хе - і, е, після цього я просто розбираю простір приблизно на годину. Так, я просто дивлюсь на свій стіл; але схоже, я працюю. Я роблю це, мабуть, ще годину після обіду. Я б сказав, що за даний тиждень я, мабуть, займаюсь лише п’ятнадцять хвилин реальної, фактичної роботи.
teambob

73

Я пояснив це моєму п'ятирічному віку з наступним:

Я: "Ви знаєте, як в оповіданнях люди говорять чарівні слова і змінюють речі у світі?"
Її: "Так?"
Я: "Ось що таке комп'ютерне програмування".
Її (тихо): "Вау".

15-30 хвилин недостатньо, щоб пояснити щось реальне, а пояснення основної складності - це вірний спосіб змусити їх бігати криком. Ти працюєш у ньому щодня, забуваєш, як це чортово класно. Жодна інша професія у світі не створює функціональних речей із нічого, окрім слів ... У якийсь момент всі інші повинні вийти у світ м’яса та почати бити по речах молотком. Це єдиний спосіб вони перетворити свою ідею на робочу річ.

Не ми.


77

23
"Жодна інша професія у світі не створює функціональних речей із нічого, крім слів", - роблять контрактники та законодавці.
Том Андерсон

48
@Tom Вони, ймовірно, обмежують функціональні речі більше, ніж вони створюють.
Maxpm

16
@tom: Ні, вони цього не роблять. Юридичний короткий опис - не більш функціональна річ, ніж історія чи вірш. Закон - це як концепція: він викладає ідею, але тоді хтось повинен вийти у світ м'яса та виконувати його. Але код? Я міг би написати програму для купівлі чи продажу акцій, виходячи із власної внутрішньої логіки, і я б пішов робити це без зайвого вкладу. Я міг би написати один, щоб керувати воротами з повені, перенаправляти електроенергію, включати чи вимикати світло залежно від часу доби. Це унікально серед професій.
Satanicpuppy

15
@Satanicpuppy: Ні, ви не могли написати програму, яка б робила будь-яку з цих речей. Електронний інженер міг би створити комп'ютер, який міг би їх робити. Якщо ви запитаєте добре, можливо, він, можливо, змусить його вийти у світ м'яса та застосувати ваші програми.
Том Андерсон

56

Людина 15 років може зрозуміти будь-яке поняття. Я сам почав програмувати у 14 (у школі, багато-багато років тому)

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

  1. Знайдіть ПК, підключений до Інтернету. (веселіше, якщо це не ваше, і навіть більше, якщо це її)
  2. Перейдіть на сторінку http://api.jquery.com/jQuery.getJSON/
  3. Прокрутіть сторінку вниз і знайдіть HTML-код для прикладу котів .
  4. Виберіть HTML-код і скопіюйте його.
  5. Перейдіть на сторінку http://jsdo.it і натисніть кнопку Почати кодування .
  6. Відкрийте рахунок, використовуючи свій OpenID. (процес в один крок)
  7. Виберіть вкладку HTML на панелі ліворуч і вставте туди.
    • через секунду на правій панелі з’явиться купа котів
  8. Виріжте javascript і вставте його на вкладку JavaScript . (для виділення синтаксису)
    • за секунду коти автоматично оновлюються на правій панелі
  9. Шукайте властивість тегів у javascript та змініть його на "dog".
    • з’являється купа собак
  10. Змусьте її сама повторити процес з іншими тегами на свій вибір.
    • запропонуйте їй спробувати два теги, розділені комою
  11. Змініть рядок "if (i == 3)" на "if (i == 5)"; нехай вона усвідомлює це
    • зараз є 6 зображень, а раніше було 4
    • було б краще, якщо число в коді збігається з номером на сторінці
  12. Виправте помилку разом (поміняйте відповідний рядок та попередній)
  13. ...

1
Або ви можете використовувати jsfiddle, не потрібно підписуватись: jsfiddle.net/WXVra
rjmunro

найкращий! codecademy.com
ривок

26

Кроки

Як майже 15-річний я можу з упевненістю сказати, що ви повинні мати вражаючий старт.

  1. Поясніть, що роблять програмісти. (Ігри, тренажери.) Покажіть щось круте, що ви зробили. (На комп’ютері. Будь ласка, не командний рядок - це, здається, лякає всіх.)
  2. Поясніть, як ви це зробите.

    • Скажіть їм, що не друкуєте 10101010цілий день. Скажи їм, що ти навіть не знаєш, як це зробити. ( Lie. Ви ж знаєте , що 10101010означає, правильно;)) Скажіть їм , що це було кілька років тому.
    • Запустіть свій IDE. Переконайтеся, що це виглядає круто - MSVS2010, QtCreator і NetBeans - це все добре. Обов’язково видаліть кілька зайвих речей, щоб вони виглядали менш залякуючими (менше меню), але збережіть візуальні ефекти.
    • Покажіть їм зразок деякого псевдокоду. Полегшіть розуміння:

      Display Window
      Display "I like cheese!"
      Display OK button
      
      If user clicks OK button, close Window
      

      Пройдіть цей крок за кроком. Скажіть їм, що це не зовсім так, як виглядає код. Код виглядає так English + Math. Але вивчити "мову" (читай: синтаксис), на якій ти розмовляєш, не важко.

    • Покажіть їм приклад з трохи більше "математики", цього разу.

      User inputs A
      User inputs B
      
      C = A + B
      
      Display C
      

      Поясніть, що цей код додає два числа разом, як калькулятор. Покажіть їм "справжній" код для цього. (Переконайтесь, що основну частину користувальницького інтерфейсу та інших речей ви кладете в окремий файл, а файл, який ви їм показуєте, короткий і простий.) Змініть його на програму віднімання (змінивши знак з +на -) прямо перед їхніми очима.

  3. Поясніть, що вони повинні знати для програмування. (На різних рівнях.)

    • Основні навички алгебри, як, якщо x + 1 = 2, тоді x = 1.
    • Навички вирішення проблем.
    • ["Advanced"] Математика вищого рівня. Це для програмістів, які працюють в таких місцях, як NASA.

Терміни, які ви можете використовувати

Ми знаємо більше, ніж ви думаєте.

  • Facebook, Twitter, соціальні мережі
  • Windows, Mac, Linux
  • Дизайн, швидше, тестування, запуск / запуск

Терміни, які ви повинні пояснити

Так, нам ще потрібно пояснити деякі речі.

  • Компілятор: Перетворює код (наприклад, крок 2) у 10101010.
  • Мова програмування: виглядає як приклад на кроці 2.

Терміни, які ви не можете використовувати

Деякі з нас знають цей матеріал, але будь-ласка, не кажіть цього.

  • Будь-який тип "системи", крім операційної системи
  • Оптимізація, аналіз (ой о)
  • Введення / вихід (якщо вам потрібно використовувати це, спробуйте зробити це максимально просто)

Шукаєте "крутого" IDE? Не шукайте далі Xcode.
Алан Зейно

2
@Alan Zeino ви маєте на увазі Emacs.
праворуч

Мені найбільше подобається ця відповідь. Я думаю, що хтось, хто взявся за цю проблему, досягнув би більше, ніж хтось, працюючи на інші (також якісні) відповіді на це питання.
TehShrike

17

Якщо ви почнете говорити про такі речі, як процес, закономірності, вимоги тощо, вона негайно закриється. Діти сьогодні є графічними та візуально мотивованими, тож я хотів би запропонувати щось, що допоможе просувати ці типи стимулів. Покажіть їй щось запаморочливе в Інтернеті, а потім на високому рівні опишіть їй, що змушує цього статися. Я б навіть запропонував взяти ваш ноутбук для розробки і зробити щось "круте" на екрані - змінити код перед нею, а потім спостерігати, як він змінюється на екрані. У цьому віці вони ДУЖЕ розумні, і все, що візуально допоможе викликати інтерес.


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

1
Якщо говорити про візуальні матеріали, як щодо показу їй невеликого відео чи програми Alice?
Карлос Кампдеррос

9
@Carlos Як 15-річний я особисто можу засвідчити, що я ненавиджу Алісу з палкою пристрастю тисячі сонців. Це, мабуть, тому, що я вже вмію програмувати. Я не впевнений, як це бачать усі початківці.
Maxpm

1
+1 для "змінити код перед нею, а потім спостерігати, як він змінюється на екрані" - почніть з показу прямого зв'язку між "справжньою" річчю та кодом за нею. Щось помірно глибоке, як сортування чи запит деяких даних, а не просто налаштування трохи JSP або форматування рядків. Зробіть це з'єднання, а потім вибудуйте з нього.
Том Андерсон

1
Можливість змінити вигляд програми лише за допомогою декількох рядків коду - це те, що мене напрограмувало багато років тому - дякую за пропозицію
Dexter

13

Є дві чудові аналогії, на які я покладаюся, пояснюючи роботу програмістів. Один - це рецепт; ця метафора корисна для пояснення в невеликому масштабі, що робить кожен рядок коду. Робота програміста - це написання рецепту, а комп’ютер - кухар.

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


8

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

У моєму випадку я розробив навчальний веб-сайт із навчальним відео, де інші співробітники публікують навчальні матеріали. Я б пояснив мотивацію проекту (навчаю інших дистанційно, не зв'язуючи людей), проблеми, з якими я стикався (я не обов'язково розглядаю їх як важкі проблеми) та те, як я їх вирішував. Я б також розповів про те, чому мені подобається програмування в першу чергу: я люблю створювати речі та внесок програмування в сучасний світ.


8

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

Потім поясніть, що ви допомогли це написати. Перейдіть частини, які ви написали. Покажіть якийсь код, якщо можете. Накресліть, як ці рядки коду складають деяку частину програми.

Поговоріть про те, яку насолоду ви отримуєте від того, що люди бачать ваш код.

Ось так я це все одно пояснив своєму 14-річному двоюрідному братові. Він був дуже вражений і вирішив наступний термін взяти клас програмування.


5
Це добре працює, якщо ви працюєте над програмним забезпеченням, яке виглядає круто для непрограмістів. Багато моїх останніх проектів живуть в базі даних і "виглядають" як командний рядок (і навіть ті, які не були, були у веб-додатку, який виглядав дуже тьмяним - але поки дані оброблялися ОК, ніхто не піклувався). Для непрограміста це миготливе запит, яке виводить рядок тексту кожні кілька хвилин, а потім зупиняється. Так нудно дивитися на ... зітхання :(
FrustratedWithFormsDesigner

1
Погляньте на "кінцевий результат вашої роботи". Це не означає лише програмне забезпечення, над яким ви працювали; це також може означати різні клієнтські програми, які вмикаються заднім програмним забезпеченням, над яким ви працювали.
поштовх

Принаймні, ви не розробник SharePoint, як я, @FrustratedWithFormsDesigner .. Я впевнений, що серед усіх моїх кутових дужок я можу знайти щось, що виглядає круто!
Dexter

4
@FrustratedWithFormsDesigner Я пішов у день "переконуємо школярів, що варто звернутися до CS", коли мені було 15 років, а також кілька інших яскравих дітей з моєї школи. Набір даних командного рядка LOOKED COOL. Нам це виглядало надзвичайно потужно , і це зробило його COOOOOL. Не припускайте, що 15-річні дівчата не хочуть керувати Всесвітом :)
testerab

Напевно ви у вільний час запрограмували щось цікаве, що могли б показати. Я запрограмував гру «Тетріс», глядача фрактала та вирішувача судоку. Будь-яке з них цікаво показати.
Carra

7

Ви знайомі з настільною грою Robo Rally?

Я виявив, що це префект веселої аналогії програмування. Ви в основному програмуєте свого робота, використовуючи прості команди (в основному стрілки), щоб досягти певного місця в ігровій дошці перед іншими.

Чоловік, я б хотів, щоб я все ще мав свій BigTrak ...


4
У цю ігрову вечір ми граємо це напів регулярно (до 8 чоловік, більшість - це учні з математики чи CS). Добре показати, як багатопоточна може піти не так :-p
Paŭlo Ebermann

@Paulo - LOL Ніколи про це не думав, але ти маєш рацію!
Система вниз

6

Покажіть щось просте, але корисне. Хорошим прикладом я вважаю:

  1. Отримайте повну папку або зображення (достатньо, щоб вони не вміщувалися на одному екрані у вашому провіднику папок)
  2. Скажіть їм, що ваша мета - змінити розмір зображень (можливо, ви можете надіслати їх електронною поштою друзям або опублікувати десь в Інтернеті)
  3. Демонструйте зміну розміру одного зображення в GIMP / Photoshop / будь-якому іншому
  4. Тепер зауважте, що на це потрібно не менше 30 секунд, і у вас багато зображень, ви не хочете витрачати на це годину
  5. Напишіть сценарій оболонки, щоб змінити розмір усіх, використовуючи ImageMagick
  6. Нехай вони будуть вражені, що зміна розміру всіх зображень за допомогою вашої простої 3-рядкової програми була швидшою, ніж зміна одного зображення у Photoshop

Причини, які мені подобаються у такому підході:

  • Не потрібно говорити їм, чому програмування корисне, вони просто побачили, чому
  • Ви можете написати всю програму за пару секунд під час перегляду (раджу спробувати її заздалегідь, оскільки демонстрації завжди йдуть не так)
  • Ви не припускаєте, що вони ідіоти / потрібен якийсь "дитячий" приклад. Це простий приклад, але він має реальні потреби в світі .

Можливо, ви зможете придумати кращі приклади, але я думаю, що стиль корисний для "першого вступу".


5

Більшість 15-річних «в ці дні» мають великий досвід роботи з комп’ютерами. Я б пішов на більшу руку на підхід. Я б показав їй трохи коду (не намагайтеся пояснити це докладно, але, можливо, висвітлюйте крайні основи "потоку") і покажу їй, який результат. Навіть HTML буде працювати для подібного прикладу. Тоді скажіть "Щодня, я в основному це роблю .. за винятком десятків тисяч рядків коду та дуже великої і складної програми".

Потім поясніть, які проблеми ви вирішуєте програмуванням, і чому вам подобається це робити. Наприклад, я б сказав, що мені подобається програмування, оскільки "я люблю бачити, як мій код оживає на комп'ютері як додаток"


4

По-перше, у вас є конкуренція, яку вам потрібно розв’язати.

Фільми, популярна культура і навіть люди в цій галузі ( і це питання з цього приводу ) намагаються зобразити програмування (і основну частину галузі інформатики) як певний тип магії. Це не магія.

Програмування - це просто опис завдань, а потім їх поєднання для вирішення проблеми. Якщо ви намагаєтеся знайти паралель, використовуйте математику. Комп’ютер - це як вчитель математики, який вимагає від вас показати всю свою роботу .

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

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

Ще в реальному житті ваш вчитель математики може сказати вам вирішити "15 до сили 3", але ви знаєте лише, як це зробити, тому що раніше вас вчили, що "X до сили Y" розпадається на завдання "Помножте X на X і зробіть це Y разів" [технічно Y -1 разів, але так.]

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


3

Я б зробив те, що мене зачепило, коли мені було десь.

10 PRINT "YOU SMELL"

20 GOTO 10

(Дякую тату).

Тоді, коли веселощі від цього закінчуються. Я б показав їй гру відгадування числа. Так, все в ОСНОВІ. Немає потреби в сучасній мові, щоб показати комп’ютеру інструкції.


2
Добре. Ти вдарився цвяхом по голові. Зробити це по-справжньому просто, і зробити це веселим. І BASIC ідеально підходить для цього.
Майк Данлаве

1
Погоджено, BASIC чудовий, і GOTO - найкраща мовна конструкція, з якої слід почати. Моя перша програма була дуже схожа.
Tomas Andrle

Я не скажу, що я абсолютно проти цього, але я не дізнався про goto лише через кілька років програмування на C ++. Навіть з тих пір я ніколи в житті не вводив жодного гота. Добре чи погано, я не буду судити - я просто хотів, щоб це було відомо, що гото не обов'язково ... е-е ... необхідно.
31eee384

3

Можливо, буде корисно почати з того, що вона робить звичайно, як-от Facebook, і пояснити їй, як такий простий аспект, як вхід у систему, може бути дуже складним.

Ви можете звідси поділитися до баз даних, дизайну додатків, а потім до деяких аспектів безпеки, які є корисним, що вона може забрати.

Ви навіть можете запитати у неї щось на кшталт: "Якби у Facebook було щось одне, ти міг би змінитись, що б це було?" Потім пройдіть її, як ви могли б змінитись і скільки людей буде залучено.

Я вперше навчився програмувати Паскаль, і мене все накачало, що моя програма прийняла мій внесок, поспішила з ним і надрукувала щось інше. Мене звідти зачепили. Деякі люди фіксують легко.


Використання Facebook - хороша пропозиція, дякую @ client09
Dexter

2

Я сподіваюся, що поїхала на робоче місце десь, що, імовірно, розробляє програмне забезпечення, яке у неї повинно бути зацікавлене у цій галузі?

Відповіді немає, я б перевіряв її протягом 5-10 хвилин на те, що вона знає, тоді просто спробуй розвинути, як можна краще.


Не впевнений @Chris - у технологічній компанії є багато різних ролей, від бухгалтерського обліку до персоналу до розробки та консалтингу. Ми даємо їй короткий смак багатьох різних ролей, тому я не думаю, що я буду робити це припущення
Dexter

Ну, щоб бути справедливим, ви ніколи не заявляли, чому саме це компанія. : p Було б сміливо сказати, якщо хтось пішов на влаштування в гітарний магазин, вони, швидше за все, зацікавилися б гітарами, а не були дерев’яними лютьєрами.
Анонім

2

Почніть з високого рівня. Можливо, поясніть, що комп’ютерне програмування - це вирішення проблем: прийняття проблеми та розробка рішення, яке виписано як купу інструкцій, які машина може використовувати та розуміти.

Важка частина може придумати приклади, які 15-річній дівчині було б цікаво та актуально . Ніколи не опинившись у цій ситуації і не знаючи її, я не впевнений, що рекомендувати для цього ... Уникайте зразків коду до кінця, за винятком дуже простих чи цікавих випадків, таких як програма "Hello world" або щось просте і графічне (намалюйте кілька фігур у вікні, відстежте мишку тощо).


Я не думаю, що я міг би навчити когось із програмування, не показуючи їм хоча б деякі зразки коду, над яким я працюю ..
Dexter

@Dexter: За 30 хвилин я не впевнений, що хотів би зупинитися над тим, як виглядає код. Я не мав на увазі нічого не показувати, але оскільки у вас не так багато часу, я не думаю, що в центрі уваги повинен бути код. Це може вийти дуже сухим і нудним. Говоріть більше про ідеї та концепції, якщо можете. Якщо ви можете знайти простий приклад (можливо менше 10 рядків), який легко зрозуміти, а також цікаво, продовжуйте його робити!
FrustratedWithFormsDesigner

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

2

Ось я сприйняв це після пари невдалих та декількох непоганих спроб:

Програмування - це вирішення проблем.

Почніть з конкретних речей, запрограмованих якими вони користуються щодня - Інтернет-браузер (facebook), мобільний телефон, касовий апарат тощо. Отримайте їх, щоб навести безліч прикладів. Встановіть, що всі ці речі мають у них своєрідний комп’ютер. Серцем комп’ютера є процесор.

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

Запитайте її, як вона скаже дуже швидкому, але дуже тупому працівникові купити банку соди у содової машини. Коли вона починає описувати кроки ("Покладіть гроші в машину і натисніть кнопку"), починайте її розбирати як програму ("Що таке гроші? Як я вкладаю її в машину? Коли я кладу гроші в машину і натискаю кнопка при цьому нічого не відбувається. "). Якщо у вас є дошка, почніть ліворуч з її першого набору інструкцій. Коли вона їх переглядає, розмістіть новий більший список праворуч. Коли у вас є гарний набір інструкцій, починайте узагальнювати шматки («Вийміть гроші з кишені та вийміть соду з звуку лотка подібним - які частини однакові / різні?») Візьміть узагальнення і поставте їх посередині і перекреслити шматки, які вони зараз містять. Спробуйте врешті-решт зв’язати шматки, щоб відповідати її оригінальним інструкціям, на зразок функціональних дзвінків. Інші хороші вправи: надішліть листа, пройдіть через двері, намалюйте коло / квадрат / трикутник.

Тож програмування вирішує проблеми: розбиття проблем на частини, визначення частин, які є загальними, та групування цих частин для вирішення проблем. Незабаром ви дізнаєтесь, що деякі частини є загальними для багатьох проблем, а потім починаєте складати частини, щоб вирішити проблеми, які ви навіть не знали, що у вас є.

Гаразд, до цього моменту вона може зрозуміти, але їй, мабуть, нудно. Слідкуйте за цим набором крутих прикладів програмування. Шейдери та пов’язаний із ними візуальний код легко демонструвати - ви можете створити зображення і почати вносити зміни до нього з дуже невеликими змінами коду. Якщо вона виявила інтерес до Facebook, покажіть розмову з Facebook через REST, щоб побачити дані друзів (6-градусні її). Якщо їй подобаються відеоігри, покажіть пару демонстрацій ігор із відкритим кодом, а також кілька фрагментів їх коду та те, як вони допомагають грі працювати. Закінчіть це, показавши пару безкоштовних інструментів та ресурсів, які вона могла б вивчити вдома. (Python, C # тощо)

Мої невдалі спроби: спроба пояснити пі-обчислення (вони запитували), настільна гра на C-Jump http://c-jump.com/ (вони цього не отримали, і інструкції були помилковими), і кодування в реальному часі 2d гра (просто не могла зацікавити, незалежно від того, наскільки мало кроків я робив між демонстраціями).

Удачі!


2

Складіть просту програму. Ні, не "Привіт, світ!"

Що я б хотів зробити, це сказати, що існує багато типів мов програмування - це ті, що створюють ігри, ті, які керують роботами, - але те, з чим ти будеш працювати, - це HTML.

Створіть веб-сторінку, на якій немає нічого, а потім додайте форму, яка надішле повідомлення на її електронну адресу. Імовірно, у неї є мобільний телефон, який може сповістити власника про те, що у них є новий електронний лист, тож ви можете сказати їй, що для друзів та родини це прекрасний спосіб зв’язатися з нею. Якщо вона отримає власний веб-сайт у майбутньому, ви можете сказати їй, що вона може розмістити форму на своєму веб-сайті, дозволяючи своїм клієнтам та діловим партнерам зв’язуватися з нею.

Як варіант, якщо вона трохи пустотлива, я скажу вам, що мене зацікавило програмування: хакерство. Ще в той час я зробив найкращу програму, яку коли-небудь робив для того, щоб возитися на AOL (поза однією програмою, яка перевершила шахту лише в одній із десятків речей, які робила моя) - у віці 14-15 років. Що стосується білого капелюха, я також зробив одну з перших програм для зняття спаму (1995 р.). Мені вдалося зробити свій досвід в Інтернеті набагато приємнішим, і ми залишимо це на цьому. Все, що я хотів зробити на комп’ютері, - це пригода чи головоломка, яку мені довелося розгадати, а речі, які я хотів зробити на комп’ютері, були нескінченними. Звичайно, час від роботи це було головним болем, але написання програми, яка робила речі краще і швидше, ніж могла будь-яка людина, чи робити речі, які просто неможливі для широкої громадськості, було схоже на те, щоб побудувати тонкий шматок техніки, яким можна було пишатися. Тепер ви, мабуть, ухиляєтесь від чогось серйозного, але було б надзвичайно просто зробити щось у Visual Basic, яке можна було б запустити під час запуску (сидячи збоку на екрані чи системному треї,) і звідти, ви можете змусити її запускати її улюблені веб-сайти, її улюблені програми тощо. Ви можете ознайомити її з командами, необхідними для запуску EXE та веб-сайту, а потім просто попросіть її зробити кілька кнопок, а потім додати код до цих кнопок , розмістивши її улюблені веб-сайти (facebook, щебетати тощо) та програми (iTunes, текстовий процесор тощо). Якщо її комп'ютер знаходиться у своїй кімнаті, ви також можете кинути на нього будильник для додаткової функціональності. Звичайно, 30 хвилин занадто короткий, щоб пройти її через це, тож вам доведеться це вже зробити. Зрештою, ви надішлите їй невелику посібник користувача на 2-3 сторінки, код та .exe до неї ..., а потім залиште їй невеликий крок продажів: спочатку це не просто, але як тільки ви отримаєте повісь, це не так вже й погано, буде надзвичайно корисним у житті та допоможе розвинути її аналітичне мислення.


2

Я навчав 18-річних студентів коледжу, і я вважаю, що 15-річні приблизно такі самі. Не чекайте успіху без практики. Мені знадобилося кілька тижнів у моєму першому класі, щоб "зламатись".

Найбільше, що мені довелося навчитися, - це те, що я вважав таким простим і очевидним, що боявся, що не зможу заповнити час, зовсім не так для студентів. Я дізнався, що вам потрібно йти кроками дитини - інакше це просто магія "гей свист".

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

Сенс цього полягав у тому, щоб переконатися, що комп'ютери роблять лише прості речі та роблять їх по черзі. Вони не починають кожен крок, поки не завершиться попередній крок. (Так, так, я знаю - конвеєри та все таке, але ми говоримо з новачками .) Здається, що лише електронні швидкості змушують робити все і відразу, і це те, про що починають схилятися новачки (разом із читанням розуму) . Це одне з дійсно основних понять, без яких ви не можете почати розуміти програмування та комп'ютери. Нам, це настільки вкраплено, що ми навіть не усвідомлюємо, що ми це знаємо, але початківці цього не знають.


1

Я знаю, що це не мова програмування, але я думаю, що HTML - це гарне місце для початку. Тому що ви отримуєте негайні результати .... почніть з

Привіт Світ

Потім зробіть:

Привіт <b> Світ </b>

І т.д.


1

Якби це я, я сказав би їй, що програмування - це розділення задачі на невеликі завдання таким чином, що допоможе вам їх вирішити; а потім висловлювати ті маленькі завдання мовою, яку не можна зрозуміти ідіотським комп’ютером. Але ви також повинні зробити це таким чином, щоб і інші програмісти могли це легко зрозуміти - і це не те саме.

Тобто, понад усе, що всі сказали ...


1

Це більше мого особистого досвіду, ніж прямої «відповіді».

Чому я зацікавився? Мої батьки придбали IBM PC XT в 1984 році (я народився в 1984 році). Він має 640 кб оперативної пам’яті та 20 МБ жорсткого диска, 5-дюймовий FDD і працює MS-DOS v3.2. Мені не дозволяли доторкатися до нього, поки я не став 5-м стандартом, і коли мені нарешті було дозволено користуватися ним, я висипав усі свої роки накопиченої цікавості в ньому.

Моїй сестрі, з іншого боку, було дозволено той самий ПК і макрінтош Quadra 610, коли вона цього хотіла, і вона платила йому стільки ж уваги, скільки платила за стіл, на якому вона була встановлена.

Навчаючи сестру ... Я намагався навчити сестру комп'ютерному програмуванню в ОСНОВІ. Я змусив її зробити все правильно: від запуску комп'ютера до введення програми та виконання її. Це було як лінійна програма.

10 PRINT "CAT"
20 END

На це пішло півгодини. Коли вона нарешті її виконала, вона надрукувала слово "CAT", і вона розлютилася. Вона очікувала, що з’явиться зображення кота. Вона вийшла з кімнати, і це було кінцем програмування назавжди!

Мораль: Результат краще бути пропорційним часу та зусиллям, які вони вкладають.

Навчаючи дітей середньої школи Labview та Lego NXT, я був наставником для ПЕРШОЇ робототехніки і повинен був керувати дітьми в програмуванні робота в NI Labview. Відверто кажучи, потрібна навичка програмування значно перевищувала рівень старшого школяра. Але змагання мали на меті привернути увагу дітей до інженерії та підняти планку на здатність прийняти виклик. Поки програми мали лише оператор if і один цикл, все було добре. Люди випали з розділу програмування робота, коли побачили кодову діаграму, яку я створив для робота, який ми побудували попереднього року.

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


1

Що таке CS?

Думаю, перед тим, як перейти до демонстрації, це допоможе коротко зайняти місце CS у світі. Мені сподобався опис Хель Абелсона щодо математики щодо математики: в той час як математика допомагає описати світ з точки зору законів, CS допомагає описати, як робити справи. Його прикладом була функція квадратного кореня: математика визначить її, але не допоможе вам знайти її для будь-якого даного введення. CS буде. На нижчому рівні електротехніка та фізика заклали основу обладнання, яке дозволяло Інтернету, але залишало відкритими питання, як дозволити людям користуватися ним.

Що таке бути програмістом?

Тоді виникає питання, як це бути програмістом. Що мене привернуло, це те, що він має швидший поворот тестування, тестування, виправлення, ніж будь-яке інше технічне поле. Це безперервне вирішення проблем, тоді як в інших сферах час повороту для одного циклу може становити місяці. Це також корисно майже для будь-якої іншої технічної галузі, що більше, ніж можна сказати для ... більшості інших технічних сфер. Тож якщо ви ще не знаєте, чим хочете займатися (швидше за все), добре поправитися рано. У коледжі небагато речей зробить вас кориснішими для викладачів, ніж зможете кодувати свої експерименти.

Очні цукерки, прив'язані до коду

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


1

Я почав програмувати, коли мені було 14 років. Хоча більшість (47 із 50 студентів, які записалися) або випали на середину курсу, або просто вирішили не продовжувати курси підвищення кваліфікації в наступному році, я притримався цього і дізнався щось дуже важливе:

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

Для початку нас вчили "Hello World", але у мене не було інтересу, поки я не зміг змусити свій код взаємодіяти з користувачем . У той момент, коли нас навчили читати вхідні дані за допомогою «cin», я поклав намір зробити програму Mad-Lib, яку ми могли б грати в класі. Першим моїм перешкодою було читання даних, що містять пробіли, а потім - форматування виводу. Пізніше я захотів зберегти ці історії у файл, і тому мені потрібно було вивчити IO файлів. То, чому я займався, вирішував перешкоди для досягнення власних цілей.

Згодом у тому році ми виявили, що адміністратори мережі реєструють наше використання "Net send" та клієнта Novell SendMessage, який ми використовували для спілкування під час комп’ютерного класу, і вони відключили його після того, як студенти використовували його для обману на тесті. Тому я написав кімнату чату, щоб замінити ту, яку адміністратори відключили. Це була перша справді корисна річ, яку я створив. Я змоделював це після чат-системи Battle.Net, укомплектованої реєстрацією користувача, модераторами та навіть базовою системою шифрування та тіньових файлів, щоб запобігти підробці користувачів (усі файли повинні перебувати на спільному мережевому диску, щоб студенти могли доступ та використання програми). Це вже не були поняття, про які я вже знав, але рішення, які я придумав самостійно, щоб вирішити проблему. Для мене це було радістю програмування.

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


1

Де я працював, ми іноді мали досвід роботи з дітьми. Деякі цікавились комп’ютерами, а інші - не. Ми звикли їх сидіти перед комп'ютером і змушувати їх грати вгадування. (Комп'ютер випадковим чином вибирає число, користувач отримує зворотній зв'язок, якщо їх здогадки були занадто високими / низькими.) Це зробити просто і це справді цікавий результат. Ніщо не є більш потужним, ніж показувати їм відчутно те, що вони можуть створити.


1

Коли ти хочеш привернути - і тримати - чиюсь увагу, тоді ЗАПИТЬ, не кажи. Запитайте, як вони могли б виконати просте завдання, наприклад, випити води. Потім покажіть їм, як дотримуючись інструкцій, які вони надали (наприклад, "Спуститися зал") насправді не вирішувати проблеми, коли повернути ліворуч, повернути праворуч, зупинитися тощо. програмування! Тоді ви можете показати, як цикл "робити" поки не може впоратися з ситуацією "ходити, поки не підійдеш до стіни", щоб зробити мета-завдання з одного завдання "на ногу" перед "іншим" ходьби.


1

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

Як мені сумно, я поняття не маю, правда ця чи ні. Це все ще дуже круто.

Також ще одна річ. Я пам’ятаю свій перший досвід з програмуванням - MessageBoxу Delphi. Це було круто, тому що я міг змусити комп’ютер робити те, що я хочу, і одразу побачити результат.
Потім з'явилися мікроконтролери. Вони були ще кращими, бо мій код міг змінити реальний світ. Я маю на увазі, присвоєння деякого значення змінній перестав бути таким абстрактним, оскільки це призвело до появи напруги на вихідному порту, через що мій двигун рухався. Це було круто. Ви можете вибрати такий спосіб - покажіть дитині щось на зразок Ардуїно.

Розумієте, я думаю, що справа в тому, щоб змінити і побачити результат.


0

Покажіть їй кінцевий результат деяких речей, які ви зробили. Загалом поговоріть про свою роль у проектах. Можливо, навіть допомогти їй зробити світ привіт, якщо вона здається зацікавленою.


0

Моя улюблена аналогія програмування - це майстерність (стиль Гаррі Поттера), як Satanicpuppy. Я використовую це як для нетехнічних однолітків, так і для дітей, це, здається, працює досить добре і, безумовно, передає силу, яку нам дають комп’ютери.

Комп'ютери - це наші чарівні палички. Вони дозволяють нам виконувати магію за умови правильного пальця зап'ястя та заклинань. Як програмісти, ми маємо доступ до книг заклинань (бібліотек), які працювали та вдосконалювались нашими попередниками. Ми можемо створювати нові заклинання та заклики або працювати з існуючими. Деякі з них легкі, деякі потребують більшої практики, щоб дійсно ефективно використовувати, часто існують компроміси та багато різних способів вирішити одну і ту ж проблему (чи варто використовувати гарне зілля чи заклик?).

Ця розширена метафора справді може бути добре розтягнута, і це часто дозволяє мені передати свою пристрасть до програмування способом, доступним людям поза полем.


0

Найкращий спосіб зрозуміти дітей - це бути першою дитиною ..! У дитинстві я ненавиджу робити домашні завдання, нав'язування тощо.! тому є пункти входу, де ви можете захопити їх увагу. За 30 хвилин, хоча ми не можемо все пояснити, ми можемо спробувати дати їм своєрідну експозицію, коли зацікавлені діти вважають це натхненням. Почніть з пов’язаних з ними тем, таких як домашні завдання тощо. Розкажіть про те, як комп'ютер може написати накладення за декілька секунд тощо.

Бажаю тобі всього найкращого.. ! хороша робота

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.