Как-то так вышло, что почти все восемь выпусков мы говорили с офисными разрабами, и не опрашивали, каково живется на фрилансе. Сегодня, наконец, исправляем. Рассказывает Денис Казаков (nrcpp). Он написал первую программу в 14 на Pascal, а в университете разработал свой С++ фронт-енд компилятор и сорвал статьей про это кармический куш на Хабре.

Куш пореалистичней он взял на Upwork — 60 выполненных проектов и кругленькие суммы (ну, для меня) в графе полученных денег. Но под катом никакого хвастовства и мотивашек в духе «вы тоже можете». Наоборот — рассказ про горький для опытного фрилансера офисный опыт.


1. Расскажи о фиче, которую ты реализовал и которой гордишься


Первой «фичей» был первый же семестр в универе. Я пришел в вуз уже подготовленным и сдал сессию автоматом. На экзамене мог не появляться, но одногруппники попросили остаться и постоять в коридоре, помочь если что. Спустя 15 минут от начала экзамена, практически вся группа, по очереди «захотела в туалет». А это порядка 25 человек.

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

Спустя час это был целый конвейер. Рядом со мной росли две стопки — в одной все новые и новые листики, в другой — уже решенные задачи. Один человек выходил, выносил новую «партию» и забирал готовые решения. Таким образом вся группа сдала сессию на 4 и 5. С тех пор и дружим.

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

И третий проект — обычный тест на зрение. Я создал его начиная с «File -> New Project» и заканчивая продажами. Но настоящий кайф в том, что ты видишь, как люди пользуются твоим детищем, и это помогает им выявить проблемы со здоровьем.

2. А теперь — про самый лютый факап


В Google я не работал, софт для хирургов и rocket science не писал, поэтому ярких факапов из-за моего кода не припомню. Расскажу лучше, как я профакапился быть тимлидом.

После многих лет на фрилансе из дома, черт меня дернул пойти работать в офис, в крупную аутсорс компанию, с еще более крупным заказчиком (один из мировых лидеров в отрасли). Ситуация для меня стрессовая, я раньше в офисе толком не работал, а тут еще толпу людей организовать. Сначала их было 6, потом 10, потом 18, а в конце стало 25! На такой вертеп я совершенно не рассчитывал. На удаленке ведь каждый сам за себя. Взял карточку в Jira и пилишь себе молча. А хочешь не пилишь.

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

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

Когда у тимлида интереса нет — возникает хаос. Один джун брал на себя 50% задач, просто потому что сидел рядом со мной в опенспейсе. Другой интерн взял критичный автономный модуль, который доделывали почти всей командой.

Я выпал на месяц из-за проблем со здоровьем, а когда вернулся — проект приказал «долго жить». А команду раскидали по другим проектам того же заказчика. Спустя время, я вернулся в привычный для себя фриланс.

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


Большой стол — залог продуктивности, я считаю.



Железо полностью меняю раз в 5-6 лет. Сейчас выжимаю максимум из i5 второго поколения, с SSD на 500 GB + старый HDD, и 16 GB RAM DDR2. Давно руки чешуться проапрегрейдиться, особенно когда проц перегревается. Но то ли жаба давит, то ли проще термопасту сменить. Этим летом со скрипом перешел с Windows 7 на десятку, так как под Xamarin на ней проще писать.

Есть еще MacBook Pro 2011 late, для iOS-проектов. Вредная сковородка из-за возраста. Опять же дилемма — то ли на квартиру денег отложить, то ли новый Макбук купить, который «не печет».

Из тулов — с 99-го года Visual Studio. Причем с каждой новой версией убеждаюсь, что больше ничего не нужно. Пару совсем маленьких расширений, вроде Ctrl+Click для перехода к объявлению метода, и в бой.

Для Git — SourceTree. Для тестирования на разных ОС — VmWare. Иногда просят инсталлер сделать — для этого Advanced Installer. Все остальное делается либо в вебе, либо в notepad.exe. Когда нужна была Java — то IntelliJ.

4. По какому принципу ты выбираешь работу? Стек, продукт, бытовые условия, деньги?


Если на фрилансе заказы есть — ты на коне, заказов нет — готов впрягаться за еду 24/7. Слава Богу, эти времена прошли лет пять назад. Но бывало, что и студентам из Индии курсачи делал, да и прочие стремные малвари просили написать. Сейчас работаю над тем, что интересно. Например, последние проекты — это веб-автоматизация и NLP.

Мне 32, и я сейчас с меньшим энтузиазмом вписываюсь в какие-то новомодные течения. Моя идеальная работа в офисе — где-нибудь в пяти метрах от дома, лучше на соседнем этаже. Свой отдельный кабинет, с удобным столом, креслом и железом. И технологии, которые я знаю. Может еще 10-20% рабочего времени, когда можно экспериментировать с новыми. Впрочем, я и описал то, как работаю сегодня.

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

Денег обычно прошу чуть выше рынка, но это не критично.

5. Что в технологиях и языках, которые ты используешь, ты бы хотел исправить?


Самое первое, что до скрежета зубов напрягает — это отсутствие кросс-платформ UI для .NET. Или для простоты — WPF для macOS. Второй момент это качество самого проекта Xamarin на сегодняшний день. Особенно быстрота сборки и деплоя Xamarin-приложений, постоянно отлетающий Xamarin XAML Previewer, по неведомым причинам появляющиеся ошибки, которые исчезают только после перезапуска IDE.

Как только я сел писать свое первое серьезное приложение на Xamarin Forms (Forms — дно, я знаю, но выбора не было), я просто офигел от количества бубнов, которые нужны, чтобы завести приложение из коробки под iOS/Android. Сейчас полностью обновив third-party софт от которого зависит Xamarin — ситуация поменялась.

Хотелось бы создавать скелет программы в несколько строчек. Вроде описал модель предметной области, а IDE тебе сгенерила ViewModel, мокап UI, классы для работы с конфигами, логами, перехватом исключений, DAL, BAL, SAL — то есть обертки вокруг API.

Это как бы есть, вроде scaffolding’a в ASP.NET MVC, или было похожее, в почившем LightSwitch. Но в комплексе, как я описал, чтобы все вместе генерилось — нет.
Каждый новый проект, в большинстве случаев — это копипаст кода из прошлого. Потом увязывание компонентов нового codebase между собой, через слои абстракций.
Думаю ситуация совсем скоро измениться, и мы в несколько строчек DSL будем генерить 90% кода приложения. Хотя попытки с «серебрянной пулей» не прекращаются со времен создания первой программы.

6. Где лучше перенимать чужой опыт — в вузе, на конференциях, на Хабре? Еще где-то?


Берись и делай. Просто пиши код. Но вообще каждому свое. Я, например, загорелся писать программы, как в фильмах про хакеров. Пошел на курсы по Turbo Pascal. Написал первую программу, которая складывает два числа. Запустил и меня протащило километров тридцать через все порталы вселенной. И тут я понял, что это мое.

Вторую и третью программы уже было сложнее осилить — там были if и while. И больше я на курсы не ходил. Но желание оставалось. И так как опытных коллег, и впоследствии преподов, вокруг не было, я просто покупал книжки. Переписывал листинги программ и снова покупал.

Потом начал выдумывать уже что-то свое. Додумался до написания своего компилятора С++. Прошло три года. И я уже был готов к проекту в реальных условиях, за который платят деньги. Проект за проектом, совершенствуясь по пути, дорос до Microsoft MVP, MCP и выполнил 60 проектов.

Но писать эксплойты, как в фильме «Хакеры» так и не научился.

7. Будь у тебя неограниченные ресурсы (время, деньги, мощности, люди), каким проектом ты бы занялся?


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

Помните как главный герой из фильма «Пароль «Рыба-Меч» создавал свою Хидру? Аки шаман, махая руками и вертя кубик-рубик. Или как в фильме «Железный человек». Да, это голливудский стандарт — махать руками на полупрозрачном экране, складывая кубики. Вот такую штуку хотел бы создать и пустить в массы.

Кстати, на полном серьезе, я уже вкладывался в подобную тулзу для программистов, которая работала на iPad. Но видимо 3 фрилансера и 20,000$ — маловато для революции в программировании.

8. Как ты отдыхаешь? Что делаешь кроме работы?


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

Определенного хобби у меня нет. Раньше профессионально занимался футболом, до 16 лет был капитаном юношеской команды высшей лиги. А потом написал первую программу… Теперь люблю посмотреть качественные матчи, изредка выхожу побегать сам.

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

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

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

9. Расскажи про 3 любимые книги — учебную, научно-популярную и художественную


Учебная и научно-популярная — Дональд Кнут, «Искусство программирования» (1-ый и 3-ий том)
Художественная — Незнайка на Луне. Прочитал в 7 лет, после нее, ничего не припомню, чтобы самому взяться читать. Может биография Джобса еще сильно зашла. Из последнего, что прочитал — Sapiens. Краткая история человечества.

10. Если прямо у тебя на глазах в ИИ проснется сознание, что ты ему скажешь?


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

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

Вопрос от предыдущего героя


Чем бы ты занимался в межгалактической экспедиции, длительностью в несколько поколений?

Разумеется буду кодить и автоматизировать нужды экспедиции.

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

Вопрос для следующего героя


Какие советы ты бы дал себе вернувшись на 10 лет назад?

Комментарии (12)


  1. PastorGL
    18.10.2018 18:10
    +1

    А по какому принципу выбираются персонажи для следующего интервью? (Прошу прощения, если в каком-то предыдущем из 8 выпусков на этот вопрос отвечали, но перелистывать их все несколько лениво.)


    1. arttom Автор
      18.10.2018 18:24
      +4

      Я в самом первом выпуске попросил писать мне в личку. Кто готов о себе честно рассказывать, тех и зовем.


      1. PastorGL
        18.10.2018 18:59
        +3

        И много написавших? Сколько интервью на очереди, если не секрет?


        1. 0xScript
          19.10.2018 05:42

          arttom Тоже интересно


  1. artskep
    18.10.2018 18:34
    -2

    Куш пореалистичней он взял на Upwork — 60 выполненных проектов и кругленькие суммы (ну, для меня) в графе полученных денег.

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


  1. baragol
    18.10.2018 18:45
    +1

    то ли новый Макбук купить, который «не печет»

    Еще как печет!


  1. eugene_bb
    18.10.2018 19:25
    +1

    Это как бы есть, вроде scaffolding’a в ASP.NET MVC, или было похожее, в почившем LightSwitch. Но в комплексе, как я описал, чтобы все вместе генерилось — нет.
    Каждый новый проект, в большинстве случаев — это копипаст кода из прошлого. Потом увязывание компонентов нового codebase между собой, через слои абстракций.

    Думаю ситуация совсем скоро измениться, и мы в несколько строчек DSL будем генерить 90% кода приложения. Хотя попытки с «серебрянной пулей» не прекращаются со времен создания первой программы.

    Моё мнение что это от отсутствия осмысленной стандартизации. Каждый делает как бог на душу положит.

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

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


    1. fillpackart
      18.10.2018 22:32
      +2

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


  1. Stasgar
    19.10.2018 10:25

    Один джун брал на себя 50% задач, просто потому что сидел рядом со мной в опенспейсе.

    Безымянный герой, которого мы заслужили.


  1. befart
    19.10.2018 14:54

    Вот жена прочитает, что он мечтает переспать с инопланетянкой, и получит скалкой наш герой по умной голове:)


    1. nrcpp
      19.10.2018 18:36
      +1

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


  1. priwelec
    19.10.2018 19:50

    две малых спингрозы

    имелось в виду, два малых спиногрыза? :)