Николай Алименков
Этот пользователь ничего не написал в своей биографии.
Домашняя страница: http://xpinjection.com
Записи от Николай Алименков
Рубрика «Полезное чтиво». Выпуск 29
23 Апрель

Очередной понедельник, а значит очередной выпуск рубрики «Полезного чтива» ждет вас. Вот, что я прочитал за прошедшую неделю и вам рекомендую:
- The Role of the Product Owner in Moving a Backlog Item to Done (or, It’s Not Over Until the Fat Lady Sings) – Product Owner играет ключевую роль в Scrum, потому что он выбирает фичи и потом их принимает, замыкая круг
- Удобные отчёты Selenium – отличный отчет о докладе с Selenium Camp про отчетность в Selenium
- Migrating From JMS to AMQP: RabbitMQ, Spring, Apache Camel, and Apache Qpid – простой пример перехода с JMS на AMQP с помощью Spring и RabbitMQ
- How Do Most People Find New Dependencies… Google. – Sonatype готовит репозиторий зависимостей с полной информацией для поиска
- Twitter Storm – обзор отличного нового фреймворка для распределенных вычислений Storm на русском
- Technical Debt – How much is it Really Costing you? – как перевести технический долг в реальные деньги
- How Should REST Services be Documented? – все таки REST во всем лучше SOAP
- I Ain’t Afraid of No Downtime! Scaling Continuous Deployment – несколько деплоев в день практически без простоев – это реально, надо лишь хотеть и уметь это делать
- Архитектура Instagram – про архитектуру Instagram на русском
- Are Static Imports Becoming Increasingly Accepted in Java? – а я лично люблю статические импорты в Java, без крайностей конечно
- In a New Team, Observe First – в новой команде все сразу норовят критиковать текущие решения, вместо этого стоит побольше слушать
- Advanced Database Constraints: Don’t Look for a Second – проверку ограничений многие откладывают на фазу коммита, вот тут ролбек в тестах ничего и не тестирует
- What not to Bring to an IT Conference – очень правильные советы для участников конференции
- Sonar 3.0 in screenshots – вышел Sonar 3.0
- How Twitter Does MySQL – Get Their Fork/a> – ребята из Twitter даже MySQL под себя заточили
- ScrumMaster Tales – New People on the Team – новый человек не всегда хорошо вписывается в команду
- JMS Message Groups in Apache Camel – как можно использовать группы сообщений в JMS
- Lucene / Solr 3.6 released – что нового в Lucene 3.6
- Искусство публичных выступлений – советы на тему публичных технических выступлений
- SeleniumConf presentations – презентации с конференции SeleniumConf
И порция полезного видео для просмотра:
- Automating (almost) Everything Using Git, Gerrit, Hudson and Mylyn – как автоматизировать интеграцию изменений в распределенный продукт быстро и бесплатно
- How We (Mostly) Moved from Java to Scala – рассказ о том, как в Guardian перешли с Java на Scala
Читайте и набирайтесь новых знаний!
Отчет о 15-ой встрече «Клуба анонимных разработчиков»
23 Апрель
В прошлый четверг, 19 апреля, состоялась 15-ая встреча нашего «Клуба анонимных разработчиков». В этот раз уютный и полюбившийся многим офис компании DataArt принимал гостей из мира разработчиков бизнес-правил. Встреча была посвящена инструментам для разработки сложных бизнес-правил, в частности JBoss Drools.
У нас был один докладчик – Виктор Полищук, но этого оказалось предостаточно. Витя с удовольствием делился своими знаниями и опытом в использовании JBoss Drools, отвечал на многочисленные вопросы по поводу его применимости и отличиях от простой реализации бизнес-правил на языке программирования. Было очень интересно и разошлись как обычно уже после 23:00. Вот презентация этого выступления:
По просьбе участников Витя выложил проект, на примере которого он демонстрировал возможности инструмента, на github. Таким образом, участники смогут быстро попробовать его на практике и избежать проблем при начальном изучении инструмента. Также Витя поделился ссылкой на интересный проект Акинатор, который реализован на базе экспертной системы и никого не оставит равнодушным. Играйтесь на здоровье!
Дополнительную информацию вы можете найти в Twitter по хештегу #uadevclub. Можно почитать о ходе встречи, найти интересные цитаты, советы и факты о рассматриваемых технологиях. Присоединяйтесь и обсуждайте вместе с нами!
Мы снимали видео выступления и постараемся в ближайшее время выложить его в открытый доступ.
Следующая встреча запланирована на 17 мая и будет посвящена современной разработке с использованием JavaScript. Следите за анонсами и не пропустите начало регистрации!
Рубрика «Полезное чтиво». Выпуск 28
17 Апрель

Праздники закончились и вас ожидает новый выпуск рубрики «Полезного чтива». Вот что накопилось за прошедшую неделю:
- Запись выполнения тестов – как проще отловить проблемы при падающем тесте
- Вышла версия Selenium 2.21 – что нового в новой версии Selenium
- WebDriver Playback is coming to Selenium IDE – интеграция Selenium IDE с WebDriver может дать проекту новую жизнь
- Размышления о переходе с одного проекта на другой – интересные размышления от лица «IT-рабов»
- Постоянное соединение между браузером и сервером – варианты организации постоянного соединения между браузером и сервером
- Our Simple Jenkins Configuration and Deployment – как сконфигурировать и установить Jenkins из консоли
- Testing like the TSA – спорная и неоднозначная статья про тестирование и TDD
- Кластерные и «обычные» индексы MySQL (InnoDB) – О типах индексов в MySQL (InnoDB)
- DAILY SCRUM: NOT JUST FOR SCRUMMASTERS – один маленький совет на тему Scrum митинга перерос в глобальный его разбор
- Case Study: Poorly written Cucumber tests. – как нельзя писать тесты на Cucumber
- Что значат для вас юнит-тесты? – чем помогают модульные тесты? хотите большего? используйте TDD!
- The Instagram Architecture Facebook Bought For A Cool Billion Dollars – еще раз за что facebook заплатил миллиард долларов
- Клиентская часть интерактивного сайта – на чем писать клиентскую часть современных интерактивных веб приложений
- Архитектура интерактивных сайтов – введение в архитектуру современных интерактивных сайтов
И порция полезного видео для просмотра:
- Effective Use of FindBugs in Large Software Development Efforts – от каких проблем вас может спасти FindBugs и как использовать его эффективно
- Architecture Choices for Scalable Cloud Apps – рефакторинг монолитного приложения на более гибкую архитектуру с помощью Spring
- Video Presentation: Architecting in the Cloud with AWS – крутое выступление на тему облачной архитектуры с AWS
- Chloe and the Real Time Web – Chloe – очень прикольный веб-сервер на Erlang для непрерывной связи с браузером в интерактивных приложениях
- Software Quality – You Know It When You See It – выступление Erik Dörnenburg об анализе качества кода
- Reliability Engineering Matters, Except When It Doesn’t – интересная презентация о надежности инженерных систем, интересна всем кроме «разработчика-оптимиста»
Читайте и набирайтесь новых знаний!
Рубрика «Полезное чтиво». Выпуск 27
10 Апрель

В процессе выздоровления сбился рабочий ритм и я совсем забыл опубликовать очередной выпуск рубрики «Полезного чтива». Рад представить его вашему вниманию:
- Dealing with the “Too many dependencies” problem – как бороться с большим числом зависимостей в коде
- Advanced Database Constraints: There Can Be Only One – каким трудом часто дается проверка ограничений в БД, оно того стоит?
- Unit Testing is a Means to an End – unit-тесты нужны только разработчикам и никто за них не платит, а без TDD их польза уменьшается в разы
- ScrumMaster Tales–The Team Learn How to Learn – рефакторинг должен выполняться маленькими шагами – делите его на части, а Coding Dojo – отличный способ обучения
- Ускоряем процесс сборки с maven – в Maven 3 многие вещи пошустрей работают, особенно радует параллельная закачка зависимостей
- SYSTEM FAILURE IS INEVITABLE SO DESIGN FOR A FAST RECOVERY – в любой серьезной системе вы должны не стараться избежать падений, а быть к ним полностью готовым
- What Metrics to Use? – как можно испугаться большого объема полезной информации и вернуться к азам
- How To Enjoy A Testing Conference – как посещать конференции с максимальной для себя пользой
- The Value of a Business-Oriented Team – в идеале, в работу с требованиями должна быть вовлечена вся команда, но это случается совсем нечасто
- The End of Pagination – в современном мире давно пора отказываться от классического постраничного показа результатов
- Scala or Java? Exploring myths and facts – отличнейшая статья про Scala и Java с кучей полезных ссылок и фактов
- Удобные отчёты Selenium – отчет о докладе Димы Якубовского с конференции SeleniumCamp 2012
- Изменения в политике поддержки старых версий браузеров – старые браузеры не будут поддерживаться в новых версиях WebDriver
- A Generic and Concurrent Object Pool – подробная инструкция для тех, кто собрался писать с нуля пул объектов и не знает про commons-pool
- Measuring Code Complexity – как измеряется сложность кода
- Another Take on Java Scheduling – вот человек не нашел в Java библиотеку для расписаний и сделал свою
- Why (or Why Not) to Migrate to the Cloud – стоит ли мигрировать в облака?
- Using a Relational DBMS as a Multi Server Concurrency Control – синхронизация доступа через БД для тех, кто ленится поставить Zookeeper
И порция полезного видео для просмотра:
- Who Ever Said Programs Were Supposed to be Pretty? – интересная презентация о красоте и качестве кода с яркими примерами из жизни
- Вебинар: С чего начинается автоматизация? – запись вебинара по автоматизации тестирования
- Combining Scrum, Kanban, and Scalable Agile Webinar – запись неплохого вебинара о применении Scrum и Kanban в больших проектах с большими командами
- #SFSE Video: Stripping Down RemoteWebdriver – отличное видео о внутреннем устройстве Remote WebDriver
- Defining Done: Why is it so hard and how to make it easier -живое выступление про критерии готовности от менеджера Microsoft
- How Eventual is Eventual Consistency? – что скрывается за eventual consistency и как измерять, настраивать NoSQL решения для лучшей производительности
Читайте и набирайтесь новых знаний!
15-ая встреча «Клуба анонимных разработчиков» 19 апреля
5 Апрель
Прошлая встреча клуба, которая проходила 29 марта, получилась просто отличной – очень много полезнейшей информации, интересные доклады и классная атмосфера. Участники остались очень довольны. Следующую встречу мы решили назначить на 19 апреля.
Темой встречи мы выбрали BPM. Бизнес-процессы включает в себя ряд активностей, целенаправленно исполняемых соответствующими участниками для достижения общей цели бизнеса. Эти процессы имеют важное значение для любой организации, поскольку они могут (!!) приносить доход и часто составляют значительную часть затрат. Для программиста, практически все с чем он работает – является бизнес-моделью, а соответственно он является активным участником бизнес-процесса. Более того, код, который он пишет – это результат процесса, так как «он» решает или призван решить бизнес-проблему.
Инженерный ум всегда старается найти общее решение частных проблем с целью оптимизации или упрощения, сейчас или в будущем. Давайте рассмотрим, как можно работать меньше (снижать затраты), а производить больше (увеличивать доход). Добро пожаловать в мир BPM!
Главным докладчиком выступит Виктор Полищук, который расскажет о JBoss Drools и о практическом его применении. Drools является реализацией движка правил на основе Рете (Rete) алгоритма Чарльза Форджи. Адаптация Rete к объектно-ориентированному подходу обеспечивает более естественное выражение бизнес-правил и связи с бизнес-объектами. Drools написан на Java, но может работать на Java и .NET.
В докладе Виктор хотел бы рассмотреть Drools на примере одного Java проекта. Он разберет требования и получившиеся правила, оценит скорость работы и требования к памяти, простоту поддержки и сложность рефакторинга. Надеемся, никто не уйдет обиженным.
Мы приглашаем выступить и поделиться опытом других докладчиков. Вы сможете в неформальной обстановке рассказать о своих достижениях и провалах, обсудить их с участниками, выслушать вопросы, советы и критику. Это отличная возможность попробовать себя в роли докладчика.
Итак, встреча пройдет в четверг 19 апреля. Место проведения мы объявим ближе к дате мероприятия. Это связано с тем, кто число членов клуба постоянно растет и мы рискуем не влезть в уютный Киевский офис компании DataArt. Этот офис полюбился членам клуба своей уютной обстановкой и наличием всего необходимого для продуктивного общения. Но, по итогам прошлых встреч, есть риск, что все желающие не поместятся.
Официальное начало встречи по-прежнему в 19:00, завершение в 23:00. Стоимость участия 80 гривен при оплате заранее, 120 гривен при оплате на месте. Пива, пиццы и кофе с печеньками хватит на всех. Регистрация обязательна. Все детали по оплате будут высланы вам после успешного прохождения регистрации. Количество мест ограничено 60 участниками.
Рубрика «Полезное чтиво». Выпуск 26
2 Апрель

Прошедшая неделя очень порадовала материалами для рубрики «Полезного чтива». Вот что насобиралось после прочтения:
- Bullets for legacy code – легаси код легаси кодом, а рефакторить надо
- Cassandra Indexing: The Good, the Bad and the Ugly – как работает индексация в Cassandra
- What is coming up for Sonar in 2012? – похоже единственное, что не сможет делать для нас Sonar в 2012 году – это писать код
- Tips to Developers Starting on Large Applications – отличные советы для разработчиков, начинающих работать в большом проекте
- Garbage Collection with Automatic Resource Management in Java 7 – AutoCloseable в Java 7 реально упрощает работу с ресурсами, причем можно и свои так же закрывать
- Тестируете на Selenium RC через HTTPS? Обновляйтесь до версии 2.19! – закончился HTTPS сертификат для WebDriver/Selenium
- Cache them if you can – обязательная для прочтения веб-разработчикам статья на тему кеширования
- Redundancy: An Open Enemy to Writing Good Code – дубликаты кода – зло, но не в случае найденного в интернете кода с его переосмыслением
- The frustrated architect – роль архитектора нужна и важна, даже в Agile проектах, но многие просто надеются, что обойдется
- What’s new in Intellij IDEA 11.1? – а вот и IDEA 11, но практически ничего мега вкусного
- Unitils IOModule – Unitils делает жизнь Java разработчика, пишущего тесты, еще легче
- Fiddler — помощник в отладке JavaScript – Fiddler — один из самых полезных инструментов для веб-разработчика
- When Disruptor is not a good fit – любой инструмент надо применять с умом, даже Disruptor!
- Why Legacy Code is the Way it is – откуда берется легаси код и что с ним делать
- All About Robust Thread Pools – внутренности Thread Pools
- Дорабатывать или переписывать – золотое правило опытного разработчика: работает – не трогай!
- Sonar 2.14 in screenshots – что нового в Sonar 2.14
- Как установить и настроить Robot Framework? – полезная инструкция по установке и настройке Robot Framework
И порция полезного видео для просмотра:
- Akka: Reloaded – что нового в Akka 2.0
- Does Pair Programming Have to Suck? – парное программирование рулит!
- Basic Application Development with Spring Roo and SQLFire – презентация SpringRoo и SQLFire
- Improve Your Java with Groovy – Groovy шикарно подходит для утилит, скриптов и особенно для тестов
- Zero Defects : Baking Quality into the Agile Process – тестирование и встраивание качества в Agile подходах
- Sufficient Design: Quality In Sync With Business Context – один из самых сложных вопросов в разработке – делать хорошо но медленно или грязно но быстро
- Spring 3.1 and MVC Testing Support – тестирование в Spring, и особенно Spring MVC, просто похоже на рай для разработчика
Читайте и набирайтесь новых знаний!
Что готовит нам весна?
29 Март
Весна постепенно набирает обороты. Март уже заканчивается и скоро наступят солнечные (мы искренне надеемся) апрель с маем. Мы запланировали много событий на эту весну. Что же вас ждет?
29 марта состоится 14-ая встреча «Клуба анонимных разработчиков». Мы смело можем назвать ее одной из самых интересных встреч – ведь будет рассматриваться «горячая» тема облачной разработки. На суд участников будут представлены доклады о разработке на облаке Amazon и Windows Azure. Поэтому каждый найдет для себя что-то интересное. Встреча пройдет в уютном офисе ДатаАрт по адресу Бехтеревский переулок 14Е. Начало в 19:00.
6-7 апреля состоится новый тренинг «Инженерные практики в Agile». 2 тренера (Николай Алименков и Алексей Солнцев) в течение 2-ух дней познакомят участников с 8-ью современными инженерными практиками. Будут затронуты вопросы внедрения, поддержания и пользы от этих практик. Все практики будут демонстрироваться на реальных примерах и включают в себя многолетний опыт использования наших тренеров. Это один из лучших наших тренингов. Группа почти набрана, осталось всего 5 мест.
13-14 апреля мы впервые проведем новый тренинг Дмитрия Ефименко под названием «Практики эффективного, но экономного проектирования». Дима вложил в этот тренинг весь свой опыт по проектированию программного обеспечения. Тренинг отлично сочетает в себе информацию о процессах разработки и проектирования, работу с требованиями, инженерные практики и подходы, анализ и управление рисками, а также несколько интересных практических заданий. Участники даже будут писать реальный код.
Группа еще формируется и не поздно присоединиться к составу участников.
21-22 апреля состоится важное событие в мире тестирования – международная конференция SQA Days 11. Наш тренер Николай Алименков выступит на конференции с докладом «А вы знаете что тестируют ваши тесты?». В докладе речь пойдет о связывании тестов с самыми важными артефактами вашего проекта – требованиями и кодом. Николай на практических примерах продемонстрирует как полностью контролировать что и как тестируют ваши тесты. Помимо этого, 20 апреля мы проведем популярный тренинг «QA в Agile». Этот тренинг позволит участникам познакомиться с ролью тестировщика в Agile процессах, грамотно настроить процесс QA в Agile команде, разобраться с ролью автоматизации тестирвания и современными веяниями в мире тестирования. Тренинг будет полезен как менеджерам, так и обычным тестировщикам.
В апреле проходит еще несколько интересных конференций в России и Украине, но побывать везде просто не хватает времени. Вот некоторые из них: CodeFest 2012, Cloud Foundry Open Tour 2012, Software People’12, РИТ++, Quality Assurance Day’12, Fun ConfeT&QA. Мы также постараемся провести очередную бесплатную онлайн конференцию IT Brunch. Тема еще окончательно не выбрана, но в этот раз мы планируем сделать ее более технической.
28 апреля пройдет еще один наш новый тренинг «Успешный старт проекта». Сергей Поволяшко подготовил этот тренинг на основании своего многолетнего опыта управления проектами. На тренинге вы сможете узнать какие активности стоит проводить на стадии инициирования проекта, какие риски есть и как с ними бороться, как оценивать проекты с финансовой и временной точек зрения, что необходимо включить в контракт и как это сделать. Если вы менеджер и ваша работа связана со стартом новых проектов, то этот тренинг для вас!
27-28 апреля Александр Белецкий проведет свой новый тренинг «Веб-разработка с использованием ASP.NET MVC». Этот тренинг рассчитан на программистов, знакомых с концепциями ASP.NET, возможно уже имеющие опыт с Web Forms, но желающих приобрести практические навыки с новой, популярной технологией ASP.NET MVC. Тренинг очень насыщенный и на нем будут рассмотрены практически все аспекты разработки современных веб приложений с использованием ASP.NET MVC.
11-12 мая в Москве состоится очередная конференция для разработчиков Application Developer Days-3. На протяжении двух дней участники смогут посетить множество совершенно разных докладов на тему разработки, а также пообщаться с коллегами. Николай Алименков выступит с докладом «Разработка распределенных приложений на AWS», в котором поделится своим опытом (более 2-ух лет) в разработке приложений в облачной среде. Николай рассмотрит сервисы, предоставляемые Amazon (самым популярным облачным провайдером на данный момент) и даст множество полезных советов тем, кто начинает или только задумывается над переездом в облака.
19 мая мы уже во второй раз соберем Java разработчиков в Киеве на большую конференцию для Java практиков – JEEConf 2012. В этот раз мы собрали еще более интересную программу. Докладчики приедут в Киев с разных стран и будут освещать различные инструменты, методики и практики из мира Java. Николай Алименков выступит на конференции с докладом «За что я ненавижу Hibernate?», в котором рассмотрит недостатки одного из популярных ORM решений и способы их обхода. На данный момент уже более 300 участников изъявили свое желание участвовать в конференции. Это будет действительно яркое событие наступающей весны.
Перед конференцией мы организуем ряд тренингов, посвященных Java разработке: «JavaScript for Java developers», «TDD в Java», «Introduction to Java EE 6″. Все тренинги проводятся опытными профессионалами индустрии. Группы наполняются очень быстро, поэтому поторопитесь занять себе место в составе участников.
Завершит весеннюю гонку конференция AgileBaseCamp CREW DRILL в Харькове 26-27 мая. Это два дня, насыщенных докладами экспертов, воркшопами и вдохновляющими блицами. Панельные дискуссии и Open Space, демонстрации от практиков и два полномасштабных мастер-класса. Наши тренеры Александр Белецкий, Дмитрий Ефименко и Николай Алименков готовятся выступить с докладами. Программа конференции еще формируется.
А еще на апрель и май у нас запланированы корпоративные тренинги в Киеве, Днепропетровске, Воронеже и Москве. Приглашайте нас в свой город и мы с радостью приедем!
Вот такая интересная выдалась весна. Будем рады видеть вас на перечисленных мероприятиях!
Рубрика «Полезное чтиво». Выпуск 25
26 Март

Две недели рубрика «Полезного чтива» не выходила в свет. Это было связано с заслуженным отдыхом. Зато за это время накопилось много всего:
- 12 Essential Skills for Software Architects – хорошая книга для списка на прочтение
- Basic Site Documentation: Maven 3 – maven site может подготовить отличную документацию по вашему проекту
- Spring MVC – Flash Attributes – теперь в Spring MVC можно передавать параметры между страницами
- Интеграция DBUnit и Spring TestContext Framework – для тех, кто не знает о Unitils, но очень хочет тоже иметь красивые удобные тесты
- 10 Best Practices for Code Commenting & Formatting – несколько простых правил по комментариям и форматированию кода
- Suppressing FindBugs Warnings – как отключить замечания от FindBugs
- TeamCity 7.0: Control the power! – цепочки билдов, типизация параметров, инкрементальные билды и много чего еще в TeamCity 7.0
- Common Sense and Code Quality, Part 2 – что умеют статические анализаторы в структурном анализе кода
- «I Have No Impediments» – в Scrum самым важным является поиск и устранение препятствий на пути команды
- Опубликован перевод документации по Selenium – опубликован перевод документации по Selenium на русский язык
- Observations on Dev / Ops Culture – все таки какие все IT компании разные…
- JQUERY 1.7.2 RELEASED – вышел jQuery 1.7.2
- Why Some People Think Messaging Is More Scaleable – в действительности, без сообщений очень тяжело построить масштабируемую систему
- How to Hire a Programmer – советы по найму сферического программиста в вакууме
- Test-Driven Emergent Design vs. Analysis – как TDD сочетается с дизайном
- Пишем кеш с определенным временем хранения объектов с использованием java.util.concurrent – а чего просто не взять кеш из Google Guava или EHCache?
- Sprint issues – when sprints turn into crawls – стандартные проблемы со спринтами в Scrum
- Run your enterprise like a startup – большие проекты тоже надо делать маленькими талантливыми командами!
- NoOps: Its Meaning and the Debate around It – скоро придем наконец к жизни, в которой работу админов будут выполнять облачные платформы, или не придем?
- Getting the Most of Scrum Burn Charts – отличная подборка материалов на тему burn down/burn up диаграмм
- Is HTML5 ready yet? – HTML5 никогда не будет закончен как стандарт, потому что мир меняется слишком быстро
- BDD in a Nutshell – что такое BDD и где узнать об этом побольше
- Here Is The Main Reason Why You Suck At Interviews – к интервью нужно готовиться как и к любой другой активности, если хотите делать ее успешно
- Incremental Building with Maven and TeamCity – как настроить инкрементальную сборку с Maven в новом TeamCity
- Incremental testing with TeamCity – инкрементальный запуск тестов на новом TeamCity поможет многим сэкономить кучу времени
- Сколько серверов в облаке Amazon EC2? – Amazon EC2 растет не по дням а по часам – уже 450 тысяч серверов
- Learning from mistakes with BDD – шикарный анализ типичных ошибок при работе в стиле BDD
- Top 3 Myths of Agile Testing – пару мифов Agile тестирования
- Guidelines for Java Testable Design – советы как сделать Java код более тестируемым
- Selenium IDE FlowControl: Примеры использования – подробная инструкция по подключению расширения FlowControl в Selenium IDE
- Agile Can Be Dangerous – отличный пример того, каким разным может быть понимание Agile
- Документация jQuery UI на русском – возрадуйтесь лентяи – теперь документация по jQuery UI есть на русском языке
- All about JMS messages – структура JMS сообщений
- Архитектура Tumblr – сколько же всего полезного можно почерпнуть из архитектурных решений таких проектов как Tumblr
- Burning Down Hours is Anti-Agile Because Working Software is the Primary Measure of Progress – я всегда считал burn down почасовой глупым занятием, сторипоинты и burn up куда лучше
- SQL Injection Attacks by Example – детальный разбор что можно получить с SQL Injection атакой, предохраняйтесь!
- scrum – agile = problems – гораздо важнее впитать Agile принципы и им следовать, чем работать по Scrum или даже XP
- 25 сервисов для продуктивной работы с Gmail – набор мегаполезных расширений для GMail
- Asynchronous and negative testing – как тестировать асинхронный код
- The Truth About Estimates in Software Development – размышления по поводу оценок и оценивания
- Optimizing ORM Performance – оптимизация работы ORM
- Speeding Up Java Test Code – cоветы по ускорению модульных тестов
- Extract, Inject, Kill: Breaking Hierarchies (Part 1) – некоторые шаблоны дизайна (template method) очень неприятны в тестировании
- Common Sense and Code Quality, Part 1 – качество кода, как его добиваться?
- Best Practices for Variable and Method Naming – для тех, кто подзабыл хорошие правила именования в Java
- Mikado Method For Refactoring Legacy Software – метод Mikado очень помогает при рефакторинге
- Question from the Mailbox: What Metrics Do You Use in Agile? – для Agile процессов не все классические метрики работают, надо использовать другие
- Redis: подробный обзор – обзор Redis на русском языке
- Thoughts on Test Automation in Agile – советы по автоматизации тестирования
- Screenshot on Fail v1.0 for Selenium IDE Now Available – отличный плагин для Selenium IDE, снимающий скриншоты на падении теста
- How to earn more money as a software engineer – чтобы зарабатывать больше денег разработчику нужно всегда быть на гребне волны и развиваться
- Selenium Tips: Uploading Files in Remote WebDriver – как загружать файлы с помощью WebDriver
- Introducing Akka 2.0 – вышла версия Akka 2.0
И порция добротного видео для просмотра:
- Tailoring Spring for Custom Usage – путешествие по Spring с одним из опытных разработчиков
- MESSAGING FOR MODERN APPLICATIONS – все таки Spring Integration, AMQP и RabbitMQ реально рулят!
- Видео докладов с конференции SPMConf-2011 – все одним торрентом
- Selenium Camp 2012 – опубликованы видео всех докладов конференции Selenium Camp 2012
- Жизнь без тестировщиков: миф или реальность? – видео моего доклада про жизнь без тестировщиков с онлайн конференции Chief ConfeT&QA
- Stripping Down RemoteWebdriver – отличная техническая презентация про WebDriver
Читайте и набирайтесь новых знаний!
Найм сотрудников. Часть 3 – Нежелательные кандидаты.
26 Март

Сегодня решил написать очередную статью из серии статей на тему отбора сотрудников. Статья будет короткой, но я постараюсь сделать ее интересной. Будут рассмотрены несколько вещей, на которые я обращаю большое внимание при отборе кандидатов, при этом не связанные напрямую с его уровнем подготовки.
Итак, первый тип «плохих» кандидатов – так называемые бегунки. Это люди, которые постоянно меняют работу и не могут проработать на одном месте больше полугода. Когда таких места 2 или 3, это еще не вызывает подозрения. В этом случае можно сослаться на неудачный опыт, быстрый карьерный рост, короткие проекты и т.д. Но если кандидат за 4 года сменил 6-8 проектов, то для меня это практически красный флаг.
Я хочу брать в проект людей, которые потенциально готовы работать в нем достаточно долго (хотя бы год-полтора). Ради нескольких месяцев нет смысла вкладывать в человека – передавать ему знания доменной модели, технологического стека, процессов и практик. Это замедляет команду, поэтому такие инвестиции хочется потом вернуть сполна. А бегунок уже имеет совершенно другие планы.
Приведу несколько примеров почему такие кандидаты встречаются. Наиболее распространенный типаж – «я работаю работу там где больше платят и лучше живется». Это значит, что при появлении на рынке более «жирной» вакансии этот человек может не раздумывая «подать на развод».
Второй пример – «карьеристы». Они действуют по принципу «каждые полгода я очень сильно расту и мне нужны новые горизонты». Но вам то нужен надежный грамотный человек на изначальной позиции. У вас может не быть интереса в такой короткий срок на другие позиции. И, признаться откровенно, большая часть подобных «карьеристов» только мнят себе профессиональный рост. На самом деле они знают все по верхам и пытаются вылезть наверх, пользуясь ситуацией на рынке.
Третий тип – люди, которые ни с кем не могут ужиться в команде. Вот сидит перед вами отличный технический специалист, но в команде он скорее тормозит работу, чем помогает добиваться поставленных целей.
В любом случае, с таким типом кандидатов лучше не рисковать. Я встречал их очень много и каждый раз оказывался прав. Некоторые заранее имели свои планы на работу в компании, дожидаясь выезда за границу. Другие начинали играть на проблемах и интересах проекта. Для себя я точно решил, что риск в подобных случаях совершенно неоправдан. Кандидат может оказаться адекватным, но ошибка будет стоить гораздо дороже.
Второй тип «подозрительных» кандидатов, о котором я хочу поговорить, легко распознать по отношению к собеседованию. Обычно такой кандидат опаздывает на собеседование или же и вовсе приходит со второй попытки. К вопросам на собеседовании у него похожее отношение – все знания очень поверхностные, несколько «неряшливые». При этом в резюме у человека перечислены все возможные технологии, с которыми он хотя бы раз в жизни сталкивался. Обновлять резюме такие кандидаты ленятся.
Часто создается ощущение, что человеку эта работа вообще не так уж и нужна. Он может задавать встречные вопросы наподобие «а зачем мне это знать» или «почему мне задают такие вопросы». Из моего опыта точно так же кандидат будет относиться и к работе в вашей компании – не утруждать себя приходить вовремя на важные мероприятия, не заморачиваться детальным пониманием системы и технологий, выполнять только работу, за которую по его мнению ему платят. Работать с таким человеком в одной команде сложно. Мы работаем далеко не за маленькие деньги в IT индустрии и стоит нанимать только тех людей, которые хотят работать и понимают ответственность этой работы.
Удачного вам найма!
Стоит ли задавать вопросы с примерами кода на собеседовании?
17 Март

В последнее время стало модно писать про проведение собеседований. Вопросам правильного найма сотрудников уделяется все больше внимания. Я хочу поделиться своим мнением по поводу подхода, в котором у кандидата не спрашивают про конкретные примеры использования инструментов, API, библиотек языка программирования. Мол, главное чтобы соображал хорошо, а для остального есть Google.
Мне данный подход кажется более чем неправильным. Я не призываю спрашивать наизусть заученные названия классов и методов. Это как раз можно решить с помощью IDE и того же Google. Но вот в какую сторону копать надо знать четко. Особенно если именно в этой области вам предстоит работать достаточно долго.
Отличным примером такой области является многопоточность. Я не верю, что можно найти правильное решение задачи параллельного доступа к ресурсам, если ты не знаешь основных подходов и шаблонов. Более того, можно даже не подозревать, что проблема вообще возможна. И даже не будет необходимости искать решение.
А если начать искать, то в топе будут обычные классические примеры на «чистой» Java или другом языке программирования. И что происходит дальше? Человек просто копирует решение к себе и не переживает. Откуда ему знать про Java Concurrency API, про Google Guava и другие полезные библиотеки? Что получается в итоге? Куча времени на поиск и понимание решения, бездумное копирование и минимум новых знаний. Потом это решение в коде находит грамотный разработчик и исправляет его на более быстрое, надежное и грамотное. А за все уже заплачено!
И зачем платить больше? Ведь дешевле нанять заведомо хорошо разбирающегося в данной области человека, возможно за большее количество денег, чем платить постоянно. Расходы гораздо более предсказуемы. И это мы рассмотрели позитивный сценарий, когда найденное решение или его копирование не приводит к ошибке. Иначе стоимость будет гораздо выше.
Еще один банальный пример из Java мира – поиск в строке. Казалось бы безобидный поиск, но каждый раз создается и компилируется шаблон регулярного выражения, что замедляет работу метода в десятки раз. Это нереально найти, если ты заранее не знаешь о таком поведении. Логично ли задать такой вопрос для проекта, где работа со строками идет очень интенсивно? Или лучше потерять потом часы и дни на отладку и тюнинг производительности?
Приведу еще один пример, более «бытовой». Все знают, что ORM библиотеки умеют подгружать коллекции дочерних элементов автоматически по заданному маппингу. Но задумается ли человек, который не изучал как работает используемый в вашем проекте ORM инструмент, как и когда это происходит? Я думаю нет! И, в итоге, код будет делать сотни запросов в базу данных по совершенно простому действию с коллекцией (к примеру поиску по ней). И ничего не будет предвещать беды, пока приложение не будет под реальной нагрузкой. Стоит ли разбирать такие куски кода на собеседовании, если ORM у вас используется очень активно? Думаю да!
Резюмируя, очень важно убедиться, что кандидат понимает важную для вашего проекта область разработки на должном уровне. И для этого можно и нужно разбирать реальные примеры, задачи из жизни и реальный код. Ничего плохого в этом нет. Но и требовать от кандидата держать в памяти все методы и классы глупо. Важно убедиться в том, что при проблеме человек точно знает направление поиска. Беспорядочный поиск будет стоить вам очень дорого! Помните, что дешевле не нанять правильного человека чем нанять неправильного!







