Чому програмісти не можуть програмувати, savepearlharbor
Після чималих проб і помилок я виявив, що люди, які борються за код, не просто борються з великими проблемами, або навіть з невеликими проблемами (наприклад, створюють реалізацію пов'язаного списку). Вони борються з крихітними проблемами.
Тому я вирішив розробити питання, які можуть ідентифікувати такого роду розробників, і придумав клас питань, який я називаю «Питання FizzBuzz», в честь гри, в яку діти часто грають (або їх змушують грати) в школах Великої Британії. Прикладом проблеми Fizz-Buzz є наступне:
Напишіть програму, яка друкує числа від 1 до 100. Але для кратних трьох значень «Fizz» замість номера і для кратних п'яти «Buzz». Для чисел, одночасно кратних трьох і п'яти - «FizzBuzz».
Більшість хороших програмістів повинні мати можливість написати на папері програму, яка робить це за пару хвилин. Хочете знати щось страшне? Більшість випускників комп'ютерних наук не можуть. Я також бачив, що самопроголошені старші програмісти витратили більше 10-15 хвилин, щоб написати рішення.
Дивно велика частка претендентів, навіть володіють ступенями магістра та докторів наук в області комп'ютерних наук, зазнає невдачі під час інтерв'ю, коли їх просять виконати основні завдання програмування. Наприклад, я особисто опитав випускників, які не можуть відповісти «Напишіть цикл, який вважає від 1 до 10» або «Який номер після F в шістнадцятковій системі?» Менш тривіально я брав інтерв'ю у багатьох кандидатів, які не можуть використовувати рекурсію для вирішення реальної проблеми. Це базові навички; будь-який, у кого їх немає, ймовірно, недостатньо багато програмував.
Виступаючи від імені інженерів-програмістів, які повинні взяти інтерв'ю у потенційних нових співробітників, я можу з упевненістю сказати, що нам набридло розмовляти з кандидатами, які не можуть запрограмувати свій шлях з паперового мішка. Якщо ви можете успішно написати цикл, який йде від 1 до 10 на кожній мові вашого резюме, може зробити просту арифметику без калькулятора і може використовувати рекурсію для вирішення реальної проблеми, ви вже випереджаєте пакет!
Між Реджинальдом, Деном і Імраном я починаю трохи хвилюватися. Я більш ніж готовий скоротити обмеження для молодих розробників програмного забезпечення на початку своєї кар'єри. Всі повинні почати десь. Але мене турбує і обурює те, що будь-який так званий програміст претендуватиме на роботу, не маючи можливості писати найпростіші програми. Це ляпас кожному, хто пише програмне забезпечення для життя.
Значний розрив між тими, хто може програмувати, і тими, хто не може програмувати. добре відомий. Я припускав, що той, хто подає заявку на роботу, як програміст, вже перетнув цю прірву. Мабуть, це нерозумне припущення. Мабуть, скринінг стилів FizzBuzz необхідний. щоб інтерв'юери не витрачали час на інтерв'ю з програмістами, які не можуть програмувати.
Я б не хотів, щоб інтерв'юери відхилили тест [FizzBuzz] як занадто легкий. З мого досвіду, дійсно вражає, скільки кандидатів нездатні до найпростіших завдань програмування.
Шкода, що ви повинні зробити стільки попередніх перевірок, щоб дозволити собі розкіш брати інтерв'ю програмістів, які дійсно можуть програмувати. Було б смішно, якби це було не так сумно. Я не шанувальник сертифікації. але мене дійсно дивує, що Стів Макконнелл був чимось зайнятий з усіма своїми розмовами про створення справжньої професії програміста.
Write a program that prints into console the numbers from 1 to 100. But for multiples of three print "Miss" instead of the number and for the multiples of five print "Kiss". For numbers which are multiples of both three and five print "MissKiss". Each print must be asynchronous call console.log function with a 50ms delay.