Попал в подкаст «За чашкой чая», эпизод 16. Можно слушать на любых доступных платформах: Anchor, Apple, Yandex.
Под катом текстовая расшифровка моей части. Хотите — слушайте, хотите — читайте.
Имя, родной город, где сейчас живёшь, где и кем работаешь?
Меня зовут Иван. И я разработчик.
Родился в Ташкенте, успел пожить в Алма-Ате и Минске, сейчас живу в городе Астане, в узких кругах известном как Нур-Султан. Зима близко, снова хочется сбежать туда, где потеплее, хотя бы в обратно Ташкент.
Сейчас работаю на поддержке ERP-системы одного государственного органа.
Под ERP системой я понимаю учётную систему, в которой ведётся бухгалтерский учёт предприятия или государственного органа. Платежи, накладные, счета-фактуры, склад, имущество, штатка, зарплата и всё, что с этим связано. Разница между предприятием и гос.органом есть, но не очень существенная. Например, в том, что гос.орган не зарабатывает. Как бы берёт из тумбочки. Ну и налогов почти не платит.
Многим известна такая программа как 1С, так вот это вроде как аналог 1С немецкого производства. Называется SAP. И вот я умею программировать внутри неё.
Что для тебя программирование?
Программирование – это такой навык. Кто-то умеет готовить еду. То есть берет ингредиенты и при помощи инструментов и магического навыка может изготовить еду, которую будет согласен есть другой человек. А может даже быть благодарным за это. Кто-то пишет стихи, кто-то обучает игре на гитаре, кто-то лечит людей, кто-то умеет водить автомобиль. Опять же не просто так, а чтобы перевозить грузы или людей из одного места в другое.
Программирование — это не самоцель. Всегда должен быть какой-то результат. Вещественный или не очень. Это способ получить какие-то ништяки. Причём скорее для других, чем для себя. Потому что только через других можно понять реальную пользу от того что ты делаешь. Нельзя рассказать шутку самому себе и рассмеяться. Это так не работает.
Кто-то умеет писать буквы так чтобы выжимать из людей определённую эмоцию. Я умею писать буквы так, чтобы в компьютере появлялись кнопки, которые делают какие-то определённые вещи. Мне это нравится. И если кто-то готов платить «икс» денег за это, то я согласен их получать. А лучше «игрек».
И почему-то учётные системы (типа бухгалтерии) меня привлекают больше, чем, например, игры или мессенджеры, антивирусы или наоборот взлом или что-то ещё. Видимо, что-то такое внутри больше отзывается именно на это. Люблю списки.
И тут внутренний психоаналитик сразу спрашивает – вы хотите об этом поговорить?
Как долго в программировании, как начал путь?
Я помню уже очень смутно, но первую программу я написал лет тридцать назад. Это было что-то очень примитивное на Basic. Когда-то этот язык был популярен для обучения программированию, как cейчас Python.
Я школьником ходил к маме на работу. В начале девяностых. Там были очень старые компьютеры. Операционная система MS DOS 3.30. Вместо Word у нас были PE2, Фотон, Слово и дело, Лексикон. Почему-то не любил его. Вместо Excel была программа SuperCalc.
И конечно много старинных игр. Диггеры, Тетрисы, Принц Персии.
В середине девяностых я поступил в училище где учат программистов. Там меня уже научили языку Паскалю. Турбо-Паскалю. Потом я поступил в универ. Там с программированием было не особо густо, но дипломный проект был сделан в виде как это называется веб-приложения. Сервер и база данных, все дела.
Пару лет я проработал как бы инженером-программистом. Но на самом деле я был что называется «эникейщиком» – помогал пользователям с компьютером и сам работал. Но программировать было нечего. Главное — чтоб компьютеры работали, принтеры печатали, дискеты записывались. И заодно работал секретарём. Я сидел в приёмной. Справа кабинет гендиректора. Слева зам-генерального. Странный, но интересный опыт. Конечно, не без игр за компом. Вторая Дюна, первый Дьябло, Лайнс.
И только в начале двухтысячных я устроился в нормальную контору что называется «джуниором». Тогда таких слов-то не было. И участвовал в разработке небольших проектов на Java и Delphi. Компания ищет заказчиков, заказчики соглашаются Мы делаем.
А уже лет через пять меня занесло в мир SAP. Потому что контора нашла такой проект. И нас взяли, мы согласились. И в процессе изучали новую программную платформу и новый язык. И вот прошло пятнадцать лет, десяток-другой заказчиков, пять работодателей. И вот я по прежнему занимаюсь этим, а не чем-то ещё.
Немного опиши свой профиль работы — какие задачи решаешь, сколько требуется в среднем времени на одну задачу?
У меня всегда долгий заказчик. Год-два-три. В любой живой системе всегда требуется что-то делать. То ошибки, то какие-то особые случаи, которые раньше не встречались, то новые законы, то новые хотелки, то наоборот что-то отключить.
Например: вышел новый закон, в отчётную форму надо добавить колонку. Легко. Тыщ-быщ и готово.
Или они хотят в некоторые процессы добавить электронно-цифровую подпись. Например, при списании имущества. Раньше печатали форму на бумаге и ходили ногами. А теперь карантин и вообще некоторые далеко сидят. Давайте, чтоб ЭЦП. Вот эта задача уже непростая. Две недели может уйти только на уточнение всех деталей, не говоря уже про само программирование.
Или вот есть один отчёт, но он работает долго и в каких-то особых случаях показывает не верные цифры. Покопаешься с полдня и починишь.
Или вот задача – сделать «забивалку». один пользователь в своё окно забивает цифры. Допустим, плановые цифры по бюджету на следующий год. Цифры надо проверить, статьи расходов, классификация затрат. А потом другой пользователь в своём окне может посмотреть на эти данные и утвердить. Получается, надо создать таблицы в базе данных и два приложения. У нас это называется транзакция. Неделя или две – и первая версия уже в руках пользователей.
У меня есть в рамках одной системы куча разнокалиберных задач, которые я делаю последовательно. А пользователи и жизнь подкидывает новые в эту кучу. Взял задачу – подумал — сделал – проверил – сдал – забыл – перешёл к следующей задаче.
Заказчик постоянный, а задачи всё время разные.
Сколько языков знаешь ты и на скольких «пишешь»?
Если проводить параллели с обычными языками, то языков миллиарды. Я так думаю. На каждого человека по одному как минимум. Это вообще тема для отдельного подкаста.
С языками программирования чуть попроще. Я думаю что языков программирования многие тысячи, и многие из них не просто мёртвые, а мертворождённые. Каждый разработчик хочет придумать язык. Я тоже хотел.
Сколько языков я знаю? Как говорил один мудрец – я знаю карате, таэквондо, дзюдо и ещё много других страшных слов.
Сколько строк необходимо написать чтобы сказать «я знаю этот язык». Сколько необходимо забыть, чтобы считалось что бы больше не знаешь этот язык.
Сколько-то строк в жизни я написал на ассемблере, но, как говорится, ничего не ушло в продакшен.
Я писал на разных бейсиках, включая старинные и и диалекты типа VBScript и Visual Basic for Applications.
Изучал Паскаль, который ещё старинный, Object Pascal, работал со средой Delphi.
Немного писал на Java, C#, JavaScript.
Про C/C++, Python и Go скорее только читал и слышал.
Но за последние пятнадцать лет ABAP — единственный язык, который я использую постоянно и широко. Вот такая специализация. Можно сказать подсел основательно. Не очень распространённый язык. Есть общепризнанный рейтинг всех языков. Это актуальный рейтинг основанный на комплексных критериях. И он в нём находится месте на тридцатом.
Бывают отрывочные моменты когда мне требуется написать вспомогательный код на JavaScript, потому что в одном проекте потребовалось сделать небольшой фронт-энд html+css+bootstrap и JavaScript.
Бывало нужно было поработать с PL/SQL для хранимой процедуры на Oracle.
Ещё могу поправить php-файл.
Также отрывочно приходилось работать с VBA – такой вариант Basic на котором пишут макросы для Excel.
Но это всё в привязке к основному проекту на языке ABAP. И мои знания этих языков такие же незначительные, как и опыт работы с ними. Можно сказать что пока я был в Стамбуле, немного наловчился читать вывески и считать до десяти.
Есть ли у тебя наставник? И есть ли ученик/ученики, кому передаешь знания?
Не могу сказать что у меня был какой-то наставник. Просто изучал сам, сначала книжки, потом появился интернет. и само-собой набирал опыта в команде. Когда работаешь в команде (а это бывает не всегда) то обмен опытом хорошо повышает уровень всех участников. И здесь нельзя говорить в терминах наставник ученик.
У меня на проекте есть только один младший разработчик в команде. Сколько-то времени на наставничество я уже уделял. Но кажется уже справляется сам. А задачи у нас разные, потому что нам их подкидывают разные аналитики из разных модулей системы. Поэтому в рамках кода мы почти не пересекаемся напрямую. Но когда спросит – я постараюсь ответить, написать, показать. Но кажется он уже месяц ни о чём не спрашивал.
Сколько-то знаний выпускаю в своём блоге. У меня есть свой маленький сайт – вроде личного блога, там посещаемость порядка ста человек в сутки. За 15 лет наверное будет 150 статей и заметок. Больших и не очень.
Хотелось бы писать туда почаще Но это зависит от нагрузки, настроения. А иногда просто нечего писать, потому что если я пишу туда, то только всегда после каких-то актуальных задач.
Что бесит программиста?
Есть два момента.
Во-первых чем дольше работаю тем больше требователен к тишине и комфорту. Сейчас я мало способен к глубокой продуктивной работе если в комнате говорят, ходят, едят и так далее. Но могу заниматься обсуждением или не очень глубокой работой. Так что отдельный кабинет – самое то.
Второе – это насчет постановки. Задачи приносит аналитик.
Разработка всегда находится между двух полюсов.
Первая – постановка настолько детальная, что чувствую себя в тисках. Расписаны все структуры данных, нарисованы все экраны, указаны все последовательности переходов и алгоритмы. Хочется приложить себя немного в творческом ключе.
У меня были случаи что постановка была примерно такая: в файле икс межу десятой и одиннадцатой строкой добавить нижеуказанный текст. Скопировал, вставил, сохранил. Зачем я тогда нужен?
Второй полюс — это никакой постановки. Проблема понятна приблизительно. Хаос и полная свобода творчества с непредсказуемым финалом.
Чаще конечно второе, и к этому расстраивает несамостоятельность, недальновидность и непредусмотрительность аналитиков. Это когда при любом даже самом небольшом уточняющем вопросе они бегут к заказчику и уточняют. Часто не хотят писать много букв, когда пишут много букв, то вместо много информации получается много воды.
Картину мира в голове не держат, решения не принимают. Я таких аналитиков могу назвать «передастами».
Какое будущее видишь для ИТ в нашей стране, в мире?
Будущее? Ну надеюсь, что роботы нас, разработчиков, заменят в последнюю очередь.
А информационных систем и задач, связанных с ними, меньше не становится. Так что надеюсь, работы меньше не станет, а значит и мне достанется.
Какие профессии будут востребованы через десять лет – сказать трудно. Да, наверное, data-science будет шириться и структурироваться, как наука и отдельный род занятий.
А может медицина глубже зайдёт в IT. А там и для data-science есть? где развернуться. Я лично всё жду-не-дождусь, что диагноз мне будет ставить машина. Тут ещё и Илон Маск со своим Neuralink может устроить очередной прорыв, который ещё неизвестно, чем закончится.
Насчёт криптовалют кажется все всё поняли. Ну не вертится эта машина, но некоторые её элементы типа блокчейна найдут место в узких прикладных областях.
Вся работа, что у нас тут в Казахстане делается – она ориентирована на локальный рынок, на наши условия. Локальный рынок исчезать не собирается, но он мелкий и простой. В нём не будет места всему продвинутом стеку – Data Science, дополненной реальности, беспилотникам. Продвинутые вещи будут делать глобальные корпорации, и спускать к нам, вниз, как услугу за деньги. За подписку и за процент.
Казахстан, как я понимаю, в IT на экспорт работать пока не собирается. Все проекты о которых я знаю – они внутренние, в отличие от той же Беларуси. Кстати говоря, пример Беларуси и пандемии неожиданно доказывает, что строить планы на будущее – задача неблагодарная.