Тест на придатність програміста [закрито]


14

У мене є багато друзів, які бачать, що я роблю, цікаво і задають мені запитання

Do you think I could be a programmer?

Моя відповідь така

...   ummm  ...  do you like math?

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


Я пропоную BuzzFizz: Давши три різні виконувані файли, чи можна їх запустити та визначити, який з них є "FizzBuzz"?
Macneil

15
Не змішуйте математику та програмування. Я роками працюю програмістом. Я ненавиджу математику. Ще один приклад: Джефф Етвуд - відмінний програміст. Він ненавидить математику (див. Codinghorror.com/blog/2007/01/… , пункт 3).
Арсеній Муренко

2
@MainMa Я не можу підкреслити, наскільки це правда. Я в точно такому ж човні. Математика ніколи не була моєю пристрастю або навіть сильною точкою в цьому питанні. Це, як кажуть, багато хто мене знає, засвідчить мою надзвичайну здатність (читати: одержимість) програмування. Математика може бути основною частиною програмування, але одне не обов'язково починає інше.
Натан Тейлор

1
можливо, коли я кажу: "чи любите ви математику?", я маю на увазі сказати "чи поважаєте ви математику?", я насправді смоктав математику вручну, саме тому мені подобається змушувати комп’ютер робити математику для мене, але я поважаю і зрозуміти кінцеві принципи математики, які, на мою думку, допомагають мені в процесах логічного мислення.
jondavidjohn

2
"уміння" - це справді класна помилка в цьому контексті :-)
Ферруччо

Відповіді:


12

"Сподобалася математика" - це погана перевірка. Я ніколи не любив математику (в основному тому, що 90% вчителів математики в середній школі смоктали).

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

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

Важливим є вміння уявити систему та побачити, як вона працює.

  • Ви думаєте про те, як все працює?
  • Ви думаєте про шляхи вдосконалення повсякденних речей?
  • Чи можете ви уявити, як побудувати щось із простих будівельних блоків?

Це більше схоже на геометрію?
Гульшан

це прикладна наука, тому вона насправді не має чистої науки "еквівалентної" як такої.
jondavidjohn

1
Програмування більше схоже на столярні вироби, ви спочатку візуалізуєте рішення, вибираєте інструменти, ретельно застосовуєте своє ремесло, використовуючи найкращі дерева TDD. Ісус був би програмістом, якби комодор 64 був винайдений трохи раніше.
Буде чи

2
Насправді те, що ви описали, дуже схоже на математику - на відміну від того, що проходить для шкіл з математики.
умань

1
@Brennan: Єдиною математикою, яку я знайшов схожою з програмуванням, була Discrete Math в університеті. Більшість інших математик, які ми вивчали, полягали в тому, що бездумно застосовували правила і формули для вирішення якогось рівняння. Ви можете стверджувати, що це не справжня математика, але це не має значення для цієї дискусії.
hasen

8

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

Конспект тесту:

Abstract Thinking
    Process Flow
    Spatial Manipulation
Analytical Reasoning
    Inductive Reasoning
    Logic Application
    Word Problems
Attention to Detail
    Following Instructions
    Reading Comprehension
    Rule Interpretation
    Writing Analysis
Mathematical Problem-Solving
    Word Problems
Process Mapping
    General Processes
    Letter Manipulation Processes
    Number Manipulation Processes
    Shape Manipulation Processes

1
Це дуже складне випробування. Якби хтось сказав мені пройти тест, перш ніж заглиблюватися в програмування, я б злякався. Гаразд, можливо, мені було б байдуже, але кожен, хто серйозно сприйме тест, злякався б.
hasen

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

2
Ну, це складне поле, якщо підійти до нього головою, то вийде з ладу. Усі, хто розпочав програмування, починали з легких речей і вважали, що це дуже просто. Ця віра, ймовірно, буде збережена завдяки досвіду навчання. Ви ніколи не усвідомлюєте, наскільки це складно, поки не озираєтесь назад або не спостерігаєте, як хтось бореться з чимось, що вам здається дуже простим.
hasen

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

7

Є ймовірність, що там вже є хороший.

Дивіться, наприклад, дискусію про відокремлення програмних овець від кіз, які не програмують :

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

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


2

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


2

"Ви любите математику?" це не поганий старт. Математика критична, після цього ...

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

  • Як би ви сказали роботові, як зробити чашку чаю? Будьте максимально конкретними.
  • Замовлення їжі в Макдональдсі, які кроки пов'язані з виконанням замовлення, від того, як спочатку було сказано, щоб дати зміну / їжу.
  • Як працює телефонна система?

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


1

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


1

Краще питання, ніж "Чи любите ви математику", це "Ви любите розгадувати логічні головоломки"? Це такі речі, як Судоку тощо, або з'ясування відповіді на загадки, такі як "Джон, Енн, Пітер, Мері та Бретані - сусіди. У Джона є білий автомобіль, Бретані живе ліворуч від Анни, бла-бла, в якому порядку вони живуть? "

Тому що це програмування: одна величезна логічна головоломка.


1
Я (дещо) люблю математику, але головоломки - це просто непотрібне б'ють головою об стіни. Я думаю, що вам потрібна мотивація, щоб створити щось корисне - на відміну від розумової гімнастики для того, щоб показати, наскільки ви розумні.
Омега Кентавра

Ну гаразд, вам це не потрібно сподобатись, просто будьте добрі в цьому. :-)
Леннарт Регебро

1

Я думаю, що краще питання: "Чи любите ви будувати речі з блоків лего?"


1

Так само, як Густо, персонаж із фільму Рататуй сказав:

Готувати кожен може кожен.

Таким же чином програмувати може кожен. Але, не всі будуть в цьому чудові. Більшість завдань програмування вимагають середнього рівня здатності та компетентності.

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


2
Я абсолютно не погоджуюся з тим, що програмувати може кожен. Це смокче, але це життя.
умань

0

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

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