2011/2012
Наконец дозрел до стандартного поста в виде небольшого подбивания (профессиональных) итогов года и построения планов на следующий. Год назад я приблизительно сформулировал в голове вещи, которые мне бы хотелось сделать в 2011-м, и, оглядываясь назад, можно с хорошей долей уверенности сказать что бОльшая часть вещей так или иначе выполнена.
Scala
Язык, с которым я познакомился летом/осенью 2010-го и который успешно был внедрён в разработку больших и взрослых проектов в e-Legion. Помимо бэкенда Goozy мы практически закончили ещё один заказной проект на Tornado+Scala+ØMQ. Наверное больше половины всего кода было написано именно на нём. И хотя Scala-проекты составляют совсем небольшую долю относительно всего остального в компании, я очень надеюсь что мы продолжим использовать этот замечательный язык.
Кроме того, удалось инициировать и принять самое непосредственное участие в организации евента, посвящённого Scala. И хотя мной было наступлено на неимоверное количество граблей, по-моему почти всем понравилось, а я получил просто огромное количество опыта, касающегося организации айтишных встреч. Всем кто пришёл ещё раз огромное большое спасибо, мы обязательно всё повторим где-нибудь в середине весны. Официальные объявления будут чуть попозже.
В общем, в 2012 я очень надеюсь вернуться к работе со Scala, поскольку этот язык вызывает просто массу положительных эмоций при работе с ним.
Вебдев
У меня есть немного странное убеждение в том, что существует некий базовый набор прикладных навыков, которыми должен обладать любой программист. Один из них – владение скриптовыми языками и умение быстро сваять несложное веб-приложение или сайт. И хотя на Java/Scala сделать это вполне возможно, мне очень хотелось освоить что-нибудь более легковесное. Был сделан небольшой подход к node.js и coffeescript, не окончившийся однако (пока) ничем, а вот попытка освоить Ruby on Rails вполне себе удалась. Этому способствовали две вещи. Во-первых, очень неплохой туториал, аккуратно покрывающий кучу аспектов правильной веб-разработки на рельсах, включая основы языка, самого фреймворка, хостинг на Heroku, использование мокапов UI и написание тестов. Во вторых, отличная мотивация в виде взятого и делаемого ночами фриланс-проекта. И хотя я успел сто раз пожалеть о заниженной цене, основная цель – освоить Rails – была достигнута. Хотя конечно, и фреймворк, и особенно Ruby я копнул достаточно поверхностно, и зваться полноценным руби-девелопером мне пока рано.
Кроме того, мне удалось основательно поиграться с JavaScript и несколькими отличными библиотеками для него в рамках ”Нердометра”. Сам нердометр, кстати, тоже подарил мне замечательный опыт разработки законченного пет-проджекта вообще, и целиком клиентсайдного single page app в частности. Он очень мне нравится, и я надеюсь написать в будущем ещё что-нибудь такое же. Кстати, большое спасибо Диме Медвинскому, за патчи и вообще поддержку.
Опенсорц
К сожалению, мне не удалось основательно поучаствовать в работе opensource-сообщества путём написания патчей и багрепортов (один небольшой фикс в zepto.js не в счёт), однако практически всё что я делал для себя и небольшая часть вещей, сделанных по работе, были выложены на гитхаб. Помимо упомянутого ранее нердометра это:
- начатый (я всё ещё лелею надежду допилить его до приличного состояния) octopress-плагин для sublime text 2
- тулза для миграции данных из SQL-баз в MongoDB
- дашборд для мониторинга сервисов с помощью Ostrich
- простенькая реализация RPC через ØMQ на Scala
- плюс пара легаси-проектов, валявшихся на диске (Восяня и Plutonium Roguelike).
Ощущения от выкладывание всего этого добра сорцами наружу – совершенно драйвовые, очень мотивируют писать по возможности красивый код, думать о потенциальных пользователях и вообще что-то делать.
Мобильная разработка
Примерно так же внезапно и быстро, как в случае с Rails, я окунулся в работу с iOS. Совершенно новый язык, платформа, инструменты и практики разработки. У меня до сих пор идёт кругом голова (что наверное заметно по двум предыдущим постам), так что в этом посте я воздержусь от развёрнутого описания впечатлений. Скажу только что пока почти половину времени, посвящённого мобайл-деву, у меня занимает приделывание к iOS-проектам правильных практик разработки: Continuous Integration/Deployment с помощью Jenkins и TestFlight, поиск правильных решений для xUnit/xSpec-тестирования, управления зависимостями и всё такое прочее. Похоже, что в ближайшие полгода мобильная разработка будет основным моим занятием.
Процесс
Goozy стал первым проектом, на которых я впервые успешно опробовал и внедрил ряд правильных практик разработки: полное покрытие тестами всего что только можно, CI/D, активное использование веток Git сначала как замены SVN, а потом как основы процесса (хорошее введение в эту тему есть в этой статье). В этом же проекте мы серьёзно задействовали облака (Amazon EC2) и вплотную подошли к DevOps и автоматическому управлению инфраструктурой с помощью Chef. Результаты настолько впечатлили, что теперь я (с переменным успехом) пытаюсь внедрить это всё на уровне компании (чем, собственно, и занимаюсь в данный момент в мобайл-тиме).
Блог
После ряда безуспешных попыток писать посты на айтишную тематику то на blogspot, то на posterous, то ещё чёрт знает где, я наконец нашёл священный грааль в виде связки gh-pages+Octopress. Единственное что пока тяготит – стандартная тема оформления, но я надеюсь что когда-нибудь руки дойдут и до этого. Результат перед вами: за четыре месяца было написано с десяток разного размера и качества постов, в следующем году, я надеюсь, будет больше, хотя о подвиге Петра Диденко, выдающего по посту в день, мне пока страшно даже подумать.
Книги
Основное время для чтения книг у меня – лето с частыми и длинными поездками в электричке на дачу. К сожалению, даже не припомню в этом году ни одной прочитанной до конца книги (кроме коротенькой Rework), и, думаю, это характеризует меня не лучшей стороны. Впрочем, даже те что были прочитаны до середины очень помогли и порадовали. В их числе были SICP и Programming iOS 4. На первую у меня есть определённые планы, вторую же я навряд ли когда-нибудь дочитаю до конца, поскольку вся её вторая половина хорошо заменяется референсами и туториалами по разным компонентам Cocoa Touch.
Планы
В общем и целом, мне кажется, год выдался в профессиональном плане довольно удачным. Самая большая претензия (и история с книжками её хорошо иллюстрирует) – довольно большая часть освоенных вещей освоена пока довольно поверхностно. В прочем, уже не раз было подмечено, что чем больше человек осваивает какую-то область знаний, тем более безграничной она ему кажется. Так что эта поверхностность – ни в коем случае не повод комплексовать и стыдиться, а скорее намёк не сбавлять темп и улучшать качество самообучения.
В 2012 у меня намечается ряд довольно крупных и заметных событий в личной жизни, так что я заранее готовлю себя к тому что будет необходимость отложить часть своих профессиональных планов на какое-то время. Но тем не менее, вот довольно нечёткий список того, чего хотелось бы сделать:
- Основательно углубить знания того, что освоил в 2011: Scala (очень хочется освоить фреймворк Akka), iOS, процессы разработки, TDD/BDD, Python или Ruby, современный вебдев.
- Сделать евенты ScalaSPb регулярными (пока я целюсь на два раза в год).
- Теоретическая подготовка: записался на Стэнфордские классы по Machine Learning и Natural Language Processing, очень надеюсь что будет время делать всё вовремя. Также, думаю над тем, чтобы начать SICP заново, в этот раз обстоятельно, с расписанием и выполнением упражнений.
- Выучить новый язык программирования. Пока не решил какой, скорее всего что-то функциональное. Возможно Scheme (что хорошо сочетается с планами по SICP) или Clojure. Может быть, пощупаю Erlang.
- Повысить уровень владения UNIX-тулзами, может освоить наконец-то vim.
- Сделать небольшой pet project для iOS.
- Может быть, где-нибудь под конец года, поковырять эмбед, начав, например, c arduino
Если у кого-то есть похожий пост с итогами года и планами на следующий, кидайте ссылки в комментарии (ну или просто кратенько списком, если лень писать пост). Кстати, хорошая подборка вещей, которые можно пообещать себе сделать в следующем году есть в этом посте. И да, чуть не забыл: С Новым Годом!