Тормоз задал вопрос, что нового у меня с Python+Django, которые я нахваливал раньше. Отвечаю.
Внимание! Точка зрения у меня — как у небольшого независимого предпринимателя, которому надо, чтобы веб-проект начал жить. Для программиста и прочих сторон проблема однозначно может видеться по-другому.
Нашёл очень много мелких косяков в Джанге
Я переносил существующий сайт на фреймворк, поэтому надо было решать кое-какие задачи так и именно так, и вот тут я сполна вкусил говнеца. Всего вспомнить не могу, но, например, в голове засел импорт начальных данных из SQL-дампа там чисто номинальный, без соблюдения требования SQL — импорт валится на самых детских вещах, я просто руками правил дамп от безысходности.
Или: если в админке данные выбираются из более чем 2х таблиц — джойна НЕ будет!!! Например, если вы смотрите таблицу компаний, в которой выводится город и область, и компании, города и области лежат в 3х таблицах (что, собственно, абсолютно корректно с т. з. дизайна баз), админка будет делать бешенное кол-во запросов вместо одного джойна! Это просто эпический идиотизм, к которому добавляет жару то, что создатели вроде и думали над проблемой, даже создали опцию list_select_related, но… она будет работать только в случае 2х таблиц.
Смешно после этого слушать вату про высокий уровень пайтон-программистов, да такие же раздолбаи там, как и везде.
Увидал, что многие вещи, которые в этих наших интернетах уже де-факто, отданы на радость реализации нам, пользователям фреймворка
Нахера, спрашивается, фреймворк нужен? Фреймворк нужен только для реализации простейших контентных сайтов.
Например, всякие там аппы из коробки — чистой воды фикция, чуть какая фича нужна (я имею в виду обычные общепринятые фичи) — надо либо искать альтернативные аппы, либо форкать существующие (часто — тупиковый путь), либо писать свои.
Да, кстати — намертво убило то, что кое-какие вещи вообще сделаны на авось. Например, хвалённые модели данных автоматически превращаются в структуру базы данных только на момент инициализации базы. А что же дальше? Мы, возрадовавшись тому, что о базе данных нам думать больше не надо (ну, в простых проектах, с простыми запросами), начисто теряем навык ковыряния ненавистного Мускула. И вот нам неожиданно нужно изменить чуть-чуть размер текстового поля, или мы вздумали добавить новое поле. Авторы Джанго считают, что на этом этапе опасно лезть в живую базу данных, и предлагают менять всё… ручками. Т. е. расчехлять всякие там PHPMyadmin-ы, SQLYog-и, и лезть под «капот». Забота о безопасности данных выглядит как беспомощная ложь.
Пушкин порвал мою мотивацию, посоветовав аутсорсить программирование
В какой-то момент войны с несуразностями и генетическими пороками Джанги понял, что у меня нет программистской усидчивости, заленился, и просто отдал всё сложное программирование фрилансерам. См. следующий пункт.
Кстати — если кто-то имеет очень большой опыт по работе с фрилансерами, и может указать на мои ошибки в частности — почему у меня такая низкая откликаемость кандидатов на объявления), помогите, пожалуйста. Поделитесь опытом.
Получил стойкое ощущение того, что на объявления о проектах на Python+Django русские фрилансеры реагируют слабо
На практике большинство откликнувшихся — свитчеры с PHP, которые сами-то ещё не разобрались, или люди-оркестры (которые заявляют, что работают с 10 фреймворками). Однако специфика Джанги такова, что чуть что — нужно знать глубинные фишки и делать всякие хаки, а вот этого как раз почти ни у кого из кандидатов нет.
В итоге понял, что язык и фреймворк — похуй, главное — их распространённость
Тем более, что за последние годы на всех языках уже появились аналоги лучшего из ROR и Django.
Очень хорошо вымывает из мозга центризм на инсрументах лекция «Костыли — это кошерно!» Трансгуманиста:
Обязательно гляньте всю, никакого говножуйства и ваты, только очень здравые идеи. Вот тезисы, которые мне очень понравились:
- любой проект развивается эволюционно. Поэтому не надо параноить на тему того, что всё сдизайнено неправильно, везде стоят затычки, хаки, фиксы и вообще сыплется песок. Это нормально!
- все подобные проблемы сейчас очень легко можно решить аппаратными средствами, которые стали ужасно дешёвыми. Дешевле, чем человекочасы.
Кстати, именно поэтому я ещё плотнее начал мониторить тему облачных веб-хостингов, как простых в обслуживании и масштабировании.
Несколько с другой стороны поучительна статья о том, как всё сделано у Пленти оф Фиш (там вообще много интересных статей по архитектуре известных высоконагруженных проектов). Это как-то вообще порвало шаблон у меня, я привык думать о веб-технологиях от Microsoft, как о каких-то костылях.
P. S. А если сильно увлекаться программированием, то могут посещать идеи о том, что весь мир построен по принципу MVC и где-то там есть ещё и база данных :)
Про фрилансеров много знает чувак — http://webproektov.ru/
Я не стал слушать курс, потому что вообще аудиоподкасты не люблю, но ты вроде к ним пристрастен.
И да, вкл. режим «зануда» ) Когда я думал про Акаши даже HTML не знал, что уж там о программировании говорить. Хотя, в детстве из книжки перепечатывал коды нескольких простеньких программ на Basic (в ZX Spectrum).
Но всё же точно не верно считать увлечение программированием причиной мыслей о всемирной базе данных. Мне серьезно казалось, что о чём-то таком хоть раз думал каждый.
И ещё маленько завидую тебе ) Ты переборол перфекционизм, а это важный шаг для скорейшего достижения реальных результатов. Нечто существующее и работающее достаточно хорошо лучше, чем нечто идеальное в мечтах.
Тормоз: я ещё много что не поборол.
Сэм, нахрена тебе фрилансеры? Они же разгильдяи редкостные, и после сдачи проекта резко недоступны. Посади программера на зарплату, пусть работает. Дёшево и максимально продуктивно.
Да нихрена не продуктивно — всё точно также. + задачи надо высасывать из пальца.
5, зачем высасывать из пальца задачи? Или у тебя проект не большой?
Насоздавал ему тикетов на месяц вперед и он пашет.
У меня разные проекты есть и будут, на разных языках. Тот, который я перевёл под Джанго — не требует постоянной работы. Вернее — там есть фичи, которые надо делать, но они все относятся к необязательным. Обязательные я придумываю непостоянно.
Два — у меня работал человек на зарплату. Мне в итоге не понравилось это.
Что мне в фрилансе нравится — отсутствие привязанности (и моральной в т. ч.), возможность распараллелить.
Насчет фрилансеров я сейчас делаю так:
Во-первых, если ищешь на бирже, то их надо сильно дрючить, особенно программеров. Потому что дизайнера хотя бы видно, а программер может быть просто лохом. В частности есть теория, что плохой программист отличается от хорошего продуктивностью в 60 там с чем-то раз. У меня друг нанимает ROR программеров на фулл-тайм удаленно, платит 30к рублей в месяц. Он разработал бальную систему. Максимум программер может набрать 40 баллов. Максимум из того, что реально набирали — 36. Но этого чувака не взяли, он запросил много денег. Сейчас работает чел, который набрал 34. Он дает им задание — написать блог-engine. С комментами, постами и всей херней. С одной стороны этот blog engine никому не нужен, их пруд пруди, с другой стороны это довольно серьезное приложение, в котором будет видно все: и разметку, и работу с авторизацией, и знание существующих возможностей ROR, и работу с БД. Если хочешь, могу его попросить написать статью на эту тему.
Я же использую другой подход. Я мониторю блоги чуваков, которые пишут на тему ASP.NET, к которым люди обращаются за советами, которые шарят в нужных мне вещах. Это потенциальные работники, по блогу обычно можно много сказать, какой уровень профессионализма и т.д.
Дизайнеров сейчас ищу на мейк-пиздато коммьюнити — закрытое сообщество, куда пускают только избранных. По сути это избавляет от головной боли, т.к. отбор уже пройден.
Потом если чел у тебя работает за зарплату, то тут нужен issue tracker, репозиторий, ну и time management, который обычно входит в issue tracker. Есть бесплатные сервисы с trac + git, предоставляют до 500 мегабайт бесплатно, что вполне нормально.
У чела должна быть отчетность. Конечно, он не должен приходить четко на работу в 8 (потому что это его провозирует ставить таймер и спать дальше), но ты должен быть онлайн, чтобы и с ним как-то контактировать.
Другими словами, процесс непростой и интересный. По сути это управдение человеческими ресурсами. Тоже своего рода умение, от которого многое зависит.
Роман, такое задание для проверки, конечно, выявит лучших. Но требует много времени и денег, при этом сам проверяющий также должен отлично соображать в Ruby (для твоего конкретного примера).
Насчёт блогов согласен, тоже есть несколько программистов на примете именно потому что видно в блоге, что человек хорошо врубается.
Тормоз, обычно кандидату дается какой-то фиксированный срок. В конце он дает то, что сделал или не сделал.
Вся проблема обычно кроется в самом заказчике, если тз составлено нормально, то никого дрючить не нужно :)