Разработчики ПО, дизайнеры и прочие диджитал-ремесленики обожают гибкие методологии:
— продукт выходит такой, какой нужен рынку;
— заказчик не тратит миллионы на разработку продукта балласта, который был описан в тз (ха-ха, конечно тратит).

Вин-вин, ребята! Однако, всепланетарый успех, как мне кажется, связан не с плюсами аджайла, а с выбором внутренней обезьяны. О чем это я?

Аджайл разрешает ленится. Лень планировать — работаем по гибкой методологии. Не будем писать тз, спецификацию и план разработки — поработаем недельку, посмотрим на результат и решим как дальше. Психологически это проще, чем планировать.

Для создания любого диджитал-шлака — дизайна или программного кода не нужны физические…


Шок контент! Профессиональные знания не так важны для успеха проекта, намного важнее уметь взаимодействовать с коллегами и клиентами.

Фундамент профессионального успеха — уважение к окружающим. Не любовь, не дружба, не шуточки, а уважение.

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

Уважение в мелочах! В работе мелочи — это не мелочи.

  • Написать одно сообщение, где подробно рассказать, что вы хотите от…

Несколько субъективных правил, которые позволили мне найти замечательных ребят и расстаться с менее замечательными.

  1. Самое главное. Человека можно научить кодить, а быть адекватным нет. Если кандидат не блестящий в технике, это поправимо. Но если он говнится уже на этапе переписки, не стоит тратить на него время
  2. Из резюме, интервью и тестового задания все равно не понятно кто он такой. Возьми человека на пару недель на парт тайм, давай ему задачи, которые не горят. Поймешь как он делает реквесты, следит за сроками и отвечает на комментарии. Это хорошо и для кандидата, потому-что ему не надо бросать работу для этого.
  3. Я даю…


На размышления меня натолкнули книга Марка Форстера «Сделай это завтра» и пост Николая Товеровского «Прямо сейчас».

Сделай завтра — формируй «закрытый» список дел на сегодня. Любые входящие задачи в него не попадают, планируешь их на завтра или любой другой день. Методика помогает не закопаться в рутине и сделать то, что хотел сделать сегодня.

Сделай сейчас — сделать дело прямо сейчас. Не через 5 — 10 минут, не на неделе, а в эту же секунду. Способ помогает закрывать задачи сразу и не накапливать в списке задач.

Отложить на завтра или сделать сейчас? Я делаю так: думаю сколько займет решение, если меньше 5 минут, делаю сразу. Бывает не хочется звонить кому-то или лень навести порядок в шкафу. Оцениваю, управлюсь ли за 5 минут. Часто ответ — да, делаю. Если займет больше или я серьезно занят, откладываю в список задач.


Коротка инструкция.

gem build your_gem_name
gem release your_gem_name-0.0.X.gem

Если при релизе вы видите ошибку:

ERROR: “https://rubygems.org" is not allowed by the gemspec, which only allows “none”

Удалите строчку из вашего .gemspec файла

spec.metadata[‘allowed_push_host’] = ‘none’

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

Рахим рассуждает о постоянстве развития западной цивилизации. Например, в Европе на протяжении веков прогресс был равномерным, а Азия и Россия развивались скачками.

Меня заинтересовала эта тема, делюсь размышлениями. Пишу от себя, как и любой треп…


Задача: найти gem, который распознает QR коды.

Решение: https://github.com/willglynn/ruby-zbar, перед распознованием уменьшайте большие картинки.

Процесс решения: есть две популярные бибилотеки для чтения QR кодов — zbar и zxing. Первая написана на C, вторая на Java. Zxing более популярна и лучше поддерживается. Можно сходить на https://zxing.org/w/decode.jspx и посмотреть как она распознает коды. Я не смог ее завести на маке, поэтому отложил эксперименты.

В Акти мы пользовались ruby-zbar. С ней была проблема — она не читала большие хорошие фотки QR кодов. Если фоткать на современный телефон, то фотка будет с большим разрешением. …


Хочу поделится впечатлениями от прочтения книги Николая Товеровского “Управление проектами, людьми и собой” https://bureau.ru/projects/book-fff/.

Книга перевернула мое представление о планировании и огранизации рабочего времени. С удивлением понял, что в моих проектах планирование просто отсутвует. Мое личное и рабочее время используется ужасно неэффективно и я не знаю куда двигаюсь в профессиональном плане.

Управление собой — самый крутой раздел в книге. Я узнал, что в будний день можно спать, смотреть кино, гулять в парке и никто на меня не будет косо смотреть (даже я сам).

После такого вступления, вы можете подумать, что я пишу о серебрянной пуле, но это не так. Работать…


Постоянно встречаю “проблему другого объекта” при терстировании контроллера в рельсах и не могу найти для нее хорошего решения.

Начнем с проблемы. Есть экшн контроллера и тест для него

Тест

Такой тест упадет с ошибкой: “expected: 1 time with any arguments
received: 0 times with any arguments”. Причина в том, что мы ожидаем запуска update! на объекте user, в реальности update! запускается на новом объекте, который формирует ActiveRecord полсе запуска User.find.

Решения?

Использовать expect_any_instance_of

Ожидаем на любом инстансе User вызова update!. Рабочий вариант, но плох при тестировании вызова стандартных методов и сложных конструкий. Метод update!


Сегодня разбирал интересную ката на codewars и столкнулся с проблемой определения типа строки. Почему-то instanceof не отдавал true для обычных строк, пришлось разбираться.

Посмотрим на две строки, одна создана через констуктор, другая нет:

Бросается в глаза, что в первом случае instanceof возвращает false. Это связано с мехнизмом работы оператора. Для проверики условия, он пробегается по prototype chain и не встречает там прототипа String, поэтому возвращает false.

Как же проверить строку? Как советуют на stackoverflow, есть два приемлимых варината

Подробнее про instanceof и prototype chain в документации:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

Alexey Naumov

software engineer или программист

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store