Categories:

Programming Mobile Applications for Android Handheld Systems, Coursera & University of Maryland

Ууух. И вот я снова могу говорить о профессиональном, достаточно серьёзном. Собственно, вот:

Coursera Android certificate

И вот, мой личный результат.

Это – годный курс по Software Engineering, в общем-то, не “нубский”, не “хеллоуворлдный” – но, к счастью, и не “зубрильный”, учить API наизусть тут менее важно, чем уметь найти нужную информацию по нему в случае необходимости. И – первый курс в соответствующей специализации, которая очень близка к моей непосредственной профессиональной сфере, посему я считаю, что по крайней мере для моей работы в текущей компании мне будет полезно это пройти (и вообще, эта новая фича Курсеры мне, кстати, очень нравится, ибо даёт ту самую Системность взамен фрагментарности, и за это уж точно не грех заплатить).

Ну да ладно. Если вкратце – курс очень хороший по материалу и его подаче (без шуток – не просто “программирование мышкой”, как в другом курсе по андроидам, а системное и вдумчивое путешествие по API, его структуре и тонкостям), но с некоторыми весьма ощутимыми проколами в организационной части. Проколы совсем уж впечатление от курса не испортили – но местами таки были неприятны, и о них я расскажу в том числе.

Сам материал – повторюсь, мне очень понравился. Структурирован по темам конкретных частей API (см. линк с результатом выше, там есть программа обучения). Рассказан весьма “юзер-френдли”, без лишней зауми, но и без литья воды в лекциях. Да, пожалуй, стиль повествования преподавателя – один из лучших, виденных мной на Курсере, видно, что человек – профессионал своего дела, и преподавать любит и умеет. К каждому примеру кода из видео есть конкретный проект в репозитории курса, можно откомпилять, запустить и посмотреть в действии. И, более того, при выполнении домашних заданий эти самые примеры чаще всего оказываются очень полезны, в них можно подсмотреть какие-то нужные куски кода. Задания эти тоже были структурированы по темам, представляли из себя “скелет” кода, в который по данным преподавателям гайдлайнам нужно было дописать конкретный функционал. Где-то просто, где-то (в основном, там, где было много UI и графики, это вообще были, ИМХО, самые тяжкие недели) – достаточно муторно и занудно. Но понимаю, что необходимо, посему не сопротивлялась, выполняла всё.

Механизм проверки заданий был интересен, кстати. Я не знаю, может, есть какие-то технические ограничения на запуск андроидовских юнит-тестов на курсеровской платформе, но вообще – впервые такое вижу. Сабмитился не сам код, а лог-файлы из эклипсовского LogCat(вывод сообщений в лог был заботливо распихан преподавателем заранее, или же давался образец сообщения, которое надо было выдать в конкретном методе), и проверялся порядок сообщений в логах, правильность дампуемых в них данных, и тому подобные косвенные подтверждения того, что код работает корректно. Я не знаю, насколько в данном случае есть риск получения незаслуженной оценки, хорошей или плохой, и насколько силён будет у народа соблазн подтасовать “нужный” вывод руками в текстовом редакторе – но вообще, я выполняла всё честно, и если у меня корректно выполнялись данные преподавателем юнит-тесты, то и лог-файл курсеровский автогрейдер принимал без какой-либо ругани. В общем, вопрос сводится к тому, что кому нужно – просто получить “бумажку для галочки”, или таки знания для дела?

Ещё помимо заданий на программирование были тесты. Но они как раз там были скорее “для красоты” – сто попыток, засчитывается лучшая из них, в тестах по 15-20 вопросов. Но при этом – надо отдать команде курса должное, вопросы не только дублировали сказанное в лекциях, но и заставляли заглянуть в документацию по API (впрочем, чаще всего давался конкретный раздел оной, где можно было найти ответ). Это хороший подход, кстати – не ждать, что тебе всё разжуют и разъяснят, а так или иначе получать привычку к самостоятельному нахождению нужного куска информации.

Но вообще – что до домашних заданий, то, как я увидела уже после выполнения всех заданий, основным организационным проколом было слабое соблюдение Coursera Honor Code на форуме. Народ, в общем-то, позволял себе вольности, которые на других курсах нещадно удалялись и порицались. Помнится, на курсе по функциональному программированию от EPFL и Мартина Одерски была отдельная e-mail рассылка с текстом вида “видели решения на гитхабе, у кого увидим копипасту с них - отчислим”. Такой рассылки на этом курсе сильно не хватало, ибо, по свидетельствам народа, народные умельцы с гитхаба (и любители у них списать) на курсе водились. Да и на форумы постить куски кода в явном виде чаще всего было нельзя, а тут, увы, такое периодически бывало. Прекрасно понимаю, что при таком количестве юзеров (изначально на курс записались более ста тысяч человек!) и при вышеописанном порядке проверки заданий уследить за каждым анонимусом трудно – но всё же, жаль, что здесь не сабмитили сам код, в котором можно было бы программным путём отследить копипасту! Но, впрочем, если не сачковать, а таки выполнять задания честно – гарантированно узнаешь немало нового, и вообще выпрямишь руки. Оно стоит того, чтобы сесть и разобраться, поверьте мне!

И, наконец, финальный, хоть и простой, аки сибирский валенок (проще большинства домашек), course project – для тех, кто хотел сертификаты с отличием, причём отличие это в данном случае было практически обязательным для успешного прохождения специальности и допуска на capstone. И, да, как выяснилось, на то есть своя причина – если вкратце, то программа, которую мы делаем на оценку тут, станет отправной точкой для проектов из следующих курсов, и её надо будет дополнить и улучшить. Но выяснилось это, увы, не сразу. Дело в том, что в изначальном варианте страницы специализации ничего про distinction не было (там была всего лишь копипаста со стандартного курсеровского FAQ, про то, что “для успешного завершения специализации нужен passing grade по всем курсам”). Почтовых рассылок о столь важном изменении в Grading Policy тоже не делалось (хотя о менее важных изменениях письма таки были). И знали об этом из тех, кто на курсе с самого начала, в основном те, кто много сидят на форумах – вот там это таки обсуждали, спорить не буду, но с каких пор посещение форумов стало обязательной частью учебного процесса? В общем, когда приём заданий закончился, началась ДРАМА. Много ДРАМЫ.

Я сама тут знатно прокололась – учитывая, что на форумах сидеть мне в 99% случаев некогда, и под самый конец курса меня как раз тогда выдернули в Москву на MATE, после которого я была абсолютно никакая, и вряд ли была способна связать три строки кода, я сочла это задание необязательным, и решила его таки не делать. Что впоследствии привело к весьма шокирующим открытиям, после того, как мне написали истинное положение дел в личку, сами понимаете. Вот так сидишь и подбираешь челюсть с пола – “ыыыы, хрен мне, а не capstone project?!?” Спорить не буду, я тут по большей части ССЗБ, и, в конце концов, это онлайн-курс, а не персональные няньки для каждого лично, так что тут, как говорится, take it or leave it – но всё же, в данном случае имел место быть некоторый коммуникационный факап. Посему я, конечно, выразила некоторое сожаление об этом и спросила на форуме, когда следующий запуск (и будет ли таковой, что пока не ясно) – но сильно по крайней мере в паблике постаралась не ныть (о том, каково мне было дома, с моим-то перфекционизмом, предпочту деликатно умолчать).

Впрочем, учитывая, что я такая была не одна, и на форумах хватало и куда более ядрёно выраженного недовольства, через пару недель преподаватель таки признал, что “нехорошо как-то получилось”, и, чтобы не париться с разбором каждого случая лично, просто дал возможность засабмитить и оценить это задание ещё раз. За что лично я очень благодарна, и, как видите, шансом воспользовалась на все 100%. Впрочем, увы, ДРАМЫ и недовольства на форумах этот шаг не убавил, ибо тут начали ныть уже те, кто таки сдал задание с первого раза, типа, “ну вот ещё, снисходят тут до всяких ленивых лузеров, и наши выстраданные сертификатики будут менее элитненькими, ааааа, всё пропало!!!111” Да, не спорю, тот факт, что за соблюдением Honor Code тут следили так себе, и что примеры решения заданий можно было найти на всяких там гитхабах, мог породить некоторые злоупотребления, но, ИМХО, те, кто хотели злоупотребить, сделали это ещё до этапа оценки (что, конечно, не делает чести ни им, ни тем, кто эти злоупотребления допустил), а те, кому дали этот самый second chance – всё же по большей части энтузиасты, которым хотелось вытянуть всю специализацию до capstone project (где читеры не выживут в принципе). Доходило даже до предложений “сдать ещё раз только затем, чтобы иметь возможность на peer review выставить всем этим гадам по нулю баллов” – но, к счастью, по крайней мере я у себя таких случаев откровенного саботажа не заметила, здравый смысл всё же возобладал. И, в конечном итоге, всё хорошо, что хорошо кончается.

Самое забавное, что в пройденном мной почти два года назад курсе по финансам я сама писала на форумы что-то подобное, типа, “ну чего вы ноете, не могли, что ли, домашку сделать” – сейчас же я, в общем-то, понимаю, что случается всякое – и хреновая коммуникация, и ВНЕЗАПНЫЕ дела с последующей лютой задолбанностью, и ещё дохрена всего, и возможность дать людям шанс, в общем-то, не особо уменьшает ценность чьего бы то ни было сертификата (на собеседованиях одной бумажкой/пдфкой всё равно не удовлетворятся, и спрашивать будут). Так что мне за моё былое поведение в духе holier-than-thou даже как-то и стыдновато слегка. И за этот урок – не профессиональный, а скорее человеческо-социальный – я благодарна отдельно.

И, раз уж такая пьянка, следующие курсы из чистого принципа постараюсь закончить. Не говоря уже о том, что есть пара идей на личные проекты, но и о том, и о другом я буду писать по мере завершения. Так что stay tuned, будет вам ещё всякое и разное!