?

Log in

No account? Create an account

Entries by category: it

Category was added automatically. Read all entries about "it".

Если вы технический директор
obrizan

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

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

А вам-то небось программисты рассказывают, как у них там все классно?


Существенное отличие профессионала
obrizan

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

Очень простой эксперимент: выключите маршрутизатор в офисе. Первые крики вы услышите уже через 5 секунд — это будут кричать джуниоры — они заблокированы без интернета и не могут ничего делать. Профессионал об отсутствии интернета узнает только через час, когда прийдет на кухню за чашечкой кофе.


Образовательный кризис
obrizan

Мне очень больно наблюдать образовательный кризис в нашей стране. Я переживаю его как личную трагедию. Эту заметку меня заставил написать случай, который произошел в одном из чатов на программистскую тематику.

В один из дней участник чата выложил фотографию теоретических задач, которые ему выдали на собеседовании. Среди прочих задач и вопросов были такие: "Сколько бит в байте? Переведите число из десятичной системы в шестнадцатеричную. Посчитайте количество бит в числе". Меня удивила реакция начинающих программистов:

— Ха-ха-ха! Где это в реальных проектах нужно считать количество бит в байте?
— Пффф... Что за идиотские задания, зачем это нужно фронтендщику?

Драма разыгралась уже на следующий день. Один из участников чата обратился за помощью с такой вот проблемой:

— Спасите! Помогите! Складываю 0,1 и 0,2 и в результате получаю не 0,3, а 0,30000000000000004!

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

Read more...Collapse )

Новое слово: софтогенный
obrizan

Я придумал новое слово:

софтогенный (software + -genic) — являющийся следствием, результатом применения какого-либо программного обеспечения.

Также в этом значении может применяться слово программогенный.

На английском языке: softogenic (software + -genic).

Например: софтогенная катастрофа — катастрофа, вызванная ошибками в программном обеспечении. 

Запишите, оно вам скоро пригодится. :)


Ищу Андроид-программиста для видеостриминга
obrizan
Что-то мы опять растем. Мы ищем опытного Андроид-программиста в Харькове для поддержки и разработки уже существующего проекта. Проект — мобильное приложение для видеостриминга (аналог Нетфликса). В команде уже есть: менеджер продукта, менеджер проекта, iOS-разработчик, 2 бекенд-разработчика, тестер, дизайнер. Срок проекта: минимум 1 год.

Требования:

— Android Studio;
— Java;
— Android SDK;
— Владение модульными тестами;
— Разговорный и письменный английский;
— Минимум 2 года опыта работы. Просьба подтвердить опыт ссылками на репозитории Github или Bitbucket.

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

Обязанности:

— тестирование, диагностика и исправление ошибок в готовых андроид-программах
— разработка программ с нуля


Мы предлагаем:

— интересный проект, результатами которого будут пользоваться сотни тысяч пользователей;
— работу в коллективе единомышленников, общение с интересными людьми из США;
— стремление к техническому совершенству разрабатываемых проектов;
— оплату труда с привязкой к курсу доллара;
— 5-дневная рабочая неделя, 8 часов в день, гибкий график, возможность иногда работать из дома ;)
— все национальные праздники — выходные;
— оплачиваемый отпуск: 2 рабочих дня за каждый полный месяц работы;
— небольшой дружелюбный коллектив (15 человек);
— отличный кофе из “Кофеина”.


О компании

Design and Test Lab — небольшая компания, которая оказывает услуги по разработке мобильных приложений и веб-сервисов для предпринимателей, стартапов и малых бизнесов из США и Европы.

Резюме и мотивационное письмо присылать на obrizan@dnt-lab.com


Абстрактное мышление и программисты
obrizan
У программистов напрочь отсутствует абстрактное мышление.

Доказательство: все читали и знают "паттерны" Эриха Гаммы (судя по резюме соискателей). Но на практике знают и применяют только синглетон. И то, потому что это то же самое, что и глобальная переменная, а этому их научили на уроках Паскаля (по сути — антипаттерн).

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


Программист ≠ бизнесмен
obrizan
Вот самая первая программа, которую я написал в своей жизни:

10 PRINT "Vova"

Вторая программа уже спрашивала, как меня зовут, затем спрашивала год рождения, и потом выводила на экран:

Privet, Vova! Tebe 8 let.

Обе эти программы я перенабрал из детского учебника.

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

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

Но почему тогда мы не видим вокрут десятки тысяч успешных программистов, которые построили на этом бизнес? Потому что программист ≠ бизнесмен. Одно из отличий можно проиллюстрировать следующим диалогом:

— Вова, смотри, я сделал клевое приложение.
— М, круто, да полезное. Но вот тут неудобно сделано, нужно вот так-то и так-то.
— Та не, ты не понял! Это ж фича! Так и должно быть!
— Ну не знаю, я не с первого раза понял, как оно работает и я постоянно мучаюсь, когда не туда попадаю на экране...
— Так и нужно, там же в методе делегата UITableViewDelegate при ненулевом значении аргумента...
— Эй, какая разница, какие там параметры? Все равно же неудобно пользоваться...
— ДА ПОШЕЛ ТЫ НАХРЕН МУДАК ТЫ ВООБЩЕ НЕ ПОНИМАЕШЬ В ПРОГРАММИРОВАНИИ!!!1

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

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


Дизрапт недели: Докер
obrizan
Дизрапт этой недели — Docker (читается "Докер") — открытая платформа для разработки и развертывания приложений для микросервисных архитектур. В отличие от технологий виртуализации, для изоляции приложений Докер использует возможности ядра Линукс для запуска приложений на одной операционной системе, но в изолированной среде — контейнере.

Сравнение технологий виртуализации и Докера показано на рисунке:



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

Если типичная технология виртуализации — это идеальный компьютер. То Докер — это идеальная операционная система.

Контейнеры Докера запускаются из образов. Существует реестр образов — Докер хаб. Образ представлен специальным скриптовым языком, которым описываются действия, необходимые для настройки того или иного приложения: выбор базового образа, установка программ, компиляция, копирование файлов, запуск скриптов и программ и т. п. В реестре образов уже есть все популярные программы.

Например, вот скрипт (Докерфайл), описывающий образ веб-сервера Nginx:



Что нужно сделать, чтобы по этому образу запустить контейнер? Достаточно написать одну единственную команду в консоли:

docker run nginx

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

Контейнеры можно запускать, останавливать, удалять.

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

Я строго рекомендую программистам и сисадминам бросить все и бежать изучать Докер.


Предыдущие дизрапты недели:

Swagger


Дизрапт недели: Swagger
obrizan
Прошу любить и жаловать новую рубрику: "Дизрапт недели". В рубрике я рассказываю о самых прорывных технологиях, которые существенно меняют правила игры в тех или иных сферах.

Дизрапт этой недели — Swagger (читается "свогер") — это спецификация описания АПИ веб-сервисов.

Зачем это нужно? Т. к. спецификация машинно-читаемая, то на ее основе можно делать разные полезные вещи:

а) автоматически генерировать документацию к веб-сервису;

б) автоматически генерировать АПИ-клиенты к этому сервису;

в) автоматически генерировать шаблоны веб-сервисов;

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

Спецификация описывается на YAML или JSON. Я предпочитаю первый вариант, потому что он самый понятный для человека. Вот так выглядит спецификация:



Вот так выглядит фрагмент документации, построенной по этой спецификации:



А теперь самое интересное: есть генератор АПИ-клиентов для множества языков:

android, async-scala, csharp, dart, flash, python-flask, java, javascript, jaxrs, inflector, jmeter, nodejs, objc, perl, php, python, qt5cpp, ruby, scala, scalatra, silex-PHP, sinatra, slim, spring-mvc, dynamic-html, html, swagger, swagger-yaml, swift, tizen, typescript-angular, typescript-node, akka-scala, CsharpDotNet2, clojure

Вот небольшой фрагмент АПИ-клиента для языка Objective-C:



Детали реализации обмена данными по HTTP протоколу скрыты от разработчика. Не нужно сосредотачиваться на таких деталях. Уже есть готовые высокоуровневые методы работы с веб-сервисом. Можно описать АПИ один раз и генерировать сразу два клиента, например, для мобильного приложения и для веб-сайта.

Такой способ описания АПИ сервера и генерация клиентов повышает производительность разработчика минимум в 10 раз.


Переквалификация в айти с нуля
obrizan
Стал чаще сталкиваться с вопросом: "На какие курсы пойти, если учить айти с нуля"? Ну, например, если первая профессия — учитель украинского языка и литературы, а хочется устроиться программистом на Хаскеле.

Для меня это очень сложный вопрос. Во-первых, я никогда не видел, как на моих глазах кто-то с совершенно другой квалификацией становится айтишником, и какие курсы при этом он посещает. Во-вторых, отвечать "вам на это потребуется 4 года" (как требуется нашим студентам) очень тяжело, когда от тебя ждут быстрых решений.

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

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