воскресенье, 25 августа 2019 г.

Купонинг: бесплатные бритвы и стратегический запас хлопьев

Я упоминал, что магазинные купоны представляют для меня вид математической игры. Так было не всегда. Помню, как меня после переезда в Сиэтл удивляли купоны “free item” – бесплатный предмет. Прямо так можно пойти и взять вещь в магазине бесплатно? В чем выгода для магазина? Почему все тогда не разберут то, что раздается в эту неделю на халяву?

Этот август дал минимум два хороших примера, чтобы продемонстрировать некоторую безумность купонов в местном магазине QFC. Вот сколько могут стоить сфотографированные здесь предметы (бананы и крекеры на заднем плане не в счет)?


Это был специальный поход в “QFC на горé”. У нас есть более близкий QFC, в 10 минутах пешком. И два QFC “на горе”, то есть на Capitol Hill, до которых идти по 35 минут. Но так как мы на работу не ходим, то желательно гулять каждый день хотя бы час. И прогулка в холм до магазина – вполне обычная цель. Все мои советы плохо применимы для тех, у кого мало свободного времени на обход всех соседних магазинов в поисках самого дешевого набора продуктов. Мы обычно обходимся Safeway, QFC (это местный Kroger) и Trader Joe’s. Еще есть близко Whole Foods и еще более дорогой Metropolitan Market, куда мы не ходим весьма принципиально. А вот в более дешевый Winco надо ехать на машине, что мы не любим. Да и если учесть бензин, то он будет не дешевле тех магазинов, до которых мы можем дойти пешком.


Так вот, в нашем QFC не было бритв Schick, на которые я и нацелился, так как просматривая электронные купоны, я заметил, что производитель дает на них хорошую скидку в $4, а бриться мы иногда бреемся. И Schick мне больше нравится, чем Gillette. Заодно в “QFC на горе” есть шоколадные хлопья Cascadian Farms – единственный вид хлопьев этого бренда, который нам нравится.


Итого: $9.30. Скидка – $24.20 или 73%. Неплохо. Бритвы вообще получились почти бесплатные: изначально они стоят $7.99, $1.50 скидывает сам магазин “по желтой этикетке”. $4.00 скидывает купон производителя, который я заранее добавил в свой аккаунт онлайн. $1.50 – еще один купон (от магазина?), тоже оказался на моем счету и применился, несмотря на купон производителя. $1 – эти бритвы участвовали в “мега-ивенте” “Buy 5, Save 5”, который QFC проводит примерно две недели в месяц. 7.99 – 1.50 – 4.00 – 1.50 – 1.00 = -0.01: QFC нам должен 1 цент за то, что мы забрали у них бритвы. Мне такие комбо дарят такое же удовольствие, как у игроков в “три-в-ряд”, когда снялось сразу много конфеток или кристаллов.

Но чтобы сработала скидка “Купи 5, сэкономь $5” надо было набрать пять предметов. Часто это отдельный квест, но на этот раз мы легко собрали: 1) бритвы; 2) шампунь мужской, почти литр ($3.99 – $1.00 – $1.00 = $1.99, тоже купон производителя в дополнение к “5-на-5”); 3) пачка хлопьев Barbara’s (Morning Oat Crunch – вот их мы уважаем) за $4.99 – $2.00 (купон от магазина) – $1.00 = $1.99. Сложно заметить самому, но предметы, участвующие в buy-5-save-5 помечаются в чеке символом “< +”.

4) и 5) это шоколадные хлопья Cascadian Farms. Изначально две пачки должны стоить $9.98. Но по доллару скидывает магазин, $1.00 купон за покупку Natural Foods на сумму больше $5 (эти хлопья organic), $1.40 – купон от магазина за то, что мы купили именно две пачки, $1 – купон от производителя (внизу чека видно MFG CPN SAVINGS $6 – это $4 за бритвы, $1 за шампунь и $1 от Cascadian Farms; мне важно понимать всю бухгалтерию) и, наконец, $1 + $1 – Mega Event Savings, как называется “Buy 5, Save 5” в чеке. Итого $2.58 или $1.29 за пачку. Вот это я называю “справедливой ценой”, после этого за $4.99 у меня рука не поднимется их купить. Но можно возразить, что если мы платим $2.58, должен ли был примениться купон за Natural Foods, там же надо было купить на $5? Эксперимент показал, что этот купон в данном случае применился. (Порядок применения купонов важен, об этом я еще напишу).

Хлопьев у нас накопился “стратегический запас”. Сейчас пересчитал – 24 пачки.


Кажется, что это много, но мы потребляем их со скоростью пачка за два дня. Так что хватит в лучшем случае на два месяца с учетом, что мы не на каждый завтрак их едим (бывают еще bagels и блины). Срок годности у них больше 8 месяцев. Мистер-Мани-Мусташ (есть такой проповедник экономии) учил, что в таком случае стратегический запас хлопьев должен составлять у нас 100 пачек. Но так как скидки на них бывают постоянно, мы не закупаемся по полной. Вот завтра собираемся купить еще 6 пачек Honey Bunches of Oats, в Safeway они по $1.67 в этом цикле (цены и скидки меняются в ночь со вторника на среду).


Ну, а мороженное мы купили потому что оно было по хорошей скидке $5.79 – $1.30 – $2.50 = $1.99, хоть и не участвовало в “Buy 5, Save 5”. Я не ставил целью специально собрать самые большие скидки, как некоторые энтузиасты купонинга скидывают 97%. Например, мы могли бы взять бесплатную сосиску и печенье, но эти купоны истекают только в октябре:


Не беспокойтесь, и сосиска, и печенье будут к тому времени куплены и съедены. Но для меня важно, что мы покупаем по скидкам-купонам только то, что купили бы так и так. Ведь с точки зрения QFC все эти купоны должны заманить меня в их магазин, чтобы я заодно купил у них много ненужных, переоцененных вещей. Не на того напали. В общем, это большая скидка, но типичная для нас: недавно брали бесплатную зубную пасту по той же схеме, что и с бритвами. Хотя с несъедобными вещами есть нюанс.

Я написал о бритвах “почти бесплатные”, так как sales tax никто не отменял, даже если после всех скидок они достались нам за минус 1 цент. Из чека видно, что налог составил $0.71, но в Сиэтле он 10.1% (еда, купленная в магазине, если она “нересторанная”, освобождена от налога). Значит, налогом обложили товаров на $7.03. 5 центов – это бумажный пакет: в Сиэтле не выдают бесплатные пакеты в магазинах. Мы обычно ходим со своими сумками, но иногда берем бумажные пакеты в QFC, чтобы потом собирать в них перерабатываемый мусор.

Понять, откуда взялись остальные $6.98, я бы не смог, если бы не подсказка в чеке в виде буквы T напротив некоторых товаров и цен. Как видим, $2.99 – это налогооблагаемая цена шампуня, а $3.99 – бритв. Купоны производителя вычитаются до налога, купоны магазина – после. Итоговая цена шести бритв – $0.39 с учетом налога с точностью до цента. Я одним станком могу полгода бриться, пока он окончательно не затупится, но брат раньше выкидывает. Можно тоже назвать стратегическим запасом. Да и литра шампуня с нашей привычкой стричься машинкой “4 спереди, 2 по бокам” хватит надолго.

Работник магазина, проходя мимо кассы, не удержался от ремарки, как много мы сэкономили. А то: два PhD закупаются. Надо отметить, что мы сейчас всегда идем на кассу самообслуживания, если она есть. Там и очереди обычно меньше, и мы можем быть уверены, что нас не обсчитают на лишнее яблоко или йогурт, как это случалось, пока в Safeway надо было идти к человеческому кассиру, что все скидки и купоны применятся так, как должны. В Safeway даже лучше система, чем в QFC: там все скидки вычитаются сразу после сканирования предмета, а не в самом конце. Это в чеке все разложено по полочкам, а в терминале вначале видна только полная сумма. Этот факт важен для второй моей истории.

В этот четверг отправились мы “проинспектировать” свежеоткрывшийся Whole Foods “на горе”. Проходили с одними бананами в корзине, посмотрели на цены и ассортимент, сказали “Однако”, выложили бананы назад (зачем нам органик за $0.69/фунт? спонсировать Безоса? кто там в Гватемале следит, что органик, а что нет) и демонстративно вышли из Whole Foods, ничего не купив. И в 4 минутах ходьбы от того Whole Foods находится QFC, в котором мы купили и бананы ($0.49/фунт), и персики ($1.49/фунт), и вот эти пять предметов:


Да, это снова акция “Купите 5, сэкономьте $5”. Мы взяли две пачки Kind Bars, пачку сыра “Филадельфия”, пачку наанов (индийских лепешек) и бейглы от Dave’s Killer Bread (если верить их истории, там чел реально отсидел 15 лет, вышел и стал печь хлеб и устраивать на работу других бывших зэков; это вам не история про девочку Барбару, которая придумала новые хлопья). Я знал, что на Kind Bars должен быть купон в $2, плюс $5 за Mega Event, с финального счета должно быть скинуто $7, но скинулось только $6:


$2 с баров скинули, а вот вместо “купи-5-сэкономь-5” получилось “купи-5-сэкономь-4”. Акция сработала, но только четыре раза. Такого раньше с нами не случалось. И не то, что нам так важен этот последний $1 (был бы важен, мы бы не жили в центре Сиэтла и не ходили по ресторанам), но это вызов моей способности просчитать комбинации. Вот это я не мог простить, поэтому мы подозвали работника магазина и сказали, что у них в программе баг и они должны нам вычесть еще $1.

Китайского вида дедушка полез в рекламную газетку, долго искал, к чему придраться. Не нашел в ней наанов и сказал, что поэтому нам доллар не положен. Мы предложили прогуляться в хлебный отдел и убедиться, что на ценнике наанов эта акция объявлена. Плюс напротив них в терминале стоит символ “< +” – кто кого должен учить, что это значит? Сходили, убедились, что правы мы (мне так приходилось иногда фоткать ценники, чтобы спорить с кассирами, которые смели усомниться в моей памяти и интеллекте). Работник воскликнул, что оно могло или сработать, и тогда должно быть минус $5, или не сработать, и тогда не должно быть скидки вообще. “Exactly”, – согласились мы. Дедушка не стал с нами дальше спорить, ввел какой-то код и вычел нам доллар – LYALTY RFUND в чеке.

Мы оплатили покупки и отправились домой, но загадка, почему вычли $4, а не $5, осталась. Работник магазина был уверен, что это из-за наанов. Мой брат предположил, что из-за Kind Bars, и, конечно, PhD в математике оказался прав. Но у меня ушло минут 10, чтобы догадаться, в чем дело.


А дело в том, что купон на бары был типа “Save $2.00 on 2”: купите 2, получите $2 скидки. И когда скидки начали вычитаться, они вычли все $2 из первой пачки, а не по $1 из каждой, что было бы логичнее. Полная цена пачки $2.99, но магазинная скидка без всяких купонов и акций была $1. То есть из $1.99 их софт вначале вычел $2, получил –$0.01. И только потом он учел, что мы собрали пять предметов по акции, и начал вычитать из каждого по $1 (вот тут они делают так, а не $5 отдельно). Из тех баров, которые стоили $1.99, доллар отнялся нормально, а из тех, что стали стоить -$0.01, нет. Произошел глюк в системе, которая не захотела уводить магазин в дальнейший минус. Поэтому мега-ивент сработал (пять предметов, 5 “плюсиков”), но вычел только $4.

– И кто кого в итоге обманул? – спросил меня брат. – Мы их, или они нас?
– Никто никого не обманул. Если бы их купон применился к барам 1+1, а не 2+0, то мы бы получили свой законный доллар без привлечения персонала магазина. Вот только я не знаю, дали нам этот “минус 1 цент”, или они округлили его до нуля: if (price < 0) price = 0;

Стал прикидывать на ходу по последним цифрам в чеке. Выходило, что недодали нам этот цент. Но тут я заметил, что магазин нам его дал, но его тут же забрали назад в виде налога. Мы же собирались в Whole Foods, не думали столько вещей покупать, и пришлось взять еще один бумажный пакет за 5 центов. Но 1 цент налога на 5 центов – это не 10.1%, а 20% налога. Я понимаю, что это Math.round() такой, но все же обманули нас – штат Вашингтон на полцента.

Это я не учитываю cash back от Bank of America в 2% от grocery purchases, но кешбеки по кредиткам – отдельная длинная история с расчетами, а пост и так получился длинный.

пятница, 16 августа 2019 г.

Я учусь решать задачи по программированию

В прошлом году я решил начать по-серьезному учить программирование, чтобы самому делать мобильные приложения. До этой цели я пока так и не дошел, поэтому пока расскажу о двух сайтах с программистскими задачками, которые мне сильно помогли прокачать навыки в этой сфере: Codewars и LeetCode. Таких сайтов сейчас развелось множество, но я решал задачи только на этих двух, поэтому буду делиться личным опытом и успехами.


Исторически первым я пришел на Codewars (мой аккаунт там). И он мне чем-то напомнил изучение иностранных языков на Duolingo: можно точно так же с полного нуля начать с самых простых задач, где требуется определить четное ли число или написать простейший for loop, минимум теории – максимум практики:

Конечно, тем, кто вообще никогда не программировал (вот у нас в школе, которую я закончил в 2002 году, программирования не было; на химфаке тоже; брат все учил по книжкам, но комп у нас был, поэтому что такое for loop, я смутно представлял), придется даже с простыми задачами лезть в гугл, на StackOverflow, но это будет не чтение теории, которую непонятно, куда применить, а поиски ответа на конкретный вопрос. Зато потом, после своего кривого алгоритма, можно будет посмотреть решение других людей и выучить из них еще больше. Я вот прямо скажу, что решив на Codewars 50 простейших задач по питону, я узнал о нем больше, чем от чтения 350-страничного учебника по Python для начинающих.

Задачи на codewars придумывают другие юзеры, и за несколько лет их накопилось несколько тысяч, самого разного уровня сложности (они обозначаются цифрами от 8 до 1: “восьмерки” – самые простые). На каких-то языках больше, на каких-то меньше. Некоторые задачи универсальны и могут быть переведены почти на любой язык. Другие – полностью зависят от фич определенного языка или группы языков. Этим Codewars очень понравился моему брату, который провел на этом сайте даже больше времени, чем я, и вышел на 21-е место в общей таблице пользователей (я где-то в районе 900-го места обитаю):


Мой брат глубоко изучил JavaScript, подтянул ассемблер, а когда в этом году на Codewars добавили языки формальных доказательств – тема, тесно связанная с его научной работой – такие как Coq, он зауважал этот сайт еще больше.

Я же начал прошлой весной с C#, потому что мы планировали переходить на кросс-платформенный движок Unity для создания приложений. Прорешал на нем несколько сотен задач, но год назад брат решил, что Unity нам не подходит и посоветовал мне учить нативную для андроида Java (на популярном нынче Kotlin там мало задач еще). Вот я так с тех пор на Java и решаю (а C# забыл). Недавно стал еще Python и JS решать – самые простые задачи 8-го и 7-го уровней. Для общего развития: на Python брат пишет скрипты по обработке файлов, на JS есть свой мобильный движок ReactNative. На Duolingo я так когда-то учил пять языков параллельно. Без практики почти все забыл, но основы в мозгу остались.

Но проблема с Codewars была и остается в том, что я не могу заставить себя решать сложные задачи (4 и сложнее). С простыми задачами я почти сразу вижу, как их решать и бросаюсь писать код. Через десять, максимум двадцать минут, моя программа проходит тесты, и я получаю моральное вознаграждение. Размышлять часами над сложными задачами, которые я, вполне возможно, и не могу решить в силу ограниченности моих познаний, мне скучно.

И вот недавно я завел аккаунт на LeetCode – еще одном сайте по решению задач, даже более известном, чем Codewars, потому что задачи оттуда часто используются компаниями для интервьюирования программистов. Там тоже есть (приблизительное) деление задач по сложности на простые, средние и трудные, но даже самая простая задача потребует уже определенных познаний. Правда, задачи при этом не привязаны к конкретному языку программирования, а тестируют абстрактные алгоритмы, которые фундаментально одинаковы и на Java, и на Python, и на C++.


Я снова рисковал завязнуть только на самых простых задачках (их там не тысячи, как на Codewars, но сотни – хватит на несколько месяцев), если бы не такая вещь как contests (соревнования). Раз в неделю, субботним вечером (по тихоокеанскому времени; в Китае утром) всем желающим предлагается решить за полтора часа 4 задачи (обычно 1 простая, 2 средние, 1 сложная).

Я никогда не участвовал в олимпиадах по программированию, но мне стало любопытно, решу ли я хотя бы одну задачу, и я записался на свой первый контест. После тренировок на Codewars я справился с простой задачей за 12 минут, у меня оставалось еще больше часа, но вот “средние” задачи для меня оказались не по зубам. Возможно, я допустил стратегическую ошибку, потратив все оставшееся время на задачу, которая объективно была сложнее другой. Но та другая была о “деревьях” – популярной структуре данных – а я решал о них всего одну задачу до этого и испугался деревьев. В итоге я больше так ничего и не решил и финишировал в районе 2000-го места.

Подобная же ситуация повторилась через неделю: я решил простую задачу за 12 минут, а потом все оставшееся время бился со средними задачами. Мне стало обидно: контест на полтора часа, а я отваливаюсь через 10 минут. И я засел за чтение теории (книги по алгоритмам, которые я считал, что мне не нужны в мобильной разработке), за разбор нерешенных мной задач и за решение задач сложнее “моей зоны комфорта”.

Уже на третьем контесте моя подготовка дала плоды: я смог решить три задачи и занять 550-е место. Возможно, они были чуть проще на этот раз, но если бы сильно проще, то другие участники обогнали бы меня как и раньше (при равенстве очков за решение задач места распределяются по времени, затраченном на решение). У меня даже оставалось 30 минут, чтобы подумать над “сложной” задачей. Но тут я уже был бессилен. Я дорешал ее через неделю с подсказкой брата (“делать двойную рекурсию”). Он сам явно мог бы решить там все задачи, все же это не “научные” проблемы, а вопросы для интервью, но он вообще не любит соревноваться на время. А меня порой захватывает азарт.

Неделю назад я поучаствовал в своем 4-м контесте, за полтора часа решил две задачи, а третью дорешал только через 25 минут после окончания (но я был на правильном пути; мой брат сказал, что она простая, и я должен был решать ее на контесте, но вот не решил). Ожидаемо оказался на 940-м месте, но все равно был доволен собой. После первых двух неудачных контестов мне было принципиально научиться решать эти задачи, а время – фактор второстепенный.


И вот я оказался с этими задачами на некоем распутье. Я не собираюсь проходить интервью в компании, я не собираюсь заниматься computer science в научном плане, для мобильных приложений умение решать алгоритмические задачи на время не пригодится. Нужно ли мне продолжать тратить время на эти сайты, или это чистая прокрастинация, которая только отвлекает меня от основной цели – научиться делать приложения?

Я уверен, что потрать я на контесты еще год-два, я буду гарантировано решать там четыре задачи и, если повезет, попадать в первую сотню. Денег или славы мне это не принесет. Я никогда не смогу обогнать лидеров, которые занимаются решением подобных задач всю жизнь (я посмотрел, что один из победителей контестов neal_wu еще в 2008-2010 годах брал золотые медали на международных олимпиадах по информатике, закончил Гарвард и работает в научном отделе Google; у него, наверно, такой отдых перед сном – зайти и решить все 4 задачи за 20 минут, напугав малышей).

Как я написал в Case Study #1, есть у меня талант решать задачи на время. В школе, универе или на интервью его очень ценят. Но в реальной работе над реальными проектами требуются другие навыки. В первую очередь не бросать работу, когда стало скучно, а доводить ее до конца. И я не знаю, какой контест смог бы меня научить такому, если даже финансовая мотивация от написания мобильных приложений не помогает мне довести хотя бы один из моих проектов до публикуемого состояния.

Все эти задачи в итоге сведутся не к изучению программирования, а к “занимательной математике”. К задачам, которые тоже раньше задавали на интервью: “Дано 12 шаров, один из них чуть тяжелее или легче остальных (неизвестно, легче или тяжелее), определите какой за три взвешивания”. Эту задачу я тоже решил, она хорошая, но никак не помогает разобраться с анимациями в андроиде.

Во многом я пишу этот пост, чтобы подвести некий итог решению задач. У меня так бывает: написал пост о фильмах и перестал их смотреть. Каждый учится по-своему, но если вы начинаете учить языки программирования я готов порекомендовать Codewars, если хотите посоревноваться в придумывании алгоритмов на время, LeetCode – неплохая платформа для этого. Мне она дала мотивацию разобраться с рекурсией. Я определенно продолжу решать там задачи время от времени, чтобы не забыть Java. Но надеюсь, что когда-нибудь напишу здесь пост и о своем собственном приложении, а не только о том, как я решаю чужие задачи.

воскресенье, 11 августа 2019 г.

Один год веду инстаграм: впечатления

Прошел год, как я создал аккаунт в инстаграме. За это время я разместил там 208 постов, но это не 208 фотографий, а больше, около 1000, потому что я почти всегда выкладываю сразу несколько, чтобы показать объект с разных сторон или в разное время года. Основной темой постепенно стал Сиэтл: его достопримечательности, современные скульптуры и природа.


ЖЖ был и остается для меня главной площадкой. Я не понимаю, как люди публикуют в инстаграме длинные тексты – мне их там даже читать не удобно, не то, что набирать одним пальцем на телефоне. А я все же больше писатель, чем фотограф. Инстаграм я не забросил исключительно потому, что он не конкурирует, не дублирует, а добавляет мой жж: например, о путешествии в СФ я написал в жж, поэтому в иг его не будет; а поездка в Олимпию, столицу штата Вашингтон, будет в инстаграме в виде десятка фотографий (больше в один пост не лезет), и в жж я могу о ней уже не упоминать.


Мне еще помогает, что инстаграм я посматриваю с десктопного компьютера, и в таком случае там совсем нет рекламы, и все посты в ленте располагаются в удобном хронологическом порядке. Я могу смотреть и слушать Stories в отдельном окне параллельно другой работе, как я делаю с ютубом. Иначе у меня не было бы на них времени. В поездках я заходил в инстаграм с телефона – это ж ужас, сколько там рекламы, после каждого третьего поста или истории. Вот от такого я бы точно сбежал через месяц, не то, что через год.

Я сбежал бы и в том случае, если бы мне было совершенно некого там читать и смотреть. Но помимо моих старых знакомых, которые там обосновались вместо жж, я сумел за год найти и несколько новых интересных мне аккаунтов. Вначале я вообще много всего добавил: и химиков, и про космос, и оперных певцов, и сиэтлских фотографов. Но очень быстро понял, что слишком много времени на инстаграм я тоже не хочу тратить. 10 минут утром, 10 минут вечером – ок, но сидеть там часами, разглядывая в сотый раз гору Рейнир на закате, надоедает. Поэтому ротация людей, на кого я там подписан, была весьма активная. Сейчас я своей лентой более-менее доволен и специально не ищу, кого бы еще добавить.

Как я уже упомянул, темой моих собственных постов стал Сиэтл. У меня за 3,5 года жизни здесь накопились тысячи фотографий, которые я делал во время прогулок или вообще из окна квартиры. Что-то я показывал в жж. Например, у меня была целая серия из 4 постов о “знаках”. Но инстаграм подходит идеально для выкладывания таких фотографий “ни о чем”, с минимумом сопроводительного текста. Я не только разобрал свой сиэтлский фотоархив, но и заставил себя почитать, как называется та или иная скульптура, что она значит и кто ее автор. Таким образом ведение инстаграма вдохновило меня на несколько необычных прогулок по городу, например, чтобы сфоткать всех ”блох” вдоль Eastlake Ave.


Тем удивительнее, что самым залайканным постом (91 лайк) стало не изображение из Olympic Sculpture Park, а подборка фото строительных кранов (чего-чего, а этого добра в Сиэтле хватает; один даже упал недавно, с человеческими жертвами). Похоже, что в иг есть фанатские сообщества башенных кранов или крышек люков, и если пост попадает по нужному хештегу в какой-то топ, то они все приходят отметиться. Но я за лайками и фоллоуверами особо не гонюсь. Последних у меня как стало около 150 человек после первых двух месяцев ведения иг, так и остается. Из них примерно половина – люди, кто меня знал и без иг, еще четверть – боты.


Индексацией текстов я в иг недоволен. Это все же закрытая платформа. Если гуглить мои описания фотографий, то находятся ссылки на сторонние сайты, которые копируют инстаграмовский контент, а внутри самого иг поиск возможен только по хештегам. Еще одна причина, почему можно не напрягаться и не писать длинные описания на тему “что хотел сказать скульптор”. Я порой даже думаю, что зря я все это выкладываю на иг: если я хочу принести максимальную пользу, то надо выкладывать фотографии в Wikipedia. Я со своей мыльницей неважный фотограф, но очень многие скульптуры там вообще никак не представлены. Не то, чтобы человечеству так важно было знать, какая железяка стоит перед сиэтлской библиотекой, но от того, что я выложу в иг миллионную фотку Space Needle, никому точно пользы не будет.


Сиэтл – город большой, но не бесконечный, не исключаю, что скоро у меня закончатся идеи, что еще можно на эту тему в иг выкладывать. У меня, конечно, есть много фоток из поездок. Обычные люди именно их стали бы выкладывать в иг, да еще и в реальном времени. Но вот такой я неправильный инстаграмер. Не люблю спонтанность. Сейчас я выкладываю туда три поста в неделю. У меня в папках разложен запас сиэтлских объектов на месяц, а дальше посмотрю. Может, перейду в режим, когда ничего регулярно не выкладывается, только если мы куда-то съездили или рядом с нами установили новую необычную скульптуру.

пятница, 2 августа 2019 г.

Контрольные по ФОХ

Nature/Nurture, курица или яйцо – задумался я на днях о похожей проблеме: это потому, что я много решал задач и хорошо выступал на олимпиадах, я продолжал и в будущем успешно участвовать в подобных интеллектуальных соревнованиях на время; или у меня от природы повернуты мозги в эту сторону, и благодаря этим повернутым мозгам я мог и в олимпиадах побеждать (в отличие от своего брата, у которого мозги повернуты в другую сторону), и потом легко готовиться и сдавать экзамены? Рассмотрим Case Study #1: контрольные по ФОХ.


Осень 2005 года. Я начинаю четвертый курс на химфаке СПбГУ. В конце третьего курса мы распределились по кафедрам, и у нас наконец-то есть более специализированные предметы. “Физическую органическую химию” я беру (да, беру, хотя в СПбГУ у нас не было выбора: что в расписание поставили, то и брали) вместе с другими четверокурсниками “органического куста”, куда входят кафедры органики, собственно ФОХа, моя ХПС (химия природных соединений) и ВМС (высокомолекулярные соединения). Курс ведет доцент кафедры ФОХ Никифоров Владимир Александрович, который потом будет рецензентом моей дипломной работы.

Ему около 40 лет, и он строит курс с “западными” элементами – читает лекции со слайдами PowerPoint (на которых я неизменно засыпаю – вот это тоже что: лень или потребность в бóльшем потоке информации на генетическом уровне?), упоминает современные исследования (из его лекций я узнаю о Soai reaction, уникальность которой до сих будоражит мой ум) и проводит письменные контрольные, которые очень сильно напоминают американские midterm exams. После органики на третьем курсе, которую престарелый лектор читал нам по учебнику 1971 года (советский перевод с американского учебника 60-х), без упоминания палладиевых сочетаний, ФОХ кажется нереально крутым и актуальным предметом (все эти выученные механизмы и уравнения Гаммета позволят мне легко получить ‘A’ по Physical Organic Chemistry классу в Питтсбурге).



Контрольных по ФОХ было четыре (или все же три?), каждая на целую пару. Даже удивительно, как мы успели их написать за один семестр. Надо же еще материал выучить, прежде чем задачки решать. Состояла каждая из 10 задачек на уровне “расставить вещества по степени кислотности и объяснить почему”. Я был уверен, что по каждой контрольной максимум можно было получить 100 баллов, но фотографии показывают, что в третьей явно максимум был 150. Если набирал определенное число баллов по результатам четырех, то получал “отлично” автоматом, без экзамена. Ограничений на число “автоматов” не было: хоть все 30 человек бы получили, и экзамен можно было бы не проводить. Но традиционно “автомат” получали только 4-5 лучших.


Вверху я разместил список результатов после двух контрольных. Вот это уже не по-американски: в США знаешь только свои оценки. Если что-то в Pitt онлайн и выкладывали, то шифровали кодами, имена открыто не писали. Мне казалось, что я сфотографировал все четыре списка, но вот оказывается, что только два – после второй и после третьей:


Вверху – 4 олимпиадника. Про Женю Ларионова я уже упоминал в посте об олимпиадах, с Андреем Борзенко я последний раз виделся в прошлом мае в Ванкувере. На Всероссийскую олимпиаду в Новгороде в 11 классе с нами еще ездил Сергей Мясников, который тут не на самом верху, но он всегда был пофигист и прагматик, после СПбГУ он не поехал в Германии-Канады делать PhD, а пошел сразу работать тестировщиком софта.

Костя Королев – тоже олимпиадник, но на год нас старше. Я как-то никогда не обсуждал с ним его олимпиадное прошлое, но слышал слухи, что выступал он всегда очень непредсказуемо: то решит все и обгонит всех на городе, а потом на России не может решить ни одной задачки. Якобы поэтому он и остался после первого курса универа “на второй год”, зато потом с нами учился на отлично. Но, кстати, даже по его результатам на этих контрольных видно, что он первую написал сильно лучше всех, вторую – весьма средне, третью – снова в лидерах. Ничего, работает сейчас в Питере заместителем генерального директора и вполне по специальности.

Вот существование таких людей для меня – аргумент в пользу того, что успехи в олимпиадах/контрольных все же это частично nature. Саша Манойлов – тоже хороший тому пример. Если он собирался, то решал все не хуже меня, а диплом у него был лучше, чем у нас всех. А если не собирался, то решал или сдавал экзамены сильно хуже своего реального уровня. Но вот тоже успешно устроился в индустрии в Швеции. О том, что олимпиадные результаты или студенческие оценки плохо коррелируют с дальнейшей карьерой, я уже писал. Вот Петя Ледин – мой коллега по ХПС и поездке в Боулинг Грин. По контрольным он далеко не вверху, но это не помешает ему опубликовать статьи в JACS и работать по специальности (в отличие от меня) в соседнем Орегона – с ним и его семьей мы совсем недавно виделись в Сиэтле.

Интересно, кстати, кто из этих 30 человек уехал. Я не про всех знаю и гуглить, как я делал с питтсбургскими одноклассниками не хочу. Знаю, что Костя Трошин и Ксения Бойко в Германии, Аня Алексеева в Италии, Кирилл Хистяев работает в Вay Аrea программистом в Гугле, Ваня Крылов где-то там же географически, но все же ближе к химии. Да и сам Никифоров с 2014 года работает не в СПбГУ, а в Норвегии, изучает методами ФОХ, насколько загадили океан химикатами.


Помню, как собрал он нас “автоматчиков” в конце семестра и спрашивал совета: как преподавать химию, чтобы было интересно и нам, отличникам, и тем, кто плетется в конце списка и с трудом получает “трояк” с пересдачи. На кого он, как лектор, должен ориентироваться? Не было у нас ответа. Но это уже другой вопрос. Пора вернуться к моему подходу к решению задач.

Я с олимпиадных времен научился очень быстро прочитывать условия, схватывать суть и начинать решать, но при этом быть готовым переходить к следующим задачам, если что-то не решается сразу. Помню, как после первой контрольной наша магистрантка с ХПС Оля Антимонова, которая брала этот курс с нами, жаловалась мне, что застряла на третьей задаче, а потом оказалось, что надо было не тормозить, а идти дальше, там под конец были простые задачи, которые она не успела решить. Вот тут кажется, что все же опыт олимпиад, решение сотен задач на время чему-то учит.

Мне, конечно, было бы приятнее рассказывать, что это я так много учился, поэтому так много знаю. А если у меня просто мозги особенные, которые умеют запоминать кучу нужной и ненужной информации, то нет ничего особенно удивительного, что я готовился к экзаменам меньше других, а сдавал лучше. Я мог читать и запоминать, а другие не могли. Где им со мной тягаться в таких искусственных соревнованиях? А система образования благоволит и раздает плюшки и стипендии как раз тем, кто умеет за час решить больше задачек с известными ответами, а не тем, кто умеет месяцами-годами решать научные задачи.


Если у меня будет вдохновение, то я напишу потом пост и о Case Study #2 о решении на время уже задач по программированию, который и вызвал у меня воспоминания об этом Case Study #1. По жизни я могу тормозить над простыми вещами, но в условиях соревнований подключаются какие-то внутренние ресурсы, которые позволяют решать то, что в обычной жизни я бы не решил. Или лучше написать о дебатах кандидатов от демократической партии?