Умоляю, уберите скорее от экранов перфекционистов и беременных своей чудесной идеей заказчиков. Пост содержит боль. И вообще, проконсультируйтесь с вашим психотерапевтом.
Я — аналитик и уже привык: все и всегда происходит не по ТЗ. Это норма, и удивления давно у меня не вызывает — я уж стал думать, что так оно и надо. И тут внезапно увлекся машинным обучением, пошел на курсы, а там надо сделать задание по программированию, а потом проверить три чужих таких же. Я посмотрел на то, как разработчики выполняют учебные задания, и в голове сразу же сложился пазл, как же это все так получается-то.
Сразу же хочу ответить на несколько важных вопросов.
А может, это не настоящие программисты, а просто начинающие безрукие упыри?
Нет! На этих курсах есть этап знакомства, и там все обычно пишут, что давно в разработке и решили квалификацию повысить. Да и сами курсы — довольно-таки зубодробительные, с большим количеством матана и линейки. Не для джуниоров совсем.
А как же можно проверять чужие задания, если ты сам не шаришь?
Задание устроено гениально! Вам дают код, и в нем есть места, куда нужно самому дописать свой код, а есть места, где нужно ответить на вопросы текстом, сделать выводы и обобщение. Когда проверяешь сокурсников, то иногда понимаешь, как ту же функцию можно было реализовать иначе. Кайф!
В чек-листе примерно 40 вопросов, в духе: “В задании просили вывести 12 признаков, а не 13. Проверьте, действительно ли признаков 12.”.
Все дело в том, что убрать 13-ый признак оказалось не так легко. Пришлось изрядно вкурить доков, чтобы научиться просто так, опа, и убирать 13-ый признак в ассоциативном массиве, не городя дурацких циклов.
Ну хорошо, ты проверял задания разрабов, с каким-то опытом, и что же тебя там так поразило?
А поразило меня, ребята, повальное наличие 13-ого признака. Просто никто не стал заморачиваться!
40 тестовых вопросов я бы разделил на группы:
* Нужно использовать какой-то метод, о котором написано. Обычно, все справляются.
* Нужно реализовать какую-то задачу. Обычно, тоже справляются.
* В этой задаче нужно учесть важные детали. Есть детали простые, например, подписи к графикам. На это все забивают. Хотя в каждом чек-листе на проверке есть пункт “А есть ли у графиков подписи?”. Сижу, проверяю задания — ни у кого нет подписей!
Дальше есть мелочи, о которых не сказано, как они делаются. Ну, например: “Вывести коэффициент альфа”. Чтобы его вывести, нужно немного вкурить доки или догадаться. Почти все забили.
И еще есть мелочи, с которыми нужно задолбаться: “Вывести минимальный коэффициент альфа для каждого столбца”. А такого метода нет, нужно делать вручную — никто не стал заморачиваться.
Ну это же мелочи! Главное, ведь, понять принцип во время обучения! Что ты привязался?
Во-первых, посмотреть, например, альфы просто необходимо для понимания принципов. Во-вторых, есть еще вопросы типа “вывод”, и если неряшливо относиться к мелочам, то в выводах начинается жара. Например, у человека на графике “шпилька” в потолок, а он в выводах пишет, как все красиво сходится к теоретическому нормальному распределению.
Ну ладно гнать! У тебя у самого, что ли не было багов?
Были. У меня тоже ничего не сходилось. Это было видно, и я переделывал. Я замучался с 13-ым признаком, замучался с альфами.
Надо просто пилить код, пока корректный ответ на вопрос задания не будет найден. И, в отличие от реальной жизни с недоделанными вопросами, дальше не пропускают.
И тут меня впечатлил второй важный момент. Для того чтобы вкурить, как все работает, приходилось много гуглить. И, естественно, попадались чужие проекты. Многие даже в Гитхабе. А какие-то — висящие на домене какой-нибудь конторы, которая предлагает свои услуги по разработке. Хотя вываливать задания, конечно, запрещено. Но кто читает правила? Ну так вот, мое грустное открытие в том, что очень многие авторы этих проектов бросили обучение год, два или более назад.
Да что там говорить! Был даже парнишка, который заморочился и выбросил-таки 13-ый признак из списка, и даже одну альфу вывел. Вот, правда, под конец этот супермен подустал, поэтому забил на графики вообще, а в выводах написал: “Ну тут все аналогично.”
Благодаря этому опыту, у меня родилось понимание, как же все происходит не по ТЗ
Сделали несколько пунктов, дальше заморачиваться не стали, а потом устали, время поджало, и вообще кусок решили не делать.
Ну, не то чтобы я этого раньше не понимал, и не то чтобы я сам в этом плане безгрешен, но тут прямо все, как на ладони. Сижу, делаю задания с альфами и сразу понимаю, что не увижу их на проверке.
Да знаю я этих рукожопов, я не такой!
Конечно, иногда попадаются разрабы высокой четкости. С ними есть сложность: они как посмотрят на ТЗ, в котором есть мутные места, так сразу говорят: “Тут какой-то бред, я с таким не работаю!” Год не работают, два не работают, начинают голодать и таки ввязываются в какой-то ад. Ну или думают: “Ну его нафиг! А стану-ка я лучше инструктором по парашютному спорту или скалолазанию”.
А бывает еще такой вариант. В ТЗ все — очень четко, разраб забил и давай юлить: “Ой, у тебя запутано! Ой, а я думал не так, а по-другому.” И клиенты тоже любят: “Ой, а мы думали, что это само собой разумеется.”
Вместо заключения: “И как с этим жить?”
Да так же, как и раньше жили:
— обязательный чеклист по каждой задаче;
— мало пунктов на каждый этап;
— обязательное обсуждение каждого пункта голосом;
— короткие спринты.
Конечно, заказчик хочет полный фарш, и чтобы ему показали обязательно готовую систему. Надо этому сопротивляться и с болью формировать чеклист из малопунктов на короткий этап. И да, я люблю голосом проговорить каждый пункт и с заказчиком, и с разрабом. А еще люблю прописать прямо в ТЗ, что реализовано не будет.
А бывает, забью на что-то из этих светлых принципов зачем-то и страдаю…
Автор: krivotester