Pull to refresh
102
0.4
Роман Смирнов @Source

Head of Elixir at Ecom.tech

Send message

FizzBuzz, или почему программисты не умеют программировать

Reading time4 min
Views296K
[Автор этой статьи — Джеф Этвуд (Jeff Atwood), один из основателей stackoverflow.com. Сама же статья, несмотря на довольно приличный возраст (она написана в 2007 году) до сих пор популярна, а введенный в ней термин «FizzBuzz question» стал общеупотребительным. Оригинал можно найти здесь.]

Я весьма скептически отнесся к следующему наблюдению Реджинальда Брейтвайта (Reginald Braithwaite):

«Меня немного удручает тот факт, что 199 из 200 соискателей программистских вакансий не умеют программировать. Повторю: они не умеют писать код. Вообще.»

Читать дальше →

Эффект Даннинга-Крюгера

Reading time3 min
Views133K
Открыв сегодня Хабр с утра, я обнаружил там статью в хабе Human Resources, «У Вас много денег? Тогда мы идем к Вам!»
Мне по работе не раз приходилось встречаться с ситуацией, описанной там, да, уверен, большинству читающих ситуация хорошо знакома.
Однако буквально на днях, бродя по Википедии, я нашел ответ на вопрос «Что же за phukinglyphuk приосходит с этим миром?», мучавшим меня на протяжении многих лет. Своей находкой я хочу поделиться здесь:

Эффект Даннинга — Крюгера — когнитивное искажение, которое заключается в том, что люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации (выделение мое, track). Это приводит к возникновению у них завышенных представлений о собственных способностях, в то время как действительно высококвалифицированные люди, наоборот, склонны занижать свои способности и страдать недостаточной уверенностью в своих силах, считая других более компетентными. Таким образом, менее компетентные люди в целом имеют более высокое мнение о собственных способностях, чем это свойственно людям компетентным, которые к тому же склонны предполагать, что окружающие оценивают их способности так же низко, как и они сами. (выделение снова мое, track)
Читать дальше →

О плюсах и минусах Go

Reading time16 min
Views52K
В данной статье я хочу поделиться опытом, полученным в ходе переписывания одного проекта с Perl на Go. В ней будет больше о минусах, чем о плюсах, ибо о достоинствах Go и так поведано немало, а вот о подводных камнях, ожидающих новых разработчиков, узнать зачастую, кроме как от собственных шишек — неоткуда. Пост никоим образом не преследует цели охаять язык Go, хотя, признаться, некоторые вещи я был бы рад не писать. Также в нем охвачено сравнительно небольшой срез всей платформы, в частности, не будет ничего о шаблонах, регекспах, распаковке/запаковке данных и подобного, часто используемого в веб-программировании, функционала.
Читать дальше →

Знакомство с Go, часть 2: пишем граббер изображений с балансировщиком и извращениями

Reading time13 min
Views23K

Задание


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

Для тех кто пропустил — в свое время «Тематические Медиа» (да-да, хозяева хабра) запустили проект «Респектива» ( этакую гламурную имиджборду\тумблр с одним разделом), хитроумными баннерами заманили туда девушек и программистов и стали ждать, видимо надеясь что срастется. Не срослось, и через некоторое время «Респективу» мутировали в «Атату», которая уже имела функционал для создания пользовательских бордпотоков, хабов для объединения тематических потоков и так далее. Какое-то время проект развивался, но Девушки ушли, остались программисты, да и их стало куда меньше. Сейчас это место почти покинуто, там чумные ветра, брошенные поезда, темнота и только редкие вопли нескольких выживших старожилов изредка прорезают хтмл в ночи.

И ладно, атата с ней, с этой ататой. Но отличного контента в виде картинок там осталось немало, один тред с обоями чего стоит! Поэтому неудивительно, что следующее задание из штаба выглядело следующим образом:
«Срочно сохранить для потомков все изображения из потока #949 #291. ps. Извращенно.»

Ну, что же, есть задание — нужно работать. Вообще-то по извращенным структурам у нас уже есть некий кофейный чемпион, но и на Go тоже можно что-нибудь сообразить! После 9 часов работы в Paint у меня родился следующий план атаки:



Степень изврата поражает, начальство будет довольно! Рассмотрим что тут и как:

«Генератор» будет загружать с ататы хтмл код страниц, выдергивать урлы картинок и передавать их «Балансировщику», который раскидывает эти урлы некоторому количеству «Рабочих» (каждый из которых имеет свою небольшую очередь заданий) следя за тем, чтобы все рабочие были равномерно нагружены. Ну а «рабочие» загружают картинки и радуют глаз умиленного балансировщика. Выглядит избыточно, но зато про войну! Поехали:
Читать дальше →

Почему нет простых решений о том, что лучше — купить серверов или оптимизировать код

Reading time6 min
Views33K
В ответ вот на эту статью, про выбор покупки серверов или оптимизации.

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

Как обычно происходит и почему


Действительно, существует такое распространенное мнение, что железо купить проще и надежнее, чем оптимизировать код.
Другой вопрос, а проводились ли достоверные исследования на эту тему? Думаю, нет, и это только подтверждает тезисы статьи «Программирование, как новый вид человеческой деятельности».

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

Инъекция React JS в приложение на Angular JS или борьба за производительность

Reading time7 min
Views18K
Дорогие Хабролюбители, всем привет! Не откроем Америку если скажем, что существуют сотни плагинов и библиотек, которые облегчают специализированные задачи, связанные с построением современных web интерфейсов. Angular один из них, про его производительность писалось много и в большинстве случаев даются рекомендации чего не нужно делать, чтобы все было хорошо.

Основной аргумент сторонников — медленно работают неправильные приложения, а вот правильные не должны содержать более 2000-3000 элементов. Если содержит больше значит что-то не так. См. например http://iantonov.me/page/angularjs-osnovy.

Аргумент в общем вполне здравый, но всегда есть ситуации, когда нужно написать «неправильное» web приложение потому, что такие требования. В этой статье мы решили рассказать как раз про такую задачу, и как мы ее решили. На наш взгляд статья будет полезна в большей степени профессиональным веб разработчикам. Итак, наша задача была сделать календарь для системы бронирования для одного спортивного клуба. Календарь отображает семь 12–часовых блоков, каждый день из которых разделен на 15 минутные интервалы. В блоке может быть от 2-х до 10 DOM элементов. Вроде ничего не предвещало беды, верхняя граница ~3000.
Читать дальше →

Что дешевле: новое железо или труд разработчиков?

Reading time4 min
Views36K
На данную статью меня сподвиг следующий пост «Как улучшить свой стиль программирования?» плюс недавний спор среди коллег.

Представьте себе такой диалог:

Админ: Господа, разработчики, ваш код на сервере стал поедать много оперативки. Сервер уже свопиться начинает. Сами понимаете, все может встать колом!
Представитель разработчиков (например, тимлид): Блин, беда. Сейчас займемся проблемой.
Эй, команда, нас тут админы стыдят за неоптимальный код. Нужно срочно все бросить и оптимизировать старый код.
Менеджер проекта: Эй, вы куда? Какая оптимизация? Пусть админы докупят памяти в сервера и проблемы нет. А у вас вон кучу нового функционала нужно разработать. Никакой оптимизации! Сосредоточьтесь на новом функционале. Нам нужно опередить конкурентов с новыми фичами. Потом как-нибудь оптимизируете свой код.

И кто по вашему прав? Что нужно сделать? Сделать апгрейд железа или заняться оптимизацией?
В конце статьи будет голосование.
Читать дальше →

Как мы перешли с 30 серверов на 2: Go

Reading time4 min
Views69K

Как мы перешли с 30 серверов на 2: Go


Когда мы выпустили первую версию IronWorker около 3 лет назад, она была написана на Ruby, а API было написано на Rails. Через некоторое время нагрузка стала быстро расти и мы быстро достигли предела возможностей наших Ruby приложений. Короче говоря, мы перешли на Go. И если вы хотите узнать подробности — продолжайте читать…
дальше

Ставим Ubuntu на MacBook pro 11.3 (2013) или хакинтош наоборот

Reading time6 min
Views80K
Пришло время мне менять ноутбук, и с крайнем неудовольствием для себя, я обнаружил, что ноутбуков с экраном 16х10, кроме продукции одной фруктовой компании(с), на рынке просто нет. Надо сказать, что по железу новая прошка весьма не дурна, и не смотря на конский ценник, жаба была задавлена, а ноутбук приобретен.
Осталось взгромоздить на него Linux

Об эффективном процессе разработки программного обеспечения

Reading time7 min
Views26K
image

Чем одна компания отличается от другой? Почему заказчики с удовольствием заказывают у одной компании, но совершенно не замечают другую? Почему одна компания разрабатывает софт полтора года, а другая управляется всего за полгода? Есть множество причин, но всех их объединяет одна особенность – успешные компании эффективны. О том, как повысить эффективность компании на базе её отдельных составляющих, поговорим в этой статье.

Читать дальше →

Ваши программисты работают в поте лица или просто ленятся?

Reading time4 min
Views99K
Когда люди выполняют физическую работу, легко оценить, насколько тяжело они трудятся. Видно, как они двигаются, потеют. Видны и результаты их работы: кирпичная стена растет, дыра в земле становится все больше. Одобрять и награждать за тяжелую работу — это фундаментальный человеческий инстинкт, одна из причин, по которой нам так нравятся силовые виды спорта. Но когда дело доходит до управления творческими или техническими сотрудниками, это инстинктивное восприятие тяжелой физической работы становится проблемой. Эффективные работники умственного труда часто не похожи на людей, которые тяжело работают.

В 2004 году я работал младшим разработчиком в большой команде отдела по биллингу и предоставлению услуг в компании кабельного телевидения. Как и все большие системы, эта состояла из нескольких относительно самостоятельных компонентов, над которыми работали отдельные сотрудники или небольшие группы. Системы цифрового и аналогового ТВ были почти полностью отделены друг от друга, с каждой из них работала своя команда.
Читать дальше →

Как мы с помощью математической статистики измеряем качество данных в Яндекс.Городе

Reading time8 min
Views21K
Летят в самолете Петька и
Василий Иванович, Василий Иванович кричит:
— Петька, приборы!
Петька отвечает:
— Двести!
Василий Иванович:
— А что «двести»?
Петька:
— А что «приборы»?

Сегодня выходит из беты наш новый сервис — Яндекс.Город. Он появился как логичное продолжение Яндекс.Справочника, который был единым источником знаний об организациях для всех наших сервисов. Его данные используются собственно в приложении Я.Город, на Яндекс.Картах, в сниппетах на странице результатов поиска, для построения маршрутов в Картах и Навигаторе, определения номера в Яндекс.Ките, выбора мест отправления и прибытия в Такси. Найти места и организации можно было на многих наших площадках, а вот выбирать там не очень удобно.

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

Если у вас свой бизнес, и если вы наемный менеджер, вам очень важно уметь измерять бизнес-показатели. Как вы поймёте, что хорошо или плохо всё работает? Как проверите, что изменения привели к улучшению? На чем вы будете основываться, принимая решения? Для всего этого нужны метрики — количественные характеристики состояния системы.


У сервиса поиска мест на Яндексе многолетняя история, и к его созданию приложили руку несколько команд. Растёт он из проекта adresa.yandex.ru. Потом Яндекс интегрировал в него бизнес «Жёлтых страниц» — так появился Справочник. Около года назад очень сильно обновилась команда сервиса. И он начал превращаться в Яндекс.Город. Я в этой команде руковожу службой производства данных и сегодня расскажу вам о том, какие у нас метрики и как они помогают нам делать лучшую базу организаций в России.
Читать дальше →

Директивы в AngularJS

Reading time7 min
Views83K
Директивы — это ключевая особенность AngularJS. С помощью директив можно добавлять новое поведение существующим HTML элементам, можно создавать новые компоненты. Примерами директив, добавляющих новое поведения для существующих HTML элементов, могут служить input, select, textarea в связке с ngModel, required и т.п. Перечисленные директивы в основном связаны с валидацией форм в AngularJS. Но тема валидации заслуживает отдельной статьи.

Директивы можно и нужно использовать для повышения модульности вашего приложения, выделения обособленной функциональности в компоненты, в том числе и для повторного использования.

Если вы разрабатываете приложение на AngularJS и не создаете директивы, то это уже само по себе немного настораживает. Либо ваше приложение достаточно простое и уложилось в стандартные возможности AngularJS, либо, скорее всего, что-то не так с архитектурой вашего приложения. А если у вас при этом есть работа с DOM-ом в контроллерах или сервисах, то вам однозначно надо разбираться с темой создания директив, т.к. манипуляций с DOM-ом не должно быть нигде, кроме директив.

В данной статье я постараюсь рассмотреть процесс создания собственных директив на нескольких примерах.

Читать дальше →

Обзор бесплатных сервисов для веб-разработки

Reading time4 min
Views144K
Пост является личной подборкой полезных и нужных онлайн сервисов, которые позволяют бесплатно (или условно бесплатно) создавать действительно крутые вещи и разворачивать их в Сети. Не претендую на новизну или на полноту, но буду счастлив, если кому пригодится.

Всем нам иногда хочется попробовать новую идею, запилить какой-нибудь сайтик про манулов, но чтоб обязательно на node.js, хайлоад реди, с мемкешем, монго, фейловером и с претензией на мировое господство. У меня для Вас хорошие новости: благодаря щедрости проклятых западных капиталистов всё это можно получить совершенно бесплатно.
Читать дальше →

Отмена изменения пути в AngularJS

Reading time4 min
Views17K
Давно полюбив Angular, я только сейчас добрался до блога автора фреймворка Dan Wahlin. А зря — там можно найти много интересных и нужных каждому приложению мыслей. Одну из них я и перевёл в этой статье. В ней вы узнаете как можно остановить переход на другую страницу в приложении Angular.



Читать дальше →

Никогда не отвлекай программиста

Reading time2 min
Views242K
Во многих компаниях программистам запрещают работать в наушниках или отвлекают их по мелким вопросам. Вероятно, причина кроется в плохой информированности менеджеров и других сотрудников, насколько вредно так делать.

Крис Парнин (Chris Parnin) из технологического института Джорджии решил восполнить этот недостаток и опубликовал чрезвычайно насыщенную статью со ссылками на различные исследования по этой теме.

Для начала, несколько фактов, которые относятся ко всем работникам интеллектуального труда. Задача, прерванная по ходу выполнения, занимает в два раза больше времени и содержит вдвое больше ошибок, чем та же задача, которая выполнялась без прерывания (Czerwinski:04). Офисные сотрудники вынуждены отвлекаться при выполнении 57% задач (Mark:05). Опросы говорят о том, что сотруднику требуется в среднем 15 минут, чтобы вернуться в нормальный ритм после того, как его отвлекли (vanSolingen:98).
Читать дальше →

Как поймать «поток», и как сделать так, чтобы он не сорвался

Reading time6 min
Views49K

Вступление


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

Читать дальше →

[видео] Как избежать незапланированного отката: разбор 7 реальных переговорных ситуаций

Reading time4 min
Views41K
Раз уже тема переговоров с заказчиками и коллегами оказалась интересна хабровчанам (48,000 просмотров видео за неделю), мы решили продолжить эту тему.

Предыдущие материалы:


На этот раз мы попросили Дмитрия Коткина, руководителя Санкт-Петербургской школы переговорщиков ШиП разобрать ситуации более подробно. Правда, и ситуации не такие простые. Более конкретные, про проектную работу в ИТ, с непростыми заказчиками и коллегами.

Надеемся, что это окажется вам полезным. Видео-разборы 7 реальных ситуация — под катом:
  • “На свободу — с готовой отчетностью!”
  • “4 часа, чтобы сделать клиенту чушь”
  • “Миссия невыполнима (с данным оборудованием)”
  • “Начинайте работы, через 14 часов открытие магазина”
  • “Наш бюджет в 3 раза меньше”
  • “Незапланированный откат”
  • “Если у вас в руках молоток, то все вокруг кажется гвоздем”


Читать дальше →

Расширение и компоновка директив

Reading time4 min
Views18K
Про директивы много написано, но мало о том как писать их правильно. Поделюсь опытом.

Хорошо написанная директива должна
  • решать одну задачу
  • легко расширяться
  • не конфликтовать с другими директивами


Разберем каждый пункт на примере поля для ввода пароля (думаю, всем знакомо поле с глазиком)

image

<input ng-model="user.password"
       ng-minlength="6"
       form-password
       form-error="Не менее 6 символов">


Сколько директив используется?
Читать дальше →

Рабочее место Попкорн: Как стать Супер-продуктивным работая на себя

Reading time6 min
Views91K

Коллеги, представляю вам перевод статьи про Супер-продуктивность, которая меня сильно зацепила. Надеюсь, что перевод будет вам полезен для организации своего рабочего времени.

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

Супер-продуктивность — как начать работать больше, чем когда-либо
Читать дальше →

Information

Rating
3,592-nd
Location
Россия
Works in
Registered
Activity