четверг, 11 сентября 2014 г.

От флеша к питону

Сейчас, задним числом, я понимаю что не флеш был виноват в остановке моего развития. И большая часть новооткрытых подходов вполне реализуема. Но в тот момент я была уставшая и обессилившая, нужна была новая кровь. В момент когда усталость от бесконечного забега достигла критических значений я уволилась и начала искать стажировку на питоне.

Надо сказать что к питону я давно присматривалась, даже раньше флеша, но на тот момент он показался заумным. Больше двух лет назад я впервые ткнулась в питон и была поражена легкостью вхождения, логичностью и аккуратностью языка. Это ощущение у меня не прошло и не сменилось разочарованием, хотя есть ощущение что могу пойти куда то еще.

У питона есть своя философия.
  • Красивое лучше, чем уродливое. 
  • Явное лучше, чем неявное. 
  • Простое лучше, чем сложное. 
  • Сложное лучше, чем запутанное. 
  • Плоское лучше, чем вложенное. 
  • Разреженное лучше, чем плотное. 
  • Читаемость имеет значение. 
  • Особые случаи не настолько особые, чтобы нарушать правила. 
  • При этом практичность важнее безупречности. 
  • Ошибки никогда не должны замалчиваться. 
  • Если не замалчиваются явно. 
  • Встретив двусмысленность, отбрось искушение угадать. 
  • Должен существовать один — и, желательно, только один — очевидный способ сделать это. 
  • Сейчас лучше, чем никогда. 
  • Хотя никогда зачастую лучше, чем прямо сейчас. 
  • Если реализацию сложно объяснить — идея плоха. 
  • Если реализацию легко объяснить — идея, возможно, хороша. 
  • Пространства имён — отличная штука! Будем делать их побольше! 


Итак, процесс поиска. Линкедин, джин, работа уа. Откликались очень редко, это может быть связано с моей неправильной формулировкой и с временем когда народ боялся расширятся (весна).
Однако еще у меня сложилось впечатление что к флешерам относятся настороженно, не считая их серьезными программистами. Через три месяца мне повезло, и на втором собеседовании (за все это время) я получила тестовое задание.
И тут то я поняла что моих знаний не хватает критически, когда оказалось что надо не только писать код но и настраивать голый сервак.

Итак, грабля для перехода первая - навыки администрирования нужны, это целый отдельный пласт знаний. Администрирование и любовь к терминалу.

И тут я перейду к приятным моментам перехода - библиотеки. Сообщество питонистов мощнейшее, и на любую хотелку мы получаем несколько либ с документацией. И что самое главное - даже с минимальными знаниями языка в сорцах тех либ можно разобраться. Даже в джанге - в какой то момент я поняла что у меня нету времени читать документацию потому что я не знаю куда смотреть и полезла в сорцы (напоминаю что это тестовое, общее количество кодинга / втыкания в питон пару недель) и нашла как вставить нужный мне функционал.

Сразу грабля вторая - питон, не смотря на сахарок и простоту, низкоуровневый. Поэтому внезапно приходится сталкиваться с тем, о чем в бытности флешером даже не знаешь. Я думаю что имеющие вышку по теме не будут сильно этим удивлены, однако для меня это было сложно.

Как пример низкоуровневых штук - во втором питоне есть мозголомающая штука, строки. Они могут иметь бинарный и ютф формат иии кормят эксепшенами.

Грабля третья - виндовз офф.
Нет, конечно можно пытаться работать на винде, но этот процесс будет неудобным, как и работа с флешом на линуксе (рвется дебаг сессия, нету последних версий).
Так что здравствуй линукс или макось и консолька.
Как оказалось, консолька очень клевая вещь, надо только уметь готовить. Есть подсветка , автокомплит, история комманд (zsh наше все).


И да, если до этого не знали в баш прйдется вникать, хотя бы по мелочи. И в утилиты - grep например. И еще, не то чтобы грабля, скорее бонус - регулярки придется выучить. После открываются чудесные перспективы в виде замены по хитрому алгоритму в иде и поиск чего то.

Бонусом к питону идут функциональные приемы, без которых тяжко из-за особенностей языка.
Невозможность типизировать / знать что должно прийти, входящие параметры в методе вводят в ступор по первому времени. Но со временем приходит понимание что это все не страшно, и уменьшение количества кода и увеличение его гибкости того стоит. Есть шикарнейший дебаггер в котором все видно. Все эти ограничения приводит это к тому что на тип перестаешь опираться и приходится делать максимально ясную архитектуру. В первое время я писала адовую ересь, пытаясь оградится от динамичности языка. Отгородится невозможно, надо с этим жить.

Зато в какой то момент понимаешь что код, типы, названия подменяются в процессе написания образами, ты точно понимаешь что как и зачем делаешь, в силу того что нету переходов на ритуальные танцы с кодом чтобы обозначить типы, заминировать все в стиле “шаг вправо, шаг в лево, идите лесом”. Это позволяет высвободить ресурсы мозга и писать и читать зубодробительные конструкции которые не питонистов вводят в каталепсию.

l.brand_in = lambda x: [brand for brand in brands if brand.lower() in x[0].lower()]


Итак, после полугода работы на питоне что я имею в сухом остатке. Полюбила консоль, регулярки, получила более четкое понимание процессов, натренировавшуюся память и возможность писать код без иде, базовые навыки администрирования, полюбила и близко узнала ооп, начала практиковать функционалку, научилась работать с эксепшенами. В принципе это все можно получить и на флеше, но не хватает мотивации в силу того что “и так все работает”.

И да, я обратно полюбила флеш. То что я не знала толком как его использовать не делает его плохим.

Я вернулась

Итак, в какой то момент я скопытилась и стопнула проект. Сейчас постепенно возвращаются силы и я опять тут.