Как выжить в рф программисту?
Сначала дадим ряд общих советов:
§ Не позиционировать себя как специалиста по всему на свете. Придерживаться одной платформы и технологии, приобрести глубокие теоретические знания в этой узкой области и сделать в ней какой-нибудь небольшой проект для себя (например, плагин для Wireshark, свой tool для valgrind, сервер на Erlang или библиотеку со своими альтернативными аллокаторами на C++). Никогда никому не говорить "У меня нет опыта". Если вы писали курсовую или дипломную на данном языке, то опыт есть. Если вы администрировали localhost или писали софт для себя, или выкладывали свои скрипты на GitHub, или фиксили баги в любом open source-проекте, или запиливали там новые фичи, то опыт по определению есть - self-employed, open source, pet projects. Нужно бережно вести свое портфолио/резюме и ежегодно его пополнять.
§ Никогда не соглашаться на бесплатные стажировки или стажировки за МРОТ/еду. Никогда не выполнять тестовые задания задаром. Любая работа на дядю должна хорошо оплачиваться. Если не хватает теоретических знаний, то нужно сидеть дома и изучать (желательно - по 4 ч теории в сутки и по 6 ч самостоятельной практики, включая тщательное изучение кода чужих open source-проектов или разработку своих). Устроившись на работу, надо активно обучаться новым технологиям, заниматься самообразованием, получать новый опыт в рабочее время за счет работодателя непосредственно в процессе выполнения самой работы.
§ Не позволять себя обманывать. Если какая-то компания гордо называет себя американской, но при этом основной девелоперский офис с сотней разработчиков у них находится в РФ, то это - всего лишь бизнес ушлого американского подлеца (нередко с русскими корнями и русской фамилией), который ведет дела в РФ либо по модели аутсорсинга софта ("галера"), либо по модели аутстаффинга софта ("бодишоп").
§ Не кормить местечковые (то есть российские) бизнесы наподобие ООО "Яндекс" за смехотворные з/п (в пересчете на доллары США за час работы), наивно позволяя подлецам расхищать свой труд. Никогда не работать за опционы, морковку перед носом в виде акций и так далее. Требовать только доллары США, причем здесь и сейчас. Игнорировать бодишопы, галеры, российских клиентов и российские продуктовые компании вообще, поскольку они или насаждают работающую бедность, или просто неадекватны, или занимаются расхищением труда, перепродавая человеко-часы разработчиков в другие страны в 3 - 3,5 раза дороже, чем сами платят разработчикам. Никогда не работать в компаниях, в которых менеджеры любого звена или директора являются выходцами из СССР или постсоветских стран, потому что данные товарищи имеют маниакальную тягу к мошенничеству, гноблению своих наемных работников, манипуляции их сознанием и самооценкой, разводу, кидалову, регулярным отказам в повышении з/п, задержкам з/п и премий, а также к обману даже на этапе составления и подписания контракта или трудового договора. А еще бывает вот так:
https://habrahabr.ru/post/335876 (прочитайте не только сам пост, но и все комментарии под ним от товарища platoff - директора галеры Xored Software).
§ Год за годом ежедневно изучать American English вплоть до продвинутого уровня. Это нужно делать параллельно вашей основной работе, а не вместо нее. Кстати, если вы будете изучать American English по часу в сутки, то эта песня может длиться вечно. Чтобы действительно выучить American English, его нужно изучать как минимум по три часа ежесуточно (до или после работы). Не забывайте и о том, что курсы при галерах - это шарлатанство: английскому там учат специально так, чтобы человек никогда не смог начать работать напрямую на американских клиентов, минуя галеры. Если захотите заниматься самообучением, то устройте себе интенсивный курс: каждый день читайте любые американские книги вслух (именно вслух), смотрите телеканал BBC World News, пишите короткие тексты по-английски на разные темы (как прошел день, как провели выходные) и общайтесь текстом на американских форумах, посвященным любой тематике. Еще не забывайте о том, что работа в одной команде с русскоговорящими разработчиками будет вам сильно мешать изучать правильный American English, а также будет способствовать засорению вашей речи типичными ошибками. Поэтому старайтесь работать на таких проектах, где в команде русским языком будете владеть только вы. Так ваше обучение пойдет заметно быстрее: вы будете автоматически набираться нужных идиом от окружающих и автоматически совершенствовать свой American English параллельно вашей работе в течение всего 8-часового рабочего дня.
§ Никогда не колымить, не шабашить, не заниматься фрилансом. Соглашаться только на постоянную удаленную работу на конкретного иностранного заказчика фулл-тайм по контракту и без посредников. Заниматься только IT-проектами и никогда не соглашаться заниматься IT-задачками, даже если клиент гордо называет свою задачку словом "проект". Запомните: нормальный IT-проект - это когда есть полноценный менеджмент и конкретная методология разработки, когда есть распределенная по планете команда фулл-тайм-разработчиков, каждый из которых занимается строго своим делом, несет ответственность только за свой небольшой фрагмент проекта и митингует с командой раз в сутки в одно время, когда есть QA и DevOps, когда практикуется code review, когда используются баг-трекеры, JIRA, git или подобные вещи. Все остальное - это "задачки для программистов", а не проекты.
§ Не переезжать жить за границу, не переезжать жить в Москву или Петербург. Наиболее выгодный вариант для разработчика софта, удаленно работающего на иностранные компании фулл-тайм по контрактам на long-term-проектах, - это жить в одном из провинциальных городов РФ с населением от 500 000 до 1 млн человек, потому что там жизнь крайне дешевая во всех ее аспектах, а курс доллара США сейчас внушает радость и оптимизм. Также рекомендуем вам отказываться от проектов и компаний, требующих поездок в командировки (business trips), потому что эти поездки обычно неадекватно низко оплачиваются, очень утомляют, втягивают программиста в искусственно создаваемый дискомфорт, а также воруют у него по 24 часа времени ежесуточно. Также рекомендуем вам избегать проектов, на которых нужно работать под постоянным давлением, людей в командах, которые любят тестировать вас на стрессоустойчивость, и компаний, где это все поощряется. Берегите свое здоровье и свои нервы.
§ Заниматься исключительно вашими должностными обязанностями и не позволять навешивать на себя чужих. Если ваша должность - Software Engineer или Senior Software Engineer, то вы должны и обязаны заниматься разработкой софта. Никакое ручное или полуавтоматизированное тестирование, никакое обучение джуниоров, никакое преподавание в вузе, никакое замещение тимлида в течение двух недель (на время которых вам, кстати, не повысят вашу почасовую ставку), никакое проведение семинаров, никакая уборка помещений, никакие погрузочно-разгрузочные работы не входят в список ваших обязанностей. Современный технический специалист не должен позволять управленцам садиться ему на шею и ездить на нем. Занимайтесь только разработкой софта, делайте свою работу хорошо, становитесь отличным техническим специалистом и безгранично развивайтесь в этом направлении. И не обучайте других людей, не делитесь ни с кем своими ценными знаниями и опытом, чтобы не помогать корпорациям создавать для них промышленную резервную армию труда.
§ Требовать давать вам только те задачи, на которых реально можно стремительно вырасти. Если вы - студент, то требуйте задач уровня миддла. Если вы - миддл, то требуйте задач уровня синиора. Если вы - синиор, то требуйте задач уровня архитектора. Если вы лично считаете, что в течение полугода успешно справлялись с большинством технических задач, то требуйте резкого повышения вашей з/п или уходите в другую компанию на другой проект. К сожалению, у многих программистов есть предубеждение, что если они будут полгода делать задачи своего уровня, то их повысят. Нет, не повысят. Наоборот, тимлиды и менеджеры будут годами использовать вас, как совхозную лошадь, загружая монотонной посредственной работой, и вся ваша карьера превратится в вялотекущий дауншифтинг с работающей бедностью и отсутствием крупных долларовых сбережений на период зрелости и старости.
§ Легко менять компании, если вы почувствовали, что на текущем месте работы развитие вас как технического специалиста идет недостаточно быстро. Никогда не привязывайтесь ни к работе, ни к работодателю, ни к коллективу. Выходите из зоны комфорта раз и навсегда. Вообще не привязывайтесь ни к людям, ни к работе. Также не тратьте ваше время на женщин, особенно, если они не понимают важности ваших профессиональных интересов, тормозят ваше развитие, расхищают ваше время, внимание, деньги и прочие ресурсы или требуют от вас наличия каких-либо социальных статусов, особого положения в обществе, смены профессии, перехода на управленческие должности и так далее.
§ Никогда не позволять тимлидам и менеджерам опускать вашу самооценку, используя методики манипуляции сознанием. Запомните: как минимум 2 раза в год должен проводиться пересмотр ваших скиллов и опыта, на котором вам должны повышать з/п. Ваша з/п каждые полгода всегда должна и обязана возрастать хотя бы потому, что в стране есть инфляция. Наиболее подлые манипуляции, используя которые, менеджер может опустить вас на performance review, загнобить вас и не повысить вашу з/п, приведены вот в этой статье. Внимательно ознакомьтесь с ней. Если вы заметили такие манипуляции, если менеджер пытается сделать вас изгоем или опущенным, то смело посылайте менеджера и уходите работать в другую компанию на ту же или большую з/п. А для этого нужно регулярно ходить на собеседования, постоянно находиться в поиске новой работы и всегда иметь пару запасных вариантов, куда можно уйти в любой момент. На новом месте работы не забывайте активно набираться опыта за счет работодателя и улучшать скиллы, чтобы всегда быть востребованным на едином глобальном рынке труда.
§ Регулярно ходить на новые собеседования. Перед собеседованием постарайтесь потратить хотя бы полдня на прохождение тестов в интернете. Если какая-то компания не позволяет вам сразу начать общаться с разработчиками, заказчиками или менеджерами проектов, выставляя перед ними HR-менеджера, то в разговоре с HR-менеджером старайтесь либо умолчать о своих зарплатных ожиданиях, либо ответить расплывчато, чтобы не быть отсеянным на этом этапе. На собеседовании старайтесь продемонстрировать самостоятельность, готовность самостоятельно решать любые задачи, не обращаясь за помощью к кому-либо, также демонстрируйте понимание своей высокой стоимости и полезности (value) на едином глобальном рынке. Всегда предлагайте пройти собеседование через Google Hangouts или мессенджеры. Это не только сэкономит ваше время, но и позволит продемонстрировать, что вы очень высоко цените ваше время. Более того, это даже поможет упростить для вас собеседование, потому что вы сможете сказать, что набираете текст с телефона, а в это время будете искать решение в Google с ноутбука. Это будет честно и справедливо, поскольку в современную эпоху хороший программист не обязан иметь хорошую память и помнить все тонкости языка, которые могут меняться от стандарта к стандарту или от компилятора к компилятору. Тем более, что на нормальных проектах некоторые редко используемые аспекты стандарта применять запрещено. На собеседовании пытайтесь узнать как можно больше не только о проектах, но и о клиентах компании (как текущих, так и потенциальных), чтобы потом в случае чего вы могли связаться с американскими клиентами напрямую и увести их (что ТК РФ не запрещает делать). Также просите показать реальный образец ТЗ для какой-нибудь конкретной задачи. Если от вас требуют 10 лет опыта и кучу сертификатов, то спросите, каков реальный опыт ваших потенциальных коллег на проекте и сколько сертификатов они имеют. Если от вас требуют знание английского языка на уровне C2, то спросите, какой процент коллектива имеет всемирно признанные сертификаты и, если он нулевой, то почему от вас требуют настолько совершенный уровень. Всегда говорите на собеседованиях, что вы рассматриваете сейчас сразу 3 - 4 варианта job offer'ов от других компаний, но не называйте эти компании (во-первых, вы имеете право на тайну, во-вторых, не стоит палить хлебные места или ваших потенциальных контрагентов перед собеседущим вас программистом, в-третьих, не стоит никому давать повода обсуждать вас с этими компаниями за вашей спиной). Давайте всячески понять, что текущая компания в вас нуждается больше, чем вы в ней, и никогда не показывайте, что вам позарез нужна именно эта вакансия (даже если у вас заканчиваются деньги), иначе вам начнут выкручивать руки. Старайтесь устроиться на новый проект, не связанный с ковырянием проприетарного legacy-кода. Если вас не взяли на проект после собеседования, то ни в коем случае не расстраивайтесь и не снижайте планку зарплатных ожиданий. В тот же день записывайтесь на собеседование в другую компанию. Не тяните время, назначайте себе плотный график собеседований и регулярно ходите на них. Запомните: на планете есть сотни тысяч компаний, поэтому зацикливаться на какой-то одной не стоит. Даже если 19 собеседований завершились отказом по какой-либо причине (например, CTO считает, что вы слишком большую з/п требуете), то все равно велик шанс того, что после собеседования в 20-й компании вас возьмут на интересующий вас проект.
§ Начать с подозрением воспринимать все проекты. К примеру, если вы, работая удаленно на едином глобальном рынке труда, получили приглашение на какой-то проект, где в команде 100% программистов являются русскими/украинцами/белорусами или просто русскоговорящими, то это серьезный повод предположить, что на этом проекте насаждают работающую бедность, поэтому стоит отказаться. Если же русскоговорящих программистов там две трети, остальная треть программистов (именно программистов, а не управленцев) - это, к примеру, канадцы, американцы, голландцы, немцы, ирландцы и так далее, то это хороший проект, и на предложение стоит отвечать согласием.
§ Как при устройстве на работу, так и при дальнейших обсуждениях вашей з/п в данной компании никогда не вестись на мошенничество в духе "Ваш опыт работы с ZeroMQ - всего 1 год, поэтому мы вам не можем платить много". В нашем чересчур динамичном мире одни технологии быстро сменяют другие, и сейчас требование опыта работы с конкретной крайне специфической библиотекой, измеряемое не в неделях и не в конкретных задачах, а в годах, - это очередная попытка обесценить работника. При этом сам бизнесмен зачастую любит нагло врать на сайте своей компании о том, что его компания - один из мировых лидеров в десятке отраслей и якобы имеет десятилетний опыт работы с ZeroMQ и сотнями прочих инструментов, библиотек и технологий, несмотря на то, что ни один из сотрудников не имеет опыта применения ZeroMQ более года, например.
§ Всегда двигаться вперед. Если вы работаете над каким-либо небольшим российско-американским продуктом, который является всего лишь компонентом, продаваемым другой компании для ее большого проекта в рамках B2B-модели, то напишите в ту компанию, объясните, что вы - старший или ведущий разработчик этого компонента, в совершенстве знающий этот компонент изнутри и хорошо разбирающийся в данном коде. Вам могут предложить уволиться из вашей мелкой компании и перейти работать в крупную компанию, чтобы заниматься там практически тем же самым, но за более адекватный годовой доход. Если повезет, то ваша новая компания вообще откажется сотрудничать с предыдущей и начнет сотрудничать исключительно с вами. На новом месте не останавливайтесь, анализируйте бизнес этой компании, разведывайте список ее крупных B2B-клиентов, чтобы выйти уже на них напрямую, повысив ваш годовой доход еще раз. Если вам внезапно написал какой-нибудь HR-менеджер и предложил поработать на каком-нибудь проекте, то постарайтесь осторожно разведать, кто в данной цепочке является компанией-посредником, а кто - конечным иностранным клиентом, после чего выйдите напрямую на заказчика и предложите ему заключить контракт, не говоря, откуда вы узнали о проекте. В итоге посредник лишится клиента, HR-менеджер обломается и не получит бонусов, а вам достанется подписанный контракт. Запомните: HR-менеджерам деньги не нужны, они HR-менеджеров только портят. Но не всегда разведка дается людям легко: некоторые разработчики иногда даже устраиваются работать на галеру в одиночку или группами по 2 - 3 человека, после чего, проработав там месяц, уводят у галеры клиента (что ТК РФ не запрещает делать) и тут же увольняются, продолжая работать из своих квартир удаленно на того же клиента либо на том же самом проекте, либо на каком-нибудь другом его проекте.
§ Никогда не прогибаться на собеседованиях и не снижать планку денежных требований, даже если тот, кто вас собеседует, открыл свежайший стандарт вроде C++14 и, читая его сверху вниз и задавая вам вопросы, обнаружил, что вы не знаете чего-то. Всего знать и помнить невозможно, и это нормально, ведь в реальной работе вы всегда сможете в случае необходимости открыть PDF-документ с тем же стандартом и быстро вспомнить или понять конкретную вещь. Сейчас во многих компаниях самый востребованный сотрудник - это аутист и офисный раб, который легко позволяет окружающим снижать его самооценку, поэтому вам никогда нельзя прогибаться ни под кого. Современные собеседования все больше напоминают ментовские допросы и представляют собой не отборы компетентных кадров, а акты психологического отбора рабов. На собеседовании специально обученные люди могут обвинить в незнании C++ даже Бьерна Страуструпа. Если вы поняли, что данной конкретной компании требуется не компетентный разработчик, а галерный раб, то тут же прерывайте собеседование и вежливо прощайтесь навсегда.
§ Никогда не участвовать в хакатонах ("марафонах для программистов"), где инфантильные специалисты из различных областей бесплатно решают какую-либо бизнес-задачу, готовое решение которой, по-хорошему, стоило бы впарить за хорошие деньги. Также не стоит выступать на конференциях, днях открытых дверей и так далее, чтобы не заниматься излишней популяризацией своей профессии. Также не стоит участвовать в различных олимпиадах и конкурсах, если они не оплачиваются достойно. А вот стараться получать сертификаты от Red Hat, Coursera или Amazon как раз имеет смысл, потому что они сильно помогают независимому разработчику при поиске проектов с нормальными бюджетами, обсуждении условий работы, подписании контрактов.
§ Никогда не работать на клиентов, которые требуют устанавливать на ваш компьютер любое spyware, которое периодически делает скриншоты со всех ваших мониторов или фотографирует ваше лицо на web-камеру и периодически отправляет клиенту картинки. Не позволяйте себя никому так унижать даже в том случае, если у вас маленький опыт работы. Если уровень доверия к вам изначально ниже плинтуса, то нет смысла подписывать контракт на кабальных условиях. Лучше на неадекватного клиента не работать ни минуты, чем подписать контракт и потом пожалеть.
§ Никогда не перерабатывать. Никогда не работать более 40 ч в неделю. Многие интерны, джуниоры и миддлы совершают катастрофическую ошибку, начиная перерабатывать. Их тактика звучит примерно так: "Да, я зарабатываю, как лох, но если я начну работать по 60 ч в неделю вместо 40 ч в неделю, то мой годовой доход вырастет". Данная тактика неизбежно приводит к стратегическому провалу, когда оклад человеку годами не повышают или же повышают крайне незначительно, зато постоянно подкидывают ему сотни нудных, неинтересных, и омерзительно скучных задач, эксплуатируя его, как огородную лошадь. Всегда помните, что 40 ч в неделю - это ваш максимальный лимит, после которого вы можете заниматься чем угодно, только не работой. Например, можно заниматься повышением квалификации, самообразованием, разработкой своих проектов или поиском новых карьерных вариантов, что в совокупности окажет на ваш суммарный доход за ближайшие три года более положительное влияние, чем переработка здесь и сейчас на текущего работодателя. А если работодателю вот прямо сейчас не хватает людей не проекте, то пусть нанимает дополнительных разработчиков, создавая новые рабочие места, в результате чего, кстати, экономическое равновесие установится уже в другой точке.
Также есть множество способов, позволяющих создать вертикальную интеграцию и перестать работать на дядю вообще. Приведем в качестве примера один из них. Вам нужно перестать конкурировать с джунглями, то есть с Индией и Пакистаном, а конкретнее - с теми из индусов, кто обладает солидным опытом и хорошими скиллами. Для того чтобы перестать конкурировать с опытной и образованной частью индусов, нужно организовать вертикальную интеграцию в том или ином виде. Для этого надо изучить три языка: VHDL для разработки схем, Ada SPARK для программирования вычислителей, MATLAB для разработки алгоритмов. Только после этого нужно изучить язык C на уровне чтения сишного кода, не более того. В результате, не замусорив мозг лишними языками, разработчик получит способность делать законченные системы на основе собственных или адаптированных архитектур (для этого VHDL) с надежным кодом (для этого Ada, а точнее - ее урезанный надежный вариант SPARK) и со своими алгоритмами (для этого MATLAB, который умеет делать из модели фильтра на VHDL код для FPGA). А продавать заказчикам нужно небольшое законченное решение, будь то компонент или конечный продукт. Например, модель 32-битного SPARC-совместимого процессора с правильными дополнениями (FPU и прочее такое) на VHDL, которая синтезируется для стойких к радиации чипов FPGA и поставляется покупателю в виде готовой микросхемы с авторской надписью на корпусе. Это первый шаг вертикальной интеграции. Чип этот дорогой (пятизначная сумма в долларах), потому модель тоже можно продать задорого (округлить до первой цифры, например). Теперь второй шаг. Если подняться на уровень выше по интеграции, то можно сделать надежный вычислительный модуль, и цена примерно удвоится. Клиенты для таких вещей могут их себе позволить. А теперь третий шаг вертикальной интеграции. Итак, если подняться еще выше, то можно продать еще и свой код на Ada SPARK с профилем Ravenscar, теорем-прувером и формальной верификацией софта - код с надежностью в качестве основного товара. Эти три шага - пример вертикальной интеграции и ухода от джунглей, большая часть населения которых может лишь кодить под себя за лайки на убогих галерах наподобие Toptal, Upwork и Crossover и не знает, что такое надежность, automated deduction, формальная верификация. Разработчика софта, который догадается сделать вертикальную интеграцию хотя бы в три шага (лучше - еще больше шагов), вообще не будет интересовать, сколько на глобальном рынке труда существует вакансий на языках VHDL, C, MATLAB, Ada SPARK, например.
Отдельно следует отметить, что у многих программистов имеется абсурдная религиозная вера в бездонность рынка, вера в то, что мест на рынке хватит для абсолютно всех желающих получать от $5 000 в месяц и больше, настукивая код в Emacs по 8 ч в день. Отчасти эта вера вбивается им в головы владельцами галер, которые хотят, чтобы инфантильные программисты максимально толерантно относились к увеличению числа программистов на городском рынке труда, спокойно делились знаниями и опытом со всеми, преподавали, а иногда и работали бесплатно (хакатоны, бесплатный консалтинг или же такие переработки, когда программист реально проработал 10 ч, а в Redmine записал 9,5 ч). Отчасти эта вера насаждается научной фантастикой и постоянным обсуждением высоких технологий будущего в новостях, вследствие чего юноша с горящими глазами начинает считать, что рынок резиновый, что через годик-другой на планете потребуется 1 млрд разработчиков. Программисты не осознают, что совокупные расходы на труд программистов (то есть на труд джуниоров, миддлов и синиоров) у Alphabet Inc., Amazon.com, Berkshire Hathaway, ExxonMobil, Johnson & Johnson, Facebook, JPMorgan Chase, Wells Fargo и прочих корпораций в последние годы ежегодно падают, если считать честно, учитывая всех их контракторов и субподрядчиков, но не учитывая IT-менеджеров, тимлидов и продажников. Единственный выход из этой ситуации - создание профсоюзов или неформальных объединений с целью обобществления ресурса "работодатели", а также борьбы с демпингом на рынке труда и борьбы с излишней популяризацией профессии. Кстати, программисты Украины некий профсоюз уже создавали в 2016-м году, и изначально все у них шло хорошо, даже манифест был:
https://github.com/itch2016/dev-union-ua
Но в итоге профсоюз развалили подлые штрейкбрехеры. Но пробовать создавать профсоюзы в РФ все равно стоит. Всем программистам на Ruby/Java/Erlang/C++/Scala/C/JavaScript, разработчикам под ASIC/FPGA, SoC-разработчикам, DevOps, QA Automation, всевозможным линуксовым системным программистам, специалистам по ЦОС, программистам под AVR/PIC/ARM нужно создавать профсоюзы. У всех разработчиков должна быть классовая и трудовая солидарность, рабочее самосознание. Профсоюзы должны стремиться к тому, чтобы даже весьма средний по сложности труд никогда не продавался задешево на рынке труда. Профсоюзы должны бороться с прививанием другим программистам заниженной самооценки и комплекса неполноценности со стороны менеджмента, стремящегося навязать им мысль о том, что не совсем идеальный программист должен обваливать цены на свой труд из-за своей неидеальности. Профсоюзы должны бороться с излишней популяризацией профессии, приводящей к тому, что в профессию сейчас толпами идут разносчики пиццы, дворники, лэшмейкеры, строители и филологи. Нужно стремиться к тому, чтобы на рынок разработки софта вкатывались только те, кто еще со школы испытывал повышенный интерес к программированию, все свободное время проводя с отладчиком, профилировщиком, линкером и компилятором, а в вузе слушал лекции по дискретной математике, математической логике, алгоритмам и структурам данных. Профсоюзы должны объяснять программистам, что даже в рамках консалтинга можно продавать свои модули, библиотеки или небольшие конечные продукты вместо того, чтобы выкладывать на GitHub все, что плохо прибито к полу. Профсоюзы должны объяснять программистам, что они не должны оказывать бесплатный профессиональный консалтинг на Stack Overflow.
Напоследок нужно рассмотреть фрилансеров. Данные люди представляют собой пример вредной для становления миллионером психологии временно нищего миллиардера. Фрилансеры тратят все свое время на поиск заказчиков, переговоры, самопиар, сон, улучшение своих профессиональных навыков и собственно выполнение работы. При этом фрилансеры считают отсутствие у них долговременных контрактных отношений неким признаком элитарности и свободы, полагая, что это является необходимым и достаточным признаком бизнесмена, и причисляя себя к классу буржуазии на основании факта самостоятельного поиска заказчика. Но фрилансеры вообще не тратят времени на создание собственных активов, накопление собственных финансов, управление собственными финансами и активами, улучшение профессиональных навыков в области управления и экономики. Признаком бизнесмена является наличие долговременных договорных отношений с наемными работниками, результаты труда которых бизнесмен несколько раз перепродает, и/или наличие собственных активов, то есть находящихся в собственности систем, средств и процессов, приносящих прибыль. Также следует отметить, что ни один бизнесмен никогда не будет регистрироваться на каком-нибудь убогом сайте типа Upwork, где чужие дяди будут ему ставить несмываемые оценки наподобие 4,05/5 или 3,45/5, оценивая его числовым клеймом, словно проститутку, и умышленно ставя его в положение соответствия чьим-то пожеланиям. Поэтому фрилансера вообще нельзя называть предпринимателем, коммерсантом, бизнесменом, даже если он сам себя так называет. Более того, зачастую у среднего фрилансера вообще нет сбережений даже на год вперед, нет такого объема финансов. Так что же делать фрилансеру? А все то же, о чем писалось выше. Создавать профсоюз, который будет бороться с демпингом и вразумлять трудовой народ. Навсегда бросать фриланс, удалять свой аккаунт на Upwork и начинать самостоятельно работать на иностранные компании по 40 часов еженедельно по долгосрочным контрактам (например, контракт на 1 год), собственноручно подписывая NDA и сам контракт, в одиночку встраиваясь в иностранные команды разработчиков и занимаясь серьезными проектами, а не задачками для программистов. И еще нужно ежегодно обрастать своими активами хотя бы в виде небольших модулей, компонентов, решений, продуктов, проектов, библиотек, многократно продавая их клиентам, на которых уже не фрилансер будет работать по долгосрочным контрактам.
В США есть сотни крупных компаний (в том числе Google и Amazon), тысячи средних компаний и сотни тысяч малых компаний. Работать удаленно по контрактам на проектах крупных корпораций наподобие Google не стоит (и такие корпорации, кстати, в подавляющем большинстве случаев не станут подписывать контракт с одним отдельно взятым консультантом). А вот со средними и малыми компаниями имеет смысл подписывать контракты. Если вас сильно заинтересует какой-нибудь конкретный проект, на который средняя или малая американская компания откажется брать российского контрактора для удаленной работы, то вам нужно будет зарегистрировать DBA в Соединенных Штатах. А еще лучше - создать LLC в штате Вайоминг или каком-нибудь другом штате с нулевыми налогами на доходы. Существуют американские компании, которые помогут вам быстро зарегистрировать LLC в Вайоминге, не вставая с вашего дивана в РФ, а также получить уникальный почтовый адрес в США с переадресацией бумажной почты в РФ, причем стоить это все будет очень дешево. Для LLC имеет смысл за сутки сделать небольшой сайтик на 5 - 6 страниц, подробно рассказывающий о том, какие именно услуги предоставляет ваша "компания, состоящая из одного человека", а также с какими технологиями работает. Нужно будет прикупить домен второго уровня и оплатить хостинг где-нибудь на OpenShift. Можно еще прикрутить к сайту сугубо технический блог и начать периодически пополнять его. После регистрации LLC у вас появится гораздо больше возможностей для работы с американскими корпорациями по долгосрочным контрактам. Впрочем, на проект, где требуется Yankee White clearance, россиянина не возьмут, но таких проектов в США мало. И еще не забывайте о том, что удаленная работа на серьезных проектах по долгосрочным контрактам - это не только США, но еще и Канада, Австралия, Сингапур, Новая Зеландия и прочие страны. Мир очень большой, и российский программист, решивший удаленно работать без лишних посредников в виде галер и бодишопов на сложных, интересных и высокооплачиваемых проектах в распределенных по планете командах разработчиков, сможет найти себе проект по душе.
Как выжить в РФ пилоту?
Бойкотировать российские авиакомпании и российских работодателей. Срочно улетать работать в Оман, ОАЭ, КНР, Катар, Бахрейн, Малайзию, Индонезию, Южную Корею или Кувейт. Стараться получить вид на жительство в одном из этих государств, а затем - и гражданство.