Итак история следующая.
На мое резюме выложенное на hh.ru откликнулась одна компания (пока называть ее не буду).
Телефонный разговор начался с обсуждения чем меня не устраивает текущая работа и тд.
Девушка рассказала какая у них хорошая фирма и на удивление начали разговор о з/п.
Разговор был ну удивление длительным для первого разговора. Под конец разговора она мне предложила выполнить тестовое задание, девушка уточнила что должно занять не более 5 часов. Я согласился.
Само ТЗ:
Тестовое задание для PHP-программиста
Необходимо разработать модуль для работы с SMS-биллингами.
Модуль должен состоять из 3х частей:
1.Скрипт, принимающий запросы от SMS-агрегатора (формат запроса описан ниже), генерирующий и отправляющий в ответ пароль (который будет отослан пользователю)
2.Простой админский интерфейс просмотра истории сгенерированных паролей (должно выводится последние 100 паролей)
3.Заглушка премиум-зоны (для доступа в котрую пароли и генерируются)
Требования:
PHP5 + Mysql
В БД должны сохранятся все данные, полученные от агрегатора
Механизм отправки паролей должен быть отказоустойчивым (на случай отказа БД)
Пароль генерируется на 1 день, в случае, когда для данного номера телефона уже есть пароль - новый пароль не генерируется, а увеличивается срок действия старого
Отправляемый пароль должен быть буквенно-цифровым и не должен содержать букв, которые могут быть восприняты с ошибкой (например О и 0)
Ваш код должен быть простым и читаемым
Выбор парадигмы программирования остается за вами, однако вы должны суметь объяснить почему вы выбрали тот или иной подход
Срок разработки - не более 5 часов
Вы должны выложить модуль на какой-нибудь хостинг и прислать нам в архиве код + схему БД
Формат запроса к биллинговому скрипту:
http://www.yoursite.ru/dir/script.php?pref=hitfm&txt=Передайте+Привет+Мне!
&tid=1234-aasvs-3345.1332&cn=ru&op=beeline&phone=79031234567&sn=8385
pref - Ключевое слово (префикс) в латинице
txt - Текст сообщения после ключевого слова.
tid - Уникальный код транзакции (transaction id)
cn - Двухбуквенный код страны
op - Оператор связи
phone - Номер телефона абонента (Только цифры, без знака «плюс» в начале)
sn - Короткий номер, на который было отправлено SMS-сообщение
Собственно ТЗ явно не на 5 часов, с моим более чем 3-х летним опытом это заняло намного больше времени ( делал почти до 4-х часов ночи ). Выкладывать на хостинг я не стал, просто отправил архив.
Получился довольно приятная система. Результатом я остался доволен.
Пришел ответ:
руководитель проверил Ваше ТЗ. К сожалению, оно не впечатлило, так что он озвучил свой отказ. Главная причина - это неправильная структура БД.
Руководитель оценил внешнюю сторону оформления задания (скриншоты, красивые интерфейсы и т.п.), но это не изменило общего впечатления.
Так что на этом мы прекращаем сотрудничество по этой позиции, но я желаю Вам удачи в дальнейших поисках работы!
Спасибо.
Отмазка про "неправильная структура БД" — полный бред ибо использовалась только одна простейшая табличка.
Теперь я думаю что меня наглым образом поимели. Фактически бесплатно написал модуль sms-регистратора.
Кстати отзывы про эту компанию не очень хорошие, только я с ними ознакомился к сожалению позже.
Для себя сделал вывод никаких тз без предварительного интервью и максимум на 2 часа.
D>Отмазка про "неправильная структура БД" — полный бред ибо использовалась только одна простейшая табличка.
Может в этом и проблема? Что за таблица — опиши.
D>Кто что думает по этому поводу?
Нечего делать какие либо тестовые задания вообще, и тем более когда они смахивают на реальное ТЗ
Здравствуйте, Tom, Вы писали:
D>>Отмазка про "неправильная структура БД" — полный бред ибо использовалась только одна простейшая табличка. Tom>Может в этом и проблема? Что за таблица — опиши.
Вот табличка — куда уж проще.
CREATE TABLE IF NOT EXISTS `requests` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`pref` varchar(10) NOT NULL,
`txt` varchar(125) NOT NULL,
`tid` varchar(30) NOT NULL,
`cn` varchar(2) NOT NULL,
`op` varchar(20) NOT NULL,
`phone` varchar(16) NOT NULL,
`sn` varchar(5) NOT NULL,
`password` varchar(32) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Здравствуйте, MozgC, Вы писали:
MC>А почему не использовали TIMESTAMP? MC>И еще названия колонок имхо слишком короткие, приходится додумывать что они значат.
Названия колонок полностью совпадают с параметрами запроса. Можно было и TIMESTAMP, на мой взгляд не принципиально.
Уже судя по ТЗ можно было явно определить, что это развод и попытка сделать часть работ из ТЗ забесплатно.
Вышли, пожалуйста, название компании мне в личку.
Здравствуйте, wety, Вы писали:
W>Уже судя по ТЗ можно было явно определить, что это развод и попытка сделать часть работ из ТЗ забесплатно. W>Вышли, пожалуйста, название компании мне в личку.
Здравствуйте, wety, Вы писали:
W>Здравствуйте, Diaver, Вы писали:
W>Уже судя по ТЗ можно было явно определить, что это развод и попытка сделать часть работ из ТЗ забесплатно. W>Вышли, пожалуйста, название компании мне в личку.
Полностью с тобой согласен, это мой первый такой опыт. Нынешнюю работу я нашел только предварительно выполнив тестовое задание, правда оно было на 20 минут работы.
Здравствуйте, Toetomi, Вы писали:
D>>Отмазка про "неправильная структура БД" — полный бред ибо использовалась только одна простейшая табличка.
T>Все правильно сказали. Зачем в одной таблице хранить повторяющиеся коды операторов, короткие номера и т.д.
Требования:
PHP5 + Mysql
В БД должны сохранятся все данные, полученные от агрегатора
Здравствуйте, Diaver, Вы писали:
D>Здравствуйте, Toetomi, Вы писали:
D>>>Отмазка про "неправильная структура БД" — полный бред ибо использовалась только одна простейшая табличка.
T>>Все правильно сказали. Зачем в одной таблице хранить повторяющиеся коды операторов, короткие номера и т.д.
D>
D>Требования:
D>PHP5 + Mysql
D>В БД должны сохранятся все данные, полученные от агрегатора
D>
Сорри, не внимательно прочитал.
Справочники можно было создать, честно говоря об этом не подумал, это повод для категоричного отказа?
Здравствуйте, Toetomi, Вы писали:
T>Это повод назвать структуру БД неправильной.
Если вывести эти данные в отдельные справочники, то в основной таблице надо все равно хранить id-шники записей из справочника, порождая при более сложные запросы и логику приложения, хотя в целом вы правы, так было бы правильно.
Здравствуйте, Diaver, Вы писали:
D>Здравствуйте, Toetomi, Вы писали:
T>>Это повод назвать структуру БД неправильной.
D>Если вывести эти данные в отдельные справочники, то в основной таблице надо все равно хранить id-шники записей из справочника, порождая при более сложные запросы и логику приложения, хотя в целом вы правы, так было бы правильно.
Такие рассуждения могут говорить об отсутсвии хорошего релевантного опыта разработки.
да, мне кажется, достаточно красивый развод. уволился наверное чел важный, а нужно было срочно сделать эту систему. отдадут ее студенту и будет он ее дорабатывать и поддерживать еще года два.
стоит назвать контору
Здравствуйте, vb-develop, Вы писали:
VD>Такие рассуждения могут говорить об отсутсвии хорошего релевантного опыта разработки.
Согласен, звучит крайне непрофессионально, вполне возможно что опыта действительно не хватает,
не смотря на несколько достаточно солидных проектов за плечами.
Здравствуйте, __kot2, Вы писали:
__>да, мне кажется, достаточно красивый развод. уволился наверное чел важный, а нужно было срочно сделать эту систему.
За 5 часов (даже за 12)? Модуль без интеграции во внутреннюю инфраструктуру? От готового модуля, там процентов 10. Скорее всего начальство хотело тестовое задание, а программерам было лень выдумывать, что-то абстрактное, вот и взяли кусок из проекта и упростили. Я сам категорический противник таких заданий, но на разводку это явно не тянет.
Кстати, по мне это больше программистская страшилка, что недобросовестные конторы пытаются создать работающий код из тестовых заданий, подтверждения которой а ни разу не видел.
Здравствуйте, Abalak, Вы писали:
A>Здравствуйте, __kot2, Вы писали:
__>>да, мне кажется, достаточно красивый развод. уволился наверное чел важный, а нужно было срочно сделать эту систему.
A>За 5 часов (даже за 12)? Модуль без интеграции во внутреннюю инфраструктуру? От готового модуля, там процентов 10. Скорее всего начальство хотело тестовое задание, а программерам было лень выдумывать, что-то абстрактное, вот и взяли кусок из проекта и упростили. Я сам категорический противник таких заданий, но на разводку это явно не тянет.
A>Кстати, по мне это больше программистская страшилка, что недобросовестные конторы пытаются создать работающий код из тестовых заданий, подтверждения которой а ни разу не видел.
Но согласитесь эта система сама по себе достаточно автономна, задача по большому ложить обработанные данные в базу данных а дальше делай с ними что хочешь.
И в целом выглядит подозрительно. Но скорее всего вы правы, было интересно выслушать коллег по цеху.