# Понедельник 23 твита
Я — фулл-стек из Самары, в данный момент я в Питере, удаленно работаю в Барселонской компании Redbooth, пока офомляю документы для переезда
11:40. @Savroff пока нет, но начал учить. В компании все говорят на английском, так что мотивации учить особо нет:)
11:44Давайте начнем с того, кто как начинал свою карьеру и вообще попал в руби разработку.
11:50На меня в 10 классе повлиял одноклассник, у которого уже было 2 игровых сайта и он прилично зарабатывал. Тогда меня веб и заинтересовал
11:53Я начал изучать html. В этом мне очень помог сайт postroika.ru — там были крутые уроки (не могу гарантировать, что сейчас так же)
11:53Сейчас с обучением онлайн всё проще, есть codeschool, hexlet и еще много подобных сайтов
11:54На первую работу, верстальщиком, устроился за месяц до поступления в универ. Начал изучать js и php, ушел больше в программирование
12:00Потом наступили тёмные времена и я был пхпшником.
12:00Еще полтора месяца проработал в огромной компании джавистом
12:02Но после маленьких компаний я там не выдержал и ушел обратно в веб-студию
12:03Ну а потом меня позвали в @cloudcastler и я перешел на руби
12:05Это самая большая компания, работающая с ruby в Самаре. Т.к. рубистов в Самаре мало — набирают людей с других языков и в процессе обучают
12:07А кто тут из Самары? Где вы работаете?
12:08. @dcromster скорее наоброт — любой опыт полезный. Если сразу начинать с хорошего языка, не оценишь, насколько он крут.
12:09. @dcromster так же с фреймворками. Я работал с zend, cakephp, symfony. Когда изучал symfony 2 считал его идеальным
12:10. @dcromster пока попробовал рельсы и не понял, что большинство идей были оттуда
12:10@rubyunderhood понятно)) традиционно: rubyMine, Vim, Sublime, Atom, Emacs?
До недавних пор sublime, сейчас atom. Но пока подбешивает иногда) twitter.com/Savroff/status…
12:25@rubyunderhood что спрашивали при собеседовании в испанскую компанию, влияла ли вышка на решение компании?
Вышка скорее влияет на разрешение на работу. Вопросов было мало, почти сразу дали тестовое twitter.com/_sashashakun/s…
12:33@rubyunderhood какими методами качаете новичков?
Методом броска в воду:) Сразу сажают на проект, несколько недель читаешь книги/статьи и изучаешь реальный проект twitter.com/vassilevsky/st…
12:44@rubyunderhood 5 лет C/C++, потом стал уставать от указателей, тут Ruby был глотком воздуха )...16:09
@rubyunderhood начинал с железа, микроконтроллеров, С, С++. железо оказалось неприбыльным, вспомнил как весело ставил редмайн и заверте...16:10
# Вторник 29 твитов
@rubyunderhood Дизайнер => системный администратор => php-разработчик => ruby-разработчик :)10:32
@anton_davydov @rubyunderhood не писал на PHP – не видел жизни и боли10:32
@rubyunderhood, Basic/VBA/VB/ASP/Perl/PHP/FoxPro/C#/Ruby :-)10:32
@rubyunderhood горнорабочий поверхности -> грузчик -> продавец моб.телефонов -> сисадмин -> дизайнер -> программист -> техдир10:32
@rubyunderhood а, еще контент-менеджера забыл, ну и между этим еще по мелочи всякое10:32
Сегодня давайте о глобальном. Каким вы видите идеального программиста? Как узкого специалиста или наоборот?
10:34Мое личное мнение — код вообще никому не нужен. Главное продукт, который получают конечные пользователи
11:23Поэтому необходимо знать все смежные области, связанные с продуктом: фронтэнд, вёрстка, дизайн, ux, аналитика. Даже типографика
11:24Понятно, что одинаково хорошо знать все области невозможно, но намного полезнее тратить время на их изучение, чем на изучение других ЯП
11:26Кодер с пониманием дизайна, ux и аналитики для продукта полезнее, чем тот, который знает ruby, go, erlang и ждёт, где бы их применить
11:27@rubyunderhood идеальный программист - как идеальный слесарь)) сильно зависит от контекста)
Согласен, но большинство (рубистов) делают веб-приложения и именно про таких я говорю twitter.com/rainrb/status/…
11:44Теперь немного детальнее.
13:15Мне кажется, что UX коррелирует с архитектурой приложения. Если у приложения проблемы с UX — тогда это становится заметным и в коде
13:16И наоброт, обладая минимальными знаниями в UX вы можете улучшить свой код, особенно API, т.к. это интерфейс для других программистов
13:24Иногда систему лучше сделать менее расширяемой, уменьшить количество конфигов, но проще в использовании
13:26Типографика: начните различать длинное тире и дефис,
форматировать списки, ставить правильные кавычки («»)
Спустя какое-то время вы привыкните к хорошему стилю текста и плохо отформатированный код будет бросаться в глаза.
14:26Чтобы не запоминать хоткей для кавычек я использую такую автозамену: take.ms/MosB9
14:29@rubyunderhood а как же рубокоп? по-моему он отлично помогает держать код в порядке в части форматирования, стиля и т.п.
Да, рубокоп отлично решает эту задачу twitter.com/rainrb/status/…
15:34Кстати кроме кода это еще помогает лучше писать документацию, коммиты/пулл-реквесты
15:35@rubyunderhood возможно не увидели вопрос :( что по литературе для новичков?
Не могу ничего особенного посоветовать, лично я начал писать на рельсах после Agile Web Development with Rails
twitter.com/pinyslutty/sta…
Если говорить о программировании и дизайне — обращайте внимание на детали.
16:58Примеры, когда программист может улучшить что-то в дизайне приложения: определить пол юзера по отчеству,
16:58… не переспрашивать уже введенную информацию (например email после нажатия на кнопку «напомнить пароль»)
16:59В этом направлении на меня больше всего повлияли: @artpolikarpov с докладом "технолог тоже дизайнер" на 404фесте: artpolikarpov.ru/2012/01/10/1/
17:02И @andrey_sitnik на брейнвошинге по фронт-энду
17:03Из книг — похожие впечатления были от «Программиcт-прагматик» ozon.ru/context/detail…
17:04Еще посоветовал бы всем Алана Купера «Психбольница в руках пациентов»
17:06@ilyabirman со своими докладами там же, вот про Ангстрем: youtube.com/watch?v=1_-5mB…
Продублирую твит, т.к. он получился как реплай: twitter.com/rubyunderhood/…
17:44# Среда 5 твитов
Сегодня предлагаю делиться всем, что вам помогает в работе: плагины, тулзы, настройки системы и т.д.
11:42Ну и гемами, само собой, тут же рубисты!
11:42Чтобы не плодить тонны твитов буду группировать всё в гистах. Первый — Alfred gist.github.com/KELiON/55b3cc5…. Дополняйте и делитесь в комментах
12:10Дальше дотфайлы gist.github.com/KELiON/55b3cc5…
16:39@rubyunderhood, ретвитни, пожалуйста: ищем в команду рубистов, которые умеют не только рельсы, но и могут в cli/bgp/cisco/react. Удалёнка.21:39
# Пятница 19 твитов
Что-то я про вас забыл! Сегодня давайте делиться удобными фишками в рельсах/руби, которые, как вы думаете, многие могут не знать.
13:29Я вот люблю символы экономить, но чтобы не в ущерб читаемости. Поэтому если короткий и длинный код одинаково читаем, выбираю короткий
13:33Из-за этого не люблю фанатов, которые в название переменной/метода весь контекст засовывают
13:33Недавно открыл для себя obj.in?(arr) в ActiveSupport вместо arr.includes?(obj). Читается так же, но короче
13:35С сервис объектами я всегда работаю, как написано в статье @avakhov: avakhov.github.io/blog/2014/10/3…
13:45В какой-то момент я обнаружил что .call можно опустить и писать просто: Service.(args)
13:45Только я до сих пор не определился, нравится ли мне эта запись, поэтому чаще использую .call :)
13:46The Basecamp says it, so it must be true! pic.twitter.com/2aUyDpVE2x13:48![]()
@Shiroginne @rubyunderhood так точно. 2016 уже не год руби.
Для быстрого старта продукта еще ничего лучше рельсов не придумали twitter.com/nick_jastix/st…
14:24@rubyunderhood мало кто знает про тип Set например14:49
@rubyunderhood пруф?
Какой нужен пруф? Такой пойдет? take.ms/SkLtA Всё равно же разговор в срач перерастет. twitter.com/nick_jastix/st…
15:01@rubyunderhood заметил, что при работе с ActiveRecord часто используют any? там, где достаточно exists? pic.twitter.com/Lh32aPi5DL15:08![]()
rails console -s (—sandbox) – сделает rollback всех ваших изменений в базе в конце сеанса
15:16Чтобы не делить миграцию на up/down из-за одно блока, можно использовать reversible: edgeguides.rubyonrails.org/active_record_…
15:22Вместо
x = hash.fetch(:x, {}).fetch(:y, {}).fetch(:z, nil)
можно писать
x = hash[:x][:y][:z] rescue nil
@rubyunderhood rescue = bad practice в большинтсве случаев
В данном случае я бы сказал, что справедливо только когда hash — объект, у которого переопределен метод `[]` twitter.com/mr_The/status/…
15:35И этот метод может выкинуть свое исключение
15:36@rubyunderhood apidock.com/rails/ActiveRe… почему-то никто не использует, хотя крайне удобная штука17:32
@rubyunderhood Как считаешь, правильно ли в secrets.yml хранить настройки проекта? Или там лучше хранить только ключи к сервисам и api?
Нет, настройки проекта лучше в переменных окружения все хранить twitter.com/mgrachev/statu…
19:55# Ссылки
other
- http://www.postroika.ru/
- http://take.ms/MosB9
- http://take.ms/SkLtA
- http://artpolikarpov.ru/2012/01/10/1/
- https://www.youtube.com/watch?v=1_-5mBebinY
- http://www.ozon.ru/context/detail/id/1657382/
- https://gist.github.com/KELiON/55b3cc5fcf7b5d24ce02
- https://gist.github.com/KELiON/55b3cc5fcf7b5d24ce02#file-dotfiles-md
- http://avakhov.github.io/blog/2014/10/30/oaas/index.html
- http://edgeguides.rubyonrails.org/active_record_migrations.html#using-reversible
- http://mrwgifs.com/wp-content/uploads/2013/05/Captain-America-Salute-Reaction-Gif.gif
- http://apidock.com/rails/ActiveRecord/SpawnMethods/merge