Уже давно хочу задать грамотному рекрутеру вопрос про «Please add me to your contact list»: 10 из 11 человек не указывают причину, по которой хотят добавить кандидата в контакты. Например за всю историю моего профиля в Linked-in'e скопилось уже несколько десятков проигнорированных сообщений «please add me to your LinkedIn network», которые никак не поясняют зачем я должен добавить незнакомого мне рекрутера в свою сеть контактов, даже если я рассматриваю предложение о работе.
Очень редко пишут сопроводительное сообщение «у меня для вас есть такая-то вакансия» и только в этом случае завязывается предметный разговор. Поэтому интересно — это какая-то стандартная рекрутерская практика или небрежность и лень?
Неоднозначным мне кажется то, что в других языках со строгой типизацией этот код вызовет закономерную ошибку, а в питоне это очередной «специальный случай», который нужно иметь ввиду и TypeError'om его не поймать.
Мне кажется вы сравниваете теплое с мягким: форматирование не связано с логикой работы кода — у вас может быть напиша каша из кода и при этом программа будет отлично работать без ошибок. Поэтому проверка орфографии не является в данном случае прямой аналогией.
Вот например выравнивание параграфов и юстификация текста — это и есть аналог для код-стайла (пробелы в нужном месте, перенос строк и скобок и т.д.). Ведь если бы в ворде не было юстификации пришлось бы в ручную количество пробелом между словами выставлять — так же как и в коде отступы, но сейчас всем этим занимается IDE.
Это напоминает какую-то религию, чесслово. Ну или моральный кодекс строителя коммунизма. Спасибо, я уже этого наслушался.
Я бы назвал это тем, что отличает профессионального программиста от обычного и большинство крупных IT-компаний со мной согласны.
Это почему ещё? Всё зависит, в общем-то, от ответов на эти вопросы.
Это же риторические вопросы. Соблюдение стиля кода вообще не требует усилий — есть автоматическое форматирование. Все перечисленные мной best practices обязательны по-умолчанию, конечно в реальности на все это чаще всего не хватает времени и программист отказывается от чего-то менее критичного.
И все-таки хочется увидеть примеры, как отказ от зарекомендовавших себя практик привел к выпуску успешного продукта на N лет раньше своих конкурентов. Вы уже приводили в пример сравнение андроида и windows phone — так стало известно, что программисты во время разработки андроида не писали тесты? не проводили код-ревью? не продумывали архитектуру?
Вы ведь просите конкретных выкладок, возможно у вас есть контр-выкладки, которые заткнут за пояс МакКонелла и перевернут культуру разработки?
То есть мы, условно говоря, потратили 100 рублей сейчас, чтобы возможно (не гарантированно, но возможно) не тратить те же 100 рублей в будущем? Смысл где?
Объясню: программист с высокой культурой разработки делает достаточно много долгосрочных инвестиций в свой код. Он старается продумывать архитектуру, придерживаться принятого стиля кода, думает о лаконичности и поддерживаемости, пишет тесты. Программист пишет код не для пользователя «А», он пишет код для другого программиста (и автоматически для себя). Если он будет каждый раз задавать вопросы вроде «А в чем смысл архитектуру продумывать? Набросаю что-нибудь рабочее побыстрому. Зачем код-стайл соблюдать? Все равно этот код никто читать не будет...», то сразу после релиза его код можно просто выбросить. Поддерживать и добавлять в него новую функциональность будет очень дорого. Дешевле за 100 рублей заново написать.
Листер\Де Марко\МакКоннел уже давно изложили все необходимые обоснования в своих книгах, причем с числами из различных исследований крупный компаний (BellLabs, Microsoft и т.д.). Интересно куда ссылались данные вам «обоснования». Мне кажется что жизнь любого программиста делится на «до» и «после» этих книг, до их прочтения ты просто пишешь код, после – начинаешь всеми средствами повышать культуру написания кода.
Разумеется протестировать что-либо отдельно было нельзя
Я не совсем понял такой резкий переход к «разумеется», но если протестировать было нельзя, значит архитектура системы была неудачной — логика была недостаточно гранулирована в процедуры, скорее всего были процедуры с огромным количеством кода (возможно заказчик увидел это?). В результате написания тестов вы:
улучшили архитектуру системы
нашли несколько ошибок
написали тесты, которые очень сильно сэкономят время программистам, которые будут поддерживать и развивать код
Таким образом ваш заказчик сделал хорошую инвестицию в долгосрочное использование вашего кода, и это достаточно продуманный и мудрый шаг.
Как минимум стало лучше программисту, который будет рефакторить код генератора, если, например, потребуется перенести его в другой конечный автомат.
Изначально вы написали интеграционные (или функциональные) тесты на конечный продукт, желание заказчика иметь покрытие различных модулей юнит-тестами (они же «модульные тесты») вполне обоснованно. Особенно если планируется передать разработку другим командам или использовать уже написанные модули в других продуктах.
Так же не совсем понимаю, как написание модульных тестов привело к «полному переписыванию генератора» – там что-то страшное было?
«The film was made with absolutely no involvement from Apple.» — как бы говорит нам раздел тривия на imdb (http://www.imdb.com/title/tt2357129/trivia?item=tr1677862).
uniq = []
for line in lines_generator:
if line not in uniq:
uniq.append(line)
Если задача в том, чтобы выбрать уникальные строки не соблюдая порядок, то код не оптимален, т.к. известно что сложность поиска элемента в списке это в среднем O(n) и чем больше будет становиться uniq, тем медленнее будет работать программа. Правильный вариант использовать множество:
uniq = set()
for line in lines_generator:
if line not in uniq:
uniq.add(line)
Да никто же у вас «машинку» не отбирает — копируйте, распространяйте, только файлы защищенные авторским правом исключите из раздач)
А файлы защищенные авторскими правами уже можно получить на следующих сервисах: itunes store, google play, ivi.ru, now.ru, ayyo.ru, amediateka.ru, stream.ru, playfamily.ru, megogo.net — так что о том, что «не предложив ничего взамен» вы лукавите.
Это торрент трекеры не могут предложить мне удобное приложение для айпеда и\или телевизора, нужно качать, иногда даже конвертировать и потом через флешки или компьютер заливать на устройства.
Тут я согласен, что избаловал нас «свободный» интернет, но у меня интересная аналогия: например есть остров и там живет дикое племя, которое спит где хочет, есть что хочет, справляет нужду где хочет — у них полная свобода. Затем на этот остров высаживаются более развитые личности — строят дома, канализацию, рестораны и разрешают есть, спать и справлять нужду только в определенных местах. Казалось бы — племя потеряло былую свободу, но точно видно, что в долгосрочной перспективе племя приобрело намного больше.
Приблизительно такой процесс будет проходить и у нас — сначала мы немножко «пострадаем», а потом все будет так же как и было — только за деньги и законно). Если вы хотите как-то поучаствовать в этом процессе — идите к правообладателями и попробуйте предложить им партнерство.
>То есть я сегодня могу дома поглядеть того же нового «Риддика» или «Гадкий я — 2» в дубляже и хорошем качестве, которые в данный момент идут в кинотеатрах?
Сегодня — нет, но индустрия движется к этому: правообладатели придумывают новые типы лицензий и уже сейчас некоторые фильмы выходят в айтюнс раньше чем на DVD. Торрент-трекеры вам врядли чем-то здесь помогут, потому что хороший дубляж и качество можно взять только с DVD. Процесс развития сервисов для предоставления легального контента итеративный — как только доходы от продаж контента через интернет начнут составлять значимую долю, фильмы в нем будут появляться практически сразу после проката в кинотеатрах.
> Или даже скачать, закинуть на флешку и поглядеть на телевизоре в спальне? Где-где, говорите, такие сервисы?
Я не вижу удобства в том, чтобы качать что-то закидывать на флешку и нести ее к телевизору. Настоящее удобство — это открыть приложение на телевизоре и продолжить смотреть на нем фильм с того момента, на котором просмотр остановился на компьютере. Большинство сервисов уже сейчас имеют приложения для Smart-TV, Ipad'ов и Android-планшетов и позволяют вам удобно пользоваться созданной «экосистемой» — вам не нужны больше флешки, вы устанавливаете приложение и смотрите там лицензионные фильмы в хорошем качестве и с дубляжом. Ни одни торрент-трекер такого удобства вам не предоставит.
>Ну разве это не говорит о том, что что-то нужно пересмотреть модель распространения?
Да уже их куча. И рекламная модель есть и по подписке и отдельными покупками, чаще всего разделение фильмов по моделям сделано для сегментации пользователей — хочешь заплати 300 рублей и смотри целый месяц что хочешь, кроме новинок, а хочешь заплати 100 рублей и смотри новинку — кому что подходит. Иногда сам сервис выбирает с какой моделью он будет предоставлять контент и тут уже работает маркетинг.
Сравнение игр и фильмов как-то глупо выглядит. Если бы не было кинотеатров — то фильмы релизились бы абсолютно так же. Двд осталось жить год-два, уже сейчас VOD и EST лицензии выходят раньше DVD.
А вам нужны все фильмы\сериалы, или какие-то конкретные? Количество сервисов говорит о серьезной конкуренции на этом рынке в России, а значит идет очень быстрое развитие и легальное HD качество уже не за горами. Кстати в iTunes и Google Play высокое разрешение уже давно есть.
На Steam тоже есть модель подписки — для кого-то она просто удобнее, чаще всего фильмы продающиеся по подписке это не кассовый контент и у него потребители пересекаются редко.
Когда вы идете в кино, вы покупаете возможность посидеть в кресле в помещении кинотеатра. Фильм к этому отношения не имеет. Все взаимоотношения вас и кинотеатра регулируются законом о защите прав потребителя:
24. Зрители имеет право на:
возмещение стоимости билета в случае отмены просмотра, замены фильма или некачественной демонстрации по вине киновидеозрелищного предприятия, а также в случае непредоставления информации о возрастных ограничениях на просмотр киновидеофильма и отказа зрителя в этом случае от просмотра киновидеофильма;
https://www.youtube.com/watch?v=2qYSbKxt8ZQ
Очень редко пишут сопроводительное сообщение «у меня для вас есть такая-то вакансия» и только в этом случае завязывается предметный разговор. Поэтому интересно — это какая-то стандартная рекрутерская практика или небрежность и лень?
>>> print '25' * 5
2525252525
Вот например выравнивание параграфов и юстификация текста — это и есть аналог для код-стайла (пробелы в нужном месте, перенос строк и скобок и т.д.). Ведь если бы в ворде не было юстификации пришлось бы в ручную количество пробелом между словами выставлять — так же как и в коде отступы, но сейчас всем этим занимается IDE.
Я бы назвал это тем, что отличает профессионального программиста от обычного и большинство крупных IT-компаний со мной согласны.
Это же риторические вопросы. Соблюдение стиля кода вообще не требует усилий — есть автоматическое форматирование. Все перечисленные мной best practices обязательны по-умолчанию, конечно в реальности на все это чаще всего не хватает времени и программист отказывается от чего-то менее критичного.
И все-таки хочется увидеть примеры, как отказ от зарекомендовавших себя практик привел к выпуску успешного продукта на N лет раньше своих конкурентов. Вы уже приводили в пример сравнение андроида и windows phone — так стало известно, что программисты во время разработки андроида не писали тесты? не проводили код-ревью? не продумывали архитектуру?
Вы ведь просите конкретных выкладок, возможно у вас есть контр-выкладки, которые заткнут за пояс МакКонелла и перевернут культуру разработки?
Объясню: программист с высокой культурой разработки делает достаточно много долгосрочных инвестиций в свой код. Он старается продумывать архитектуру, придерживаться принятого стиля кода, думает о лаконичности и поддерживаемости, пишет тесты. Программист пишет код не для пользователя «А», он пишет код для другого программиста (и автоматически для себя). Если он будет каждый раз задавать вопросы вроде «А в чем смысл архитектуру продумывать? Набросаю что-нибудь рабочее побыстрому. Зачем код-стайл соблюдать? Все равно этот код никто читать не будет...», то сразу после релиза его код можно просто выбросить. Поддерживать и добавлять в него новую функциональность будет очень дорого. Дешевле за 100 рублей заново написать.
Листер\Де Марко\МакКоннел уже давно изложили все необходимые обоснования в своих книгах, причем с числами из различных исследований крупный компаний (BellLabs, Microsoft и т.д.). Интересно куда ссылались данные вам «обоснования». Мне кажется что жизнь любого программиста делится на «до» и «после» этих книг, до их прочтения ты просто пишешь код, после – начинаешь всеми средствами повышать культуру написания кода.
Я не совсем понял такой резкий переход к «разумеется», но если протестировать было нельзя, значит архитектура системы была неудачной — логика была недостаточно гранулирована в процедуры, скорее всего были процедуры с огромным количеством кода (возможно заказчик увидел это?). В результате написания тестов вы:
Таким образом ваш заказчик сделал хорошую инвестицию в долгосрочное использование вашего кода, и это достаточно продуманный и мудрый шаг.
Изначально вы написали интеграционные (или функциональные) тесты на конечный продукт, желание заказчика иметь покрытие различных модулей юнит-тестами (они же «модульные тесты») вполне обоснованно. Особенно если планируется передать разработку другим командам или использовать уже написанные модули в других продуктах.
Так же не совсем понимаю, как написание модульных тестов привело к «полному переписыванию генератора» – там что-то страшное было?
А ваша уверенность на каких ссылках основана?
for line in lines_generator:
if line not in uniq:
uniq.append(line)
Если задача в том, чтобы выбрать уникальные строки не соблюдая порядок, то код не оптимален, т.к. известно что сложность поиска элемента в списке это в среднем O(n) и чем больше будет становиться uniq, тем медленнее будет работать программа. Правильный вариант использовать множество:
uniq = set()
for line in lines_generator:
if line not in uniq:
uniq.add(line)
А еще проще так:
set(lines_generator)
А файлы защищенные авторскими правами уже можно получить на следующих сервисах: itunes store, google play, ivi.ru, now.ru, ayyo.ru, amediateka.ru, stream.ru, playfamily.ru, megogo.net — так что о том, что «не предложив ничего взамен» вы лукавите.
Это торрент трекеры не могут предложить мне удобное приложение для айпеда и\или телевизора, нужно качать, иногда даже конвертировать и потом через флешки или компьютер заливать на устройства.
Приблизительно такой процесс будет проходить и у нас — сначала мы немножко «пострадаем», а потом все будет так же как и было — только за деньги и законно). Если вы хотите как-то поучаствовать в этом процессе — идите к правообладателями и попробуйте предложить им партнерство.
Сегодня — нет, но индустрия движется к этому: правообладатели придумывают новые типы лицензий и уже сейчас некоторые фильмы выходят в айтюнс раньше чем на DVD. Торрент-трекеры вам врядли чем-то здесь помогут, потому что хороший дубляж и качество можно взять только с DVD. Процесс развития сервисов для предоставления легального контента итеративный — как только доходы от продаж контента через интернет начнут составлять значимую долю, фильмы в нем будут появляться практически сразу после проката в кинотеатрах.
> Или даже скачать, закинуть на флешку и поглядеть на телевизоре в спальне? Где-где, говорите, такие сервисы?
Я не вижу удобства в том, чтобы качать что-то закидывать на флешку и нести ее к телевизору. Настоящее удобство — это открыть приложение на телевизоре и продолжить смотреть на нем фильм с того момента, на котором просмотр остановился на компьютере. Большинство сервисов уже сейчас имеют приложения для Smart-TV, Ipad'ов и Android-планшетов и позволяют вам удобно пользоваться созданной «экосистемой» — вам не нужны больше флешки, вы устанавливаете приложение и смотрите там лицензионные фильмы в хорошем качестве и с дубляжом. Ни одни торрент-трекер такого удобства вам не предоставит.
>Ну разве это не говорит о том, что что-то нужно пересмотреть модель распространения?
Да уже их куча. И рекламная модель есть и по подписке и отдельными покупками, чаще всего разделение фильмов по моделям сделано для сегментации пользователей — хочешь заплати 300 рублей и смотри целый месяц что хочешь, кроме новинок, а хочешь заплати 100 рублей и смотри новинку — кому что подходит. Иногда сам сервис выбирает с какой моделью он будет предоставлять контент и тут уже работает маркетинг.
Сравнение игр и фильмов как-то глупо выглядит. Если бы не было кинотеатров — то фильмы релизились бы абсолютно так же. Двд осталось жить год-два, уже сейчас VOD и EST лицензии выходят раньше DVD.
На Steam тоже есть модель подписки — для кого-то она просто удобнее, чаще всего фильмы продающиеся по подписке это не кассовый контент и у него потребители пересекаются редко.
Таких сервисов в России уже около десятка. В чем проблема? Почему не пользуетесь?
24. Зрители имеет право на:
возмещение стоимости билета в случае отмены просмотра, замены фильма или некачественной демонстрации по вине киновидеозрелищного предприятия, а также в случае непредоставления информации о возрастных ограничениях на просмотр киновидеофильма и отказа зрителя в этом случае от просмотра киновидеофильма;
1) Высылаете себе новый пароль
2) Ждете не менее 1.5 часа — ничего и никуда не вводите
3) Открываете инкогнито вкладку в хроме и пробуете залогиниться
Профит!