Хотите дальше читать devby? 📝
Support us

Неделя за 10 ссылок: депрессия и рефакторинг

Оставить комментарий
Неделя за 10 ссылок: депрессия и рефакторинг

Специфика покупки и продажи ИТ-бизнеса в Беларуси, интервью с единственным ИП в ПВТ, коварные баги Viber, депрессия и рефакторинг, а также про JSON в качестве языка программирования — в традиционном ссылкообзоре за неделю.

Читать далее

Рисунок: Андрей Янкович.

1. Как продают/покупают ИТ-бизнесы в РБ

Татьяна Емельянова рассказывает о местной специфике сделок М&А в белорусском ИТ-секторе.

2. И один в ПВТ-поле воин

ПВТ глазами единственного тамошнего резидента-ИП:

Интервью с единственным резидентом — индивидуальным предпринимателем в ПВТ — Андреем Богомоловым.

Для юридических лиц значительным преимуществом является льгота по размеру отчислений в ФСЗН, в частности, обязательные страховые взносы не начисляются на часть дохода резидента, превышающую однократный размер средней заработной платы работников в республике за предшествующий месяц. Снижена ставка подоходного налога при выплате заработной платы сотрудникам до 9% (вместо 13%).

Несмотря на прочие преимущества, для индивидуального предпринимателя налоговый режим ПВТ ухудшает условия налогообложения по сравнению с упрощенной системой налогообложения (УСН). Например, как резидент ПВТ предприниматель обязан заплатить подоходный налог 9% + 1% обязательные отчисления Администрации ПВТ. В случае УСН налоговая нагрузка составляет всего лишь 5% для индивидуальных предпринимателей, не уплачивающих НДС.

Льгота по обязательной продаже иностранной валюты на внутреннем валютном рынке по курсу валютной биржи (в размере 30% суммы выручки в иностранной валюте) на практике не создает преимуществ, так как резидент ПВТ хоть и не обязан производить обязательную продажу при поступлении выручки, но фактически добровольно продает валюту вследствие обязанности выплаты личного дохода предпринимателя или оплаты заработной платы только в белорусских рублях. Также с банковской карточки VISA или Mastercard, открытой на индивидуального предпринимателя или юридическое лицо, вы фактически не сможете оплачивать в иностранной валюте реальные расходы ИТ деятельности, например, счета за серверы и телекоммуникационные услуги Amazon Web Services, программное обеспечение, авиабилеты, трансферы в аэропорт, питание или участие в конференциях.

3. Антиприватная рулетка

Российские СМИ пишут о заброшенных багах Viber, на которые суппорт никак не реагирует. По слухам Viber уже полгода как случайно добавляет случайных людей в случайные чаты:

Множество людей подтверждают этот толстый и неуловимый, как Джо, баг.

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

4. Битрикс в Беларуси, как дела?

Недавно выложенное видео интервью Дмитрия Суслова, директора белорусского офиса «Битрикс».

5. Новый Web 3.0

Недавно объявили о появлении проекта WebAssembly, который ИМХО — новый шаг в развитии Веба, посему немного тормозну на этой теме отдельно.

Я прочитал первопричинный по отношению к новости пост Брендана Айка про webassembly и вот что понял:

  1. Исполняется внутри браузера (C++) ...
  2. Есть виртуальная машина JavaScript ...
  3. Она исполняет загрузчик на JavaScript (вернее, компилит его на лету в машинный код x86) ...
  4. Который на самом деле не настоящий JavaScript, а asm.js, и виртуальная машина это замечает и переключается в режим более «прямой» и более «жадной» компиляции ...
  5. Кстати, как и большинство кода на asm.js, загрузчик изначально написан на С/С++ и скомпилирован в asm.js при помощи компилятора Emscripten ...
  6. Загрузчик на asm.js разбирает специальный файл .wasm ...
  7. Который скомпилен из кода С++ при помощи Emscripten ...
  8. И превращает его в Javascript ...
  9. Конечно, не настоящий JavaScript, а asm.js ...
  10. Который тоже компилится на виртуальной машине JavaScript из пункта 2.

На самом деле, конечно, это не окончательный уровень абстракции.

Машинный код x86 соответствует модели CISC-процессора (сложные, «толстые» инструкции), а современные процессоры совсем другие, они на лету превращают CISC-инструкции в легкие, простые инструкции RISC-стиля. Но главное — сделать первый шаг к смерти JavaScript.

А вот мнение другого человека отсюда:

В предыдущей инсталляции я писал про Web 2.5 — с потоками, вебсокетом и обменом с сервером исключительно данными. Это было в апреле 2013 года — с тех пор мы должны были шагнуть на уровень выше.

Так вот, Web 3.0 будет основан на WebAssembly. Помимо всего прочего, это, наконец, внутрибраузерная VM и бинарный формат для неё. Google и Mozilla уже договорились, ну и Microsoft, соответственно, подтянется.

Внутрибраузерная среда Web 3.0 будет всё больше напоминать game engine: много анимаций, произвольный рендеринг чего угодно где угодно, WebGL, сетевые протоколы, видеокодеки, текстуры, управление событиями. Ну и потоки кода через вебсокеты, подгружаемого по мере необходимости. DOM, понятно, сохранится, но это теперь будет больше похоже на scene graph.

6. Программисты и депрессия

Взято отсюда:

Это перевод (причем достаточно вольный) выступления 2013 года программиста на Ruby по имени Greg Bauges, посвященного депрессии и психическим расстройствам в среде программистов. Выступление старое, но проблема вечная.

Сначала вот само оригинальное видео этого выступления с конференции:

А вот и его русский перевод в виде текста:

Вы возможно слышали про биполярное расстройство первого типа (БАР1), которое характеризуется цикличной сменой маниакальных и депрессивных состояний. Это означает что, вы курсируете между маниакальной стадией на подъеме и депрессивной стадией на спаде. Маниакальная стадия может сопровождаться эйфорией, но в то же время она невероятно деструктивна — потому что характеризуется огромной импульсивностью, и в такой период люди часто принимают необдуманные решения. При БАР1 это еще и постоянные метания между этими двумя состояниями — эйфория сменяется упадком очень часто. Мой же БАР2 характеризуется более длительными циклами смены состояний.

Для меня это обычно выглядит как медленное сползание вниз на протяжении 4-12 недель. По ощущениям это напоминает попытки въехать на крутой склон, покрытый гравием — не важно как сильно ты крутишь педали, ты все равно скатываешься вниз.

Довесок: Почему программировать так тяжело?

7. Сборник в меру смешных атак хакеров

Иногда хачат чужое просто чтоб чисто поржать, вот именно такие атаки и собраны в этом статье-сборнике.

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

Но сама история обнаружения этой дырки почему-то осталась за кадром, хотя она куда странней, и на ней бы я и хотел остановиться. Некий чувак архивировал бэкап своего сайта в файл с именем favicon.ico, но по ошибке выкладывал его в корень своего сайта (что звучит скорее как логичное дополнение к первой части его закидона). Браузеры хавали этот вечно новый файл без шансов закэшировать и... тормозили, а потом падали на колени перед сайтом шутника.

Установлено, что Chrome будет скачивать файлы любого объема в фоновом режиме — так анонимные энтузиасты-извращенцы в качестве фавикона выкладывали посетителям 10GB-файл мультиков в HD. Остаётся утешаться тем, что фавикон-иконки размером в 10Gb — это не самое страшное, что может случиться с вами в жизни.

8. Чудак, который делал всё не так

Почему я не преподаю SOLID и «принцип устранения зависимостей».

Из комментариев сразу рычат:

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

Всё полезно в меру и зависит от проекта, это касается всех паттернов GOF, SOLID и т.п. Но это не значит, что это плохо и давайте нигде их не использовать. Просто надо уметь это дело «готовить».

На примере некоего малоизвестного решения показан очень нестандартный подход: Как мы сделали из JSON язык программирования:

Большая часть нашей инфраструктуры агрегации API лежит на сложных серверных и клиентских системах. Тем не менее, придуманный нами JSON-ориентированный язык REL заслуживает отдельного упоминания.

REL выглядит как приукрашенный JSON, но по сути это чисто функциональный язык программирования с ленивыми неизменяемыми переменными (то есть они вычисляются и получаются только тогда, когда необходимы) и динамической областью видимости.

Скептики язвят в комментах:

Вместо того, чтобы выбрать простой и надёжный путь — взять один из тучи скриптовых языков, который бы сделал всё тоже самое, люди создали свое уродство из того, что для задачи изначально вообще не предназначено. Весело, интересно, но мне всегда интересно — зачем? Ведь оно рождено умереть. Я специально сейчас пробежался в гугле — такое ощущение, что интернет вообще не знает про это приложение. При этом, автор, судя по всему, надеется привлечь к созданию карточек других людей. Это — правильно. А вот ставить задачу перед ними учить такую вот ужасть — совсем неправильно.

Бесполезные присоски на нашей шее — Обратная сторона методологий и «лучших практик» разработки:

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

Пропаганда методологий разработки сработала настолько удачно, что зараженные вирусом программисты сами же стали разносить эту заразу по всему миру. Новые проекты все как один начинались на Agile; в резюме стали появляться гордые строчки с упоминанием Scrum, RUP и XP, а на просьбу рассказать о своём предыдущем проекте одурманенный разработчик с гордостью рассказывал про опыт работы с Agile или Kanban, как будто это имеет какое-либо отношение к написанию кода.

9. Не рефакторингом единым

Непрерывный рефакторинг и проблема совместимости:

Я помню на первой своей работе мы всячески выгрызали рефакторинг. У нас был специально обученный менеджер, который по нашим стонам понимал как важен рефакторинг. Поэтому он планировал все так, чтобы у нас был ещё один месяц на рефакторинг до сдачи проекта. Текст, как всегда, сумбурный, провокационный, с ошибками и прочей х***ей, отнеситесь, пожалуйста, к этому снисходительно.

Программеры исповедуются прямо в комментариях к этому посту:

Основная причина рефакторинга, на практике, это все-таки меняющиеся требования. Типа бизнес прибегает и говорит, что теперь будет торговать не только машинами, но и управлять сервисом, а CRM продажи на автосервис не очень рассчитана (пример утрированный). А чисто «технический долг» — мне кажется что беспорядка, которого вносят разработчики, обычно сравнительно мало по сравнению с изменениями в бизнес-стратегии, особенно если у продукт-менеджера горизонт планирования скрумовские 2 недели ;)

В продолжение темы пост, провоцирующий размышление: AbstractFactoryCreator.CreateNewAbstractFactory("Moo"), или top down дизайн чмо.

В некоторых случаях рефакторинг не улучшает код, а, скорее, наоборот — угнетает: Пропадающая функция, или Titans of Refuctoring.

10. Наше киношное хобби

В заключение совсем немного об отдыхе вне работы. А именно свежее интервью про популярный сериал «Кремниевая долина» и неудачниках в ИT-индустрии:

Майк Джадж, создатель популярного ситкома «Кремниевая долина», в интервью The Hollywood Reporter рассказал о будущем сериала, роли Марка Цукерберга и нелегкой судьбе IT-стартапов из Долины. Мы публикуем адаптированный перевод интервью.

Иллюстрации: twitter.com, vk.com

 

*Мнение колумнистов может не совпадать с позицией редакции.

Помогаете devby = помогаете ИТ-комьюнити.

Засапортить сейчас.

Читайте также
Сверхзвуковая авиация и батарейки из бактерий. Техдайджест
Сверхзвуковая авиация и батарейки из бактерий. Техдайджест
Сверхзвуковая авиация и батарейки из бактерий. Техдайджест
Influit изобрела электробензин, Baidu запустила роботакси. Технодайджест
Influit изобрела электробензин, Baidu запустила роботакси. Технодайджест
Influit изобрела электробензин, Baidu запустила роботакси. Технодайджест
Каждую неделю собираем новости технологий, видео и ссылки на полезные статьи.
1 комментарий
Synchron вживила свой первый нейроинтерфейс, Subaru нашла новую Суперземлю. Технодайджест
Synchron вживила свой первый нейроинтерфейс, Subaru нашла новую Суперземлю. Технодайджест
Synchron вживила свой первый нейроинтерфейс, Subaru нашла новую Суперземлю. Технодайджест
Каждую неделю собираем новости технологий, видео и ссылки на полезные статьи.
Возрождение OneWeb и «эра мяса из пробирки». Техдайджест
Возрождение OneWeb и «эра мяса из пробирки». Техдайджест
Возрождение OneWeb и «эра мяса из пробирки». Техдайджест
Каждую неделю собираем новости технологий, видео и ссылки на полезные статьи.

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.