Новая услуга: регулярный аудит Си/Си++ кода

PVS-Studio, аудит кода

До недавнего времени мы занимались исключительно развитием и продажей продукта PVS-Studio. Потом мы подумали и решили предлагать новую услугу: регулярный аудит кода. Про неё я и расскажу. Статья предназначена для менеджеров и тимлидов. Дабы не портить себе настроение и не минусовать, программистов прошу статью не читать.
(далее…)

Alfa Camp 2014: 94 участника за 5 недель реализуют свои идеи и представят инвесторам

Давайте не будем скромничать: многим из нас лезут в голову просто блистательные идеи. Некоторым — даже по две-три штуки в день. Только вот слишком часто они так и умирают, нереализованными. Или погибают после первых неудачных попыток воплотить их на практике.

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

Задумавшись обо всем этом, мы и решили организовать Alfa Camp. Это программа развития финтех-стартапов как раз и призвана дать молодым инновационным командам ресурсы, необходимые им для воплощения своих идей. (далее…)

«Как сделать что-то колоссально полезное». Alfa Camp 2014 начал работу

Давайте не будем скромничать: многим из нас лезут в голову просто блистательные идеи. Некоторым — даже по две-три штуки в день. Только вот слишком часто они так и умирают, нереализованными. Или погибают после первых неудачных попыток воплотить их на практике.

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

Задумавшись обо всем этом, мы и решили организовать Alfa Camp. Это программа развития финтех-стартапов как раз и призвана дать молодым инновационным командам ресурсы, необходимые им для воплощения своих идей. (далее…)

Перестаньте называть себя программистом и другие карьерные советы

Есть один курс, который я бы добавил в программу обучения по всякой инженерной специальности, и он не о компиляторах или сложности алгоритмов. Это “Введение в реальность индустрии”, ибо об этом не говорят и это приводит к никому не нужным обломам. Эта статья претендует стать README.txt для молодого инженера в деле построения карьеры. Ее цель — сделать вас счастливее, заполнив пробелы в образовании относительно того, как работает реальный мир. Я не призываю следовать написанному как подробному руководству, но я надеюсь, что эта информация окажется для вас более ценной, чем то ничто, что вам рассказали об этом в университете. (далее…)

Переезд электронщика в Шэньчжэнь. А стоит ли ехать так далеко?

Переезд электронщика в Шэньчжэнь. А стоит ли ехать так далеко?

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

Это город Зеленоград

Переезд электронщика в Шэньчжэнь. А стоит ли ехать так далеко?
(далее…)

Принципы работы одного Python-разработчика

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

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

Принципы условно сгруппированы в три группы: принципы принятия решений; принципы, направленные на повышение качества кода; принципы, направленные на повышение производительности кода.

  • Принятие решений
    • Любое техническое решение должно быть обосновано
    • Ответственность за принятое решение всегда лежит на том или тех, кто принял данное решение
    • При принятии технических решений необходимо учитывать их действие во времени и их соответствие потребностям бизнеса
    • Одним из основных критериев при принятии технических и иных решений должна быть их наибольшая эффективность
    • Смело отступать от правил, методологий, шаблонов и прочих ограничений, если эффект от такого отступления превышает возможные потери (Special cases aren’t special enough to break the rules, although practicality beats purity)
    • При необходимости сделать работающее, но, возможно, не наилучшее, решение сразу, а позднее улучшить его (Now is better than never, although never is often better than *right* now)
    • Если сложно выбрать между двумя альтернативными техническими решениями, то нужно выбрать любое и двигаться с ним дальше, когда появится больше инфорации, то можно будет сделать рефакторинг, если решение оказалось неоптимальным
    • Гибкость технических решений крайне желательна, а универсальность не обязательна
  • Качество исходного кода
    • Качество кода следует оптимизировать на базе сформированной системы критериев, сбалансированной по отношению к затратам в краткосрочном и долгосрочном периодах
    • Писать оптимальный код сразу, если это не увеличивает его сложность и сроки разработки (Beautiful is better than ugly)
    • Самодокументируемый код имеет приоритет над хорошо прокомментированным (Beautiful is better than ugly)
    • Писать TODO и FIXME в коде
    • Давать переменным, функциям, методам, классам и другим объектам исходного кода имена точно отражающие их назначение, несмотря на увеличение длины названий (Explicit is better than implicit)
    • Меньшее число строк и объем кода предпочтительнее, при сохранении прежней читабельности кода (Simple is better than complex)
    • Применять инспекцию кода (code review) как инструмент обнаружения ошибок, выравнивания стиля разработки, знакомства с чужим кодом и обучения в команде
    • Применять повторное использование своего и чужого кода
    • Использовать специализированные библиотеки для решения конкретных задач, вместо разработки своего аналогичного кода
  • Производительность
    • Производительность разработки кода имеет приоритет над производительностью исполнения кода
    • Оптимизация производительности исполнения кода должна быть обоснована соответствующей потребностью
    • Оптимизация производительности исполнения кода должна выполняться за счет устранения наиболее серьезных узких мест
    • В первую очередь должны быть использованы наиболее эффективные методы оптимизации производительности исполнения кода

Далее дано развернутое пояснение каждому из перечисленных принципов. Для некоторых принципов в круглых скобках указанны постулаты Zen of Python, которые на мой взгляд имеют отношение к данным принципам, либо их частям. (далее…)

Немного об организации отдела информационной безопасности

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

Исходя из этого непонимания складывается и все проблемы ИБ в организациях и, собственно, организации самой информационной безопасности.

(далее…)

Growth Hacking — 5 правил успеха

Growth Hacking — 5 правил успеха Growth Hacking — это то, о чем постоянно думают стартапы Кремниевой долины, а сейчас уже и все проекты на начальной стадии в нашей стране. Что же это такое? Как правильно настроить компанию и ее сотрудников на быстрый рост? Мы публикуем 5 правил для тех, кто хочет добиться быстрого роста компании, от Линкольна Мёрфи. Статья написана от первого лица.

На данный момент Growth Hacking является крайне популярным явлением: фактически каждый, кто хоть немного связан с маркетингом или разработкой продуктов, предпочитает называть себя growth hacker’ом. И поскольку каждый второй определяет себя подобным образом, этот термин начинает постепенно терять свою значимость. Однако то, что включает в себя понятие Growth Hacking (или как там это будут называть в будущем), продолжит свое существование и, по сути, уже сейчас существенно преобразует индустрию в целом.
(далее…)

VCStart: как мы создавали платформу

Разработка нашей платформы началась еще в 2013 году, когда наша команда, полная вдохновения и энтузиазма, взялась за этот амбициозный и интересный проект, который позволил бы объединить средства тысяч мелких частных инвесторов и стартаперов-энтузиастов для воплощения бизнес-идей.

VCStart: как мы создавали платформу
(далее…)

Интересные факты о работе технической поддержки

imageНа хабре можно найти множество статей, посвященных некомпетентной технической поддержке пользователей многочисленными хостинговыми компаниями. Также тут полно гайдов и манифестов для организации идеального саппорта. Даже можно найти материалы от 2011 года, в которых рассказывают принципы региональной организации службы технической поддержки ведущих компаний (те самые индусы, которые не помогут, но посочувствуют). Однако есть большое но…

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

1) Оперативный ответ на вопрос пользователя на 19% повышает вероятность получить от него повторный запрос. И, как правило, такой запрос способен решить сам пользователь, уделив на это 3-4 минуты своего времени.

Люди не хотят думать, порой им просто хочется перевесить свои проблемы на других, и самое главное: требовать, требовать и еще раз требовать. (далее…)