Мы, программисты, — снобы. Мы смотрим свысока на языки, фреймворки и компании, которые считаем «ниже своего достоинства».

Вам это должно быть знакомо: программисты из C-сообщества, которые не признают Visual Basic. Программисты Linux, которые пренебрегают всем, что связано с Microsoft. Команда Azure, которая высмеивает AWS за сбой, пока через пару дней ее саму не постигнет та же участь. И C++-программисты, которые презрительно смотрят на всех остальных.

Годами я был объектом таких насмешек, ходил с опущенной головой и оставался в тени. Я избегал общественных мероприятий, отказывался от приглашений на ужины, и все из-за стигмы, связанной с тем, как я зарабатываю на жизнь программистом с 2015 года.

Даже признаться в этом в Интернете — все равно что прийти на первое собрание анонимных алкоголиков. «Привет, меня зовут Павел, я программист VBA».

«Предатель!» — слышу голоса в задних рядах. «Это не настоящее программирование!»

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

Что такое VBA?

VBA (Visual Basic for Applications) — программа Visual Basic для приложений. Это язык программирования, встроенный в продукты Microsoft Office на компьютерах с Windows.

Если нажать Alt + F11 в приложении Microsoft Office, откроется среда программирования VBA.

VBA доступен в Word, Access, Outlook и Excel.

Хотя я программировал во всех четырех приложениях, я стал специалистом по Excel VBA.

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

Я никогда не планировал стать экспертом по VBA-программированию. Я тоже считал, что такая работа «ниже моего достоинства».

Так уж вышло.

Почему VBA?

Я занялся VBA, потому что именно в этой области была работа. Точно так же изучил PHP, .Net, JavaScript, React и все остальное, на чем я программирую, чтобы зарабатывать на жизнь.

Во фрилансе есть только два способа обеспечить себе стабильный доход:

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

Я — что-то среднее, ближе к мастеру на все руки.

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

Точно так же любой может нажать кнопку «Record a Macro» («Записать макрос») на панели инструментов Microsoft Office и назвать себя программистом. Но масштабируйте это до 30 или 40 функций — и получите кучу проблем.

Я стал настоящим экспертом по VBA-коду, тесно сотрудничая с партнером, который был (и остается) экспертом по Excel и финансам. Мои навыки программирования позволяли предоставлять не только услуги, связанные с Excel, но и подключать внутренние инструменты Excel к AWS, веб-сайтам, сервисам искусственного интеллекта и многому другому.

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

Создание пользовательских интерфейсов происходит быстро. Обширные вычисления обрабатываются самим Excel, что избавляет от необходимости самостоятельного выполнения огромного объема программирования. 

Зачем изобретать велосипед?

Программисты/компании до сих пор используют Excel?

Я приобрел опыт как Excel-программист, когда начал работать в небольшом консалтинговом агентстве в Великобритании. Я немного знал VBA, но не очень глубоко. Поэтому купил учебник по Excel-программированию и быстро освоил его.

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

О, как же я ошибался.

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

Возможно, они тоже ощущают стигму «немодных» технологий.

Это может быть немодно, но это работает. А стоимость разработки корпоративного решения в Excel запросто может быть на 50% (или даже больше) ниже, чем на другой технологии, в зависимости от конкретных требований.

Является ли этот подход моим предпочтительным выбором для создания проектов? Абсолютно нет. Код становится грязным очень быстро, а система контроля версий — настоящий кошмар.

Тем не менее, у этого подхода есть другие преимущества, которые с лихвой перевешивают недостатки, например:

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

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

Функция на Python выполнялась за несколько секунд, в то время как Excel требовал несколько минут.

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

Отладка в Excel была очень простой. Предметная область требует специальных знаний. Мы не являемся в ней специалистами. Наш клиент — специалист. Он может просто посмотреть на формулы, найти любые аномалии и затем сообщить нам о них, чтобы мы внесли исправление.

Такая прозрачность и наглядность стоят дороже золота.

B2B — это не B2C: «модное» часто бесполезно во внутреннем бизнес-контексте

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

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

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

Испытываю ли я стресс? Конечно, да. Легко ли мне? Конечно, нет. Отказался бы я от такого заработка ради стабильной работы приносящей в два раза больше дохода, чем я зарабатываю сейчас? Только если бы мог уйти с этой работы через год.

Ни одна компания не хочет нанимать того, кто планирует уйти из нее через год.

Долгое время я считал себя неблагодарным. Я думал, что со мной «что-то не так», потому что не выношу самой мысли наняться на работу. Лишь недавно понял, что некоторые люди просто так устроены, и это совершенно нормально.

Разумеется, если бы я не мог прокормить себя и свою семью, я бы бросил фриланс и предпринимательство много лет назад. Но я могу прокормить себя и свою семью, и это возвращает нас к VBA-программированию.

Главный урок, который я извлек из своей работы, заключается в том, что внутреннее бизнес-ПО — это не B2C-код. Бизнес нанимает нас, чтобы решить проблему как можно быстрее и эффективнее. А это также означает — как можно дешевле.

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

Внутреннее ПО, разработанное на заказ, — это часто ПО, сделанное «быстро и грязно». Это ПО, которое решает проблему и повышает рентабельность инвестиций (ROI).

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

Главный вывод из всего сказанного

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

Но если вы фрилансер или руководитель команды, воспользуйтесь моими уроками, выстраданными на собственном опыте и, как мне кажется, необходимыми каждому, кто работает в сфере услуг:

  • «Модные» подходы в программировании бессмысленны. Вашим клиентам нужно то, что работает, решает их проблему, приносит отдачу от инвестиций (ROI) и делает это экономически эффективно.
  • Вникайте в стоящие перед вами задачи. Не думайте, что вы «обязаны» делать что-то определенным образом, потому что «так правильно». Например, создание приложения для немецкой компании часто требует закладывать на 40% больше времени на код, учитывающий приватность. В других юрисдикциях это не обязательно. Каждый проект уникален.
  • Инструменты для пользователей и внутренние бизнес-инструменты — это совершенно разные вещи. Не путайте их.
  • Сделайте так, чтобы это работало. Сделайте так, чтобы это работало. Сделайте так, чтобы это работало.

Когда-то я верил, что для выживания нужно «выходить в свет», «быть в соцсетях» и «набрать тысячи подписчиков».

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

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


Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи R. Paulo Delgado: The Unsexy Way I’ve Made a Living as a Coder for 15 Years

Предыдущая статья5 функций Expo, которые сэкономили мне недели разработки