Хабрахабр

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

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

Но под катом никакого хвастовства и мотивашек в духе «вы тоже можете». Куш пореалистичней он взял на 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. Опиши свое рабочее пространство: от кресла и монитора до сред программирования и любимых утилит. И скриншоты приложи, если можешь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Предыдущие выпуски

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть