November 13th, 2019

baker

computer science education

Про Україну писати поки не можу: якось там все так погано і так швидко валиться, що ніякого конструктиву написати не можу, а деструктиву і так достатньо.
Тому про роботу.


Бурчу: оце сьогодні зранку проводив технічну співбесіду на предмет базових вмінь хоч щось програмувати (coderpad technical screen) у чувака, який, здавалося, мав би бути на порядки крутішим за мене, колись недофізика, зараз чи то дейта саєнтіста, чи то хрін зна шо. Пошукач на посаду Data Scientist'a мав бакалавра в CS з Індії. Не IIT, а Kanpur, але все-одно. Більше того, після пари років роботи мав ще і M.S. з Computer Science від Iowa State. Нехай Айова Стейт не в верхній десятці стейтів, але теж дуже непоганий універ, ну, судячи, за всіма іншими виходцями звідти, з ким доводилося здибатися. І ось від цього чувака я якось геть розгубився. Простеньке запитання по SQL він написав легко, легше ніж деякі, але програмування... Я ще якраз, перед тим, як просити щось складніше, хотів подивитися, як людина напише геть простий код, щось таке, що може знадобитися в повсякденній роботі і вимагає один рядок коду. Задача на хвилину (Хай на співбесіді буде не один, а кілька рядків, і ме хвилина, а п'ять.) Ну і попросив його написати мені функцію, яка, отримавши число на вході, поверне його десятковий порядок. Щось типу f(-10000)=4, f(2) = 0, f(0.002) = -3 і т. п. Чувак щось писав і говорив 20 (двадцять!) хвилин, але так і не отримав код, який би правильно порахував, принаймні, оці вищенаведені приклади. Нє, я все розумію. Сам, коли мені колись треба було таке написати лівою рукою не думаючи, першим ділом почав множити на ступені десятки. Та хай би і він починав, але...

Тут у мене кілька місяців тому була трошки дискусія в коментах про те, що означає університетська освіта з Computer Science, де мені багато хто розповідав, як зовсім не обов'язково знати те або інше, і як воно все зовсім не свідчить, що освіта стає гіршою. (Чи про гіршу освіту було в іншому пості? Забув.) Гей, дискутанти, як ви скажете, чи це занадто, хотіти від магістра-комп'ютерщика, який пише список знайомих мов (Python, R, Java, C++) і претендує на посаду Data Scientist:
- в принципі не змогти написати і відтестувати робочий код розрахунку десяткової ступені числа за 20 з гаком хв.
- в процесі написання функції не запитатися і не поставити ніяких перевірок на граничні умови (що робити з нулем, чи інпут у нас саме число, і т. п.)
- в процесі написання коду на Пітоні заявити тимчасову змінну на ім'я "type" (а коли виявилося, що ця тимчасова змінна не потрібна, потерти її не всюди, а залишити щось типу return type * (i-1), не жахаючись від побаченого)
- написату while-цикл без найменшої перевірки на безкінечність циклу (і попасти в цю безкінечність, і не бачити, що не так, поки я не сказав)
- не розуміти, що не так з умовою "if x<1" в задачці на розряд, навіть після того, як побачив, що відповіді для від'ємних чисел неправильні
- коли, після того, як з множенням або діленням на 10 в циклі в нього так і не запрацювало, і я десять разів запитав "а як би ще це можна було зробити", не подумати ні про десятковий логарифм, ні про форматований string
- на запитання, чи не бачив він колись чогось типу "...e+06" чи "...e-12" не вдарити себе по чолі з криками "but of course", а сказати щось типу "ну да, воно так якось пише,коли числа дуже великі"
- не знати, як заставити інтерпретер вивести число в такому форматі (нагадую, що у нього там в списках ще і Джава, і Сіплюсюлюс)
- коли я вже все показав, не подумати, що воно str, а не int, і не знати, як конвертувати
- ...

При цьому, він чесно знав основний синтаксис, і (респект) після двадцятип'ятихвилинного плавання на цій найпростішій темі бадьоро написав сіквел запрос і навіть не геть здувся на запитанні про цикли в графах. Правда, код про графи писати було уже ніколи, та і пропонував він його писати неправильно, але знав слова stack, queue, pop, breadth-first, depth-first....

Ну як так може бути???

Crosspost from https://malyj-gorgan.dreamwidth.org/103141.html.