«Черт меня дернул пойти работать в офис» — 10 вопросов программисту, 9 выпуск



    Как-то так вышло, что почти все восемь выпусков мы говорили с офисными разрабами, и не опрашивали, каково живется на фрилансе. Сегодня, наконец, исправляем. Рассказывает Денис Казаков (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 лет назад?

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 13

      +1
      А по какому принципу выбираются персонажи для следующего интервью? (Прошу прощения, если в каком-то предыдущем из 8 выпусков на этот вопрос отвечали, но перелистывать их все несколько лениво.)
        +4
        Я в самом первом выпуске попросил писать мне в личку. Кто готов о себе честно рассказывать, тех и зовем.
          +3
          И много написавших? Сколько интервью на очереди, если не секрет?
      –2
      Куш пореалистичней он взял на Upwork — 60 выполненных проектов и кругленькие суммы (ну, для меня) в графе полученных денег.

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

        Еще как печет!
        • UFO just landed and posted this here
            +3
            Она похоже и не думает устаканиваться. Вот сижу, и вижу, как пятнадцать лет назад умные люди говорили то же самое. Область применения всё расширяется, индустрия растёт, устаканиваться некогда.
            +3
            Один джун брал на себя 50% задач, просто потому что сидел рядом со мной в опенспейсе.

            Безымянный герой, которого мы заслужили.
              0
              Вот жена прочитает, что он мечтает переспать с инопланетянкой, и получит скалкой наш герой по умной голове:)
                +1

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

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

                имелось в виду, два малых спиногрыза? :)
                  0
                  Простите, наверное к ерунде прикапываюсь, но вроде как
                  Сейчас выжимаю максимум из i5 второго поколения, с SSD на 500 GB + старый HDD, и 16 GB RAM DDR2

                  там должно быть DDR3, DDR2 не поддерживается процессорами Sandy Bridge.

                  Only users with full accounts can post comments. Log in, please.