Персональные инструменты
Счётчики
В других энциклопедиях

Программист

Материал из Lurkmore
(перенаправлено с «Hello world»)
Перейти к: навигация, поиск
Drama.pngZOMG TEH DRAMA!!!11
Обсуждение этой статьи неиллюзорно доставляет не хуже самой статьи. Рекомендуем ознакомиться и причаститься, а то и поучаствовать, иначе впечатление будет неполным.
St.jpgВнимание!
Эта статья или раздел полны стереотипами чуть более, чем наполовину.
Скорее всего, это сделано исключительно для лулзов. Хотя если подумать
«

Многие из вас знакомы с достоинствами программиста. Их всего три, и, разумеется, это лень, нетерпеливость и высокомерие.

»
— Larry Wall
«

Программирование — это церебральная мастурбация

»
— Физики
«

Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему

»
Хабрахабр
Типичный представитель

Программист (проггер, погромист, девелопер, дев (рас. пинд. developer), кодер, кодировщик, кодераст, боярчислописецъ) — это человек, который пишет программы. Программисты делятся на архитекторов[1], собственно программистов, быдлокодеров и хеллоуворлдщиков (расположены в порядке убывания профессионализма).

Содержание

[править] Применение

Текущее состояние цивилизации программных продуктов с точки зрения физмата
Тоже программист
Breaking news!
b
Истинный сайтостроитель

По области работы программисты делятся на системных, прикладных и веб-программистов. Первые пишут операционные системы, драйверы и виртуозно ругаются матом на нескольких языках (в первую очередь на Си и иногда на асме). Лохматы, небриты (зачастую бородаты). Знают, как написать программу для микроконтроллера, чтобы тот заработал с USB. Вторые пишут прикладной софт для голых осей, написанных системщиками. Обычные инструменты последних — Жаба, Сшарп, SWIFT, тот же С/С++. Иногда прикладники сбиваются в стаи и пишут компьютерные игры. А иногда и страдают. Веб-программисты являются совершенно отдельной расой и пишут дейтинги на PHP, знают JavaScript, HTML, CSS. Отличаются полным незнанием классических алгоритмов и вообще теории, что не мешает особо хитрожопым из них зарабатывать кучи денег, не особо напрягаясь. Конечно, эти три группы взаимопересекаемые, ибо веб-приложения можно писать и на PHP, и на яве, и на сшарпе, да хоть на асме, но нахуй надо.

Зачастую программисты в шутку называют себя быдлокодерами (в каждой шутке есть доля шутки). Особенно данное явление распространено на имиджбордах. Также сам процесс программирования обзывается как «быдлокодинг».

Алсо, простые пользователи, считающие, что стоящая у них под столом коробка — процессор (а в клинических случаях — стоящий на столе монитор — это и есть компьютер), называют программистами админов («тыжпрограммист!»), сотрудников техподдержки, а в конце 90-х — начале 2000-х таковыми называли вообще любого человека, имеющего компьютер и доступ в интернет.

Офисный планктон утверждает, что пpогpаммист или сисадмин похож на шамана — оба боpмочyт непонятные слова, совеpшая непонятные действия, и оба не могyт объяснить, как оно pаботает. Для этого даже специальный термин есть — танцы с бубном. (спойлер: На самом деле этим страдают админы, которые сами готовят и сами едят за скромные зарплаты. ТруЪ-прогер получает серьезные деньги за годные продукты с хорошей сопроводительной документацией, если работает в производительной компании. Впрочем, в быдлокодер-friendly компаниях условия могут вполне напоминать о бомже с картинки выше.)

[править] Программист в России

В Российской Федерации, в соответствии с решением заседания от 5 июня 2006 года Совета по ИТ при Министре информационных технологий и связи РФ, при организационной поддержке Мининформсвязи РФ и Ассоциации Предприятий Компьютерных и Информационных Технологий (АП КИТ) был выполнен проект, по которому лишь программист самого низшего уровня квалификации является кодером, а выше являются руководителями других программистов.

Социальный состав программистов в этой стране:

  • низкие социально, пьющие и часто думающие, что вся жизнь должна укладываться в математическую логику;
  • женщины, неоправданно обласканные мужским вниманием ещё с технических факультетов, редко симпатичные;
  • стареющие «опытные» мизантропы;
  • прибежища всяких мутных тараканов типа социализма, нацизма-ксенофобии, женоненавистничества и админства головного мозга;
  • любители футбола и рока;
  • пикаперы;
  • юные форексеры;
  • «поуехалы» с завышенным ЧСВ.

Программисты в этой стране глазами программистов:

  • неебически умные, тонкие душевно люди. Элита. Все остальные, за исключением братьев-инженеров, — офисный планктон, ну и просто быдло;
  • технические специалисты, блеать, а не какие-нибудь гуманитарии. Гуманитарии для них — низшая форма жизни, не достойная существования;
  • неплохо зарабатывающие, особенно если есть удаленный дополнительный заработок какой-нибудь;
  • хорошо знающие английский язык. В этой стране практически всё успешно просрали, поэтому основные достижения в ИТ приходятся на Пиндосию, ну и основные доки оттуда.

[править] Виды программистов

«

Прикладные программисты - паразиты на теле мирового сообщества. Копипастят примеры из доки, дают свои имена переменным, а после этого ещё требуют зарплаты!

»
Cat2

[править] Хеллоуворлдщик

Фуррипидарасы
нужно быть последним извращенцем,
чтобы посвятить жизнь кодерастии.
C++progs.jpg
Основная статья: Хеллоуворлдщик

Само понятие хеллоуворлдщика тесно связано с одной из классических задач программирования (которая частенько решается самой первой при освоении языка программирования) — вывода на экран сообщения «Hello, world!».

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

[править] Быдлокодер

Основная статья: Быдлокодер

Быдлокодер (англ. Code Monkey) — это человек, который считает рекурсию мемом башорга, не знает основных алгоритмов и тонкостей языка, на котором пишет, и поэтому использует неочевидные и абсурдные решения, а зачастую вообще использует исключительно готовые алгоритмы и программы, находя их на гитхабе и т. п.

[править] Программист

Программист — это то, что вырастет из быдлокодера и хеллоуворлдщика, если они RTFM. Хотя, как показывает практика, из быдлокодера и хеллоуворлдщика никого не вырастает (в отдельных случаях вырастают конфигурасты на , или эникейщики со знанием Visual Basic или PHP).

Погромист — уменьшительно-неуважительно названный программист.

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

[править] День сабжа

Такова жизнь программиста

Неофициально праздновался в России «каждый 256-й день года» (sic!). И так аж до 11.09.09, ибо Шмеле таки подписал указ, узаконив сей день как профессиональный праздник всея быдлокодеров. Отмечается 13 сентября, если год високосный — 12 сентября. Эпик вин, хотя, конечно же, всем как обычно.

«

Впервые идея празднования «Дня программиста» была обнародована главой издательского дома «Компьютерра» Дмитрием Мендрелюком 15 июля 1996 года.

»
Загнивающая о «Дне программиста им. Д. А. Медведева»

ТруЪ-кодеры отмечают 10 декабря — днюху первопроходчицы программинга Ады Лавлейс, написавшей первую прогу в ~1843 году (да-да, в XIX веке) для описанного ей же первого прототипа компьютера.

[править] Отношения с

[править] Непрограммистами

«

пасть заткни. тож мне ацкий айтишнег. вебпрогер блять! хоть бы на сях писал. в гробу в белых тапках я видала заниматься айти. я социальный антрополог между прочим. а таких криворуких боянщегоф как ты надо УБИВАТЬ УБИВАТЬ УБИВАТЬ РЖАВОЙ СЕКИРОЙ УЖОСА ВО ИМЯ ДОБРА. Выебается тут перед невинными детьми. Думаешь если кусок кода написал, то никто ниче не поймет? лошара ты.

»
— мнение эталонной ТП о сабже

[править] Коллегами

«

— Ты функциональщик! - прокричал Сергей на весь оупен-спейс-рум номер 14. Комната притихла в ожидании развязки. — Я видел, как ты вчера вечером каррировал и декаррировал прямо за рабочим компьютером! Неодобрительный ропот и возгласы удивления прокатились по комнате. Кто-то громким шепотом сказал “какой ужас, а я с ним за руку здоровался”. — Знаешь что, Сергей, — сказал Денис, вставая из-за рабочего стола, — любой нормальный мужчина, если у него всё в порядке, может позволить себе позаниматься функциональным программированием. Это естественно. Каждый хотя бы раз, да пробовал. Зачем только об этом кричать на всю комнату? Я же не кричу, что ты объектно-ориентированный! Девушки захихикали, кто-то снова громко пробормотал “ну надо же, а по нему и не скажешь”. Присутствовавший при этом Игорь Матвеевич сильнее вжался в кресло. Только бы никто не узнал про его процедурные наклонности!

»
— Суть явления

[править] Оценка трудоёмкости

Общение с начальством:

  • Невозможно в принципе — я не знаю как это сделать.
  • Невозможно — я знаю как, но мне лениво.
  • Сложно — придется прочитать документацию.
  • В принципе, реализуемо — я как раз вчера скачал из интернета библиотеку, которая решает поставленную задачу.
  • Элементарно — употребляется исключительно при оценке задач, стоящих перед другими программистами, независимо от степени их сложности.
  • Работает — компилируется.
  • Отлаживаю — не компилируется.
  • Прогоняю тестовые примеры — пытаюсь найти такой, на котором программа не вываливается.
  • Хорошо, я попытаюсь — давай-ка отъебись от меня.
  • Работал допоздна — играл по сети.
  • К десяти — после обеда.
  • После обеда — к 18:00.
  • Завтра — через неделю.
  • Неделя — месяц.
  • Месяц — полгода.
  • Год — никогда.
  • Точно — может быть.
  • Вероятно — вероятность равна 0,5.
  • Может быть — нет.
  • Нет — а кого вы еще найдёте за такие деньги?
  • Этого не было в спеках — иди на хуй.

Общение с заказчиком:

  • Невозможно в принципе — невозможно в принципе.
  • Сложно — элементарно, но предложенная сумма мне не нравится.
  • В принципе, реализуемо — я понятия не имею, как это сделать, но предложенная сумма мне нравится.
  • Элементарно — употребляется исключительно в ответ на вопрос, легко ли будет пользователю освоить интерфейс программы.
  • Ресурсоёмкая задача — мне лень заниматься оптимизацией.
  • Передовые информационные технологии — мне лень заниматься оптимизацией.
  • Большой объём работы — целый час качал библиотеку из интернета.
  • Минимальные требования — запустится, но работать не будет.
  • Дружественный интерфейс — поддерживается мышка.
  • Простой интерфейс — не поддерживается мышка.
  • Полная совместимость — никто не проверял, но чем чёрт не шутит?
  • Релиз — бета-версия.
  • Особенности — глюки.
  • Оптимизация — выкидывание того, что так и не удалось заставить работать.
  • Превосходит аналоги — занимает больше места.
  • Неделя — 1) месяц; 2) день.
  • Месяц — 1) полгода; 2) неделя.
  • Год — понятия не имею, сколько.

Общение с коллегой:

  • Ламеры — 1) все авторы программных продуктов, за исключением говорящего и собеседника; 2) то же, но включая собеседника.
  • Юзеры — низшая форма жизни, тупиковая ветвь эволюции.
  • Хакеры — 1) вершина эволюции, принадлежность к каковой говорящего неявно подразумевается; 2) гады, вчера приславшие мне очередной троян.
  • Глюкало — 1) софт; 2) железо.
  • Глюкодром — 1) железо; 2) софт.

[править] Как выжить

Сначала дадим ряд общих советов:

  • Не позиционировать себя как специалиста по всему на свете. Придерживаться одной платформы и технологии, приобрести глубокие теоретические знания в этой узкой области и сделать в ней какой-нибудь небольшой проект для себя (например, плагин для 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, его нужно изучать как минимум по три часа ежесуточно (до или после работы). Не забывайте и о том, что курсы при галерах - это шарлатанство: английскому там учат специально так, чтобы человек никогда не смог начать работать напрямую на американских клиентов, минуя галеры. Еще не забывайте о том, что работа в одной команде с русскоговорящими разработчиками будет вам сильно мешать изучать правильный American English, а также будет способствовать засорению вашей речи типичными ошибками. Поэтому старайтесь работать на таких проектах, где в команде русским языком будете владеть только вы. Так ваше обучение пойдет заметно быстрее: вы будете автоматически набираться нужных идиом от окружающих и автоматически совершенствовать свой American English параллельно вашей работе в течение всего 8-часового рабочего дня.
  • Никогда не колымить, не шабашить, не заниматься фрилансом. Соглашаться только на постоянную удаленную работу на конкретного иностранного заказчика фулл-тайм по контракту и без посредников. Заниматься только IT-проектами и никогда не соглашаться заниматься IT-задачками, даже если клиент гордо называет свою задачку словом "проект". Запомните: нормальный IT-проект - это когда есть полноценный менеджмент и конкретная методология разработки, когда есть распределенная по планете команда фулл-тайм-разработчиков, каждый из которых занимается строго своим делом, несет ответственность только за свой небольшой фрагмент проекта и митингует с командой раз в сутки в одно время, когда есть QA и DevOps, когда практикуется code review, когда используются баг-трекеры, JIRA, git или подобные вещи. Все остальное - это "задачки для программистов", а не проекты.
  • Не переезжать жить за границу, не переезжать жить в Москву или Петербург. Наиболее выгодный вариант для разработчика софта, удаленно работающего на иностранные компании фулл-тайм по контрактам на long-term-проектах, - это жить в одном из провинциальных городов РФ с населением от 500 000 до 1 млн человек, потому что там жизнь крайне дешевая во всех ее аспектах, а курс доллара США сейчас внушает радость и оптимизм.
  • Заниматься исключительно вашими должностными обязанностями и не позволять навешивать на себя чужих. Если ваша должность - Software Engineer или Senior Software Engineer, то вы должны и обязаны заниматься разработкой софта. Никакое ручное или полуавтоматизированное тестирование, никакое обучение джуниоров, никакое преподавание в вузе, никакое замещение тимлида в течение двух недель (на время которых вам, кстати, не повысят вашу почасовую ставку), никакое проведение семинаров, никакая уборка помещений, никакие погрузочно-разгрузочные работы не входят в список ваших обязанностей. Современный технический специалист не должен позволять управленцам садиться ему на шею и ездить на нем. Занимайтесь только разработкой софта, делайте свою работу хорошо, становитесь отличным техническим специалистом и безгранично развивайтесь в этом направлении. И не обучайте других людей, не делитесь ни с кем своими ценными знаниями и опытом, чтобы не оказывать негативного влияния на рынок труда.
  • Требовать давать вам только те задачи, на которых реально можно стремительно вырасти. Если вы - студент, то требуйте задач уровня миддла. Если вы - миддл, то требуйте задач уровня синиора. Если вы - синиор, то требуйте задач уровня архитектора. Если вы лично считаете, что в течение полугода успешно справлялись с большинством технических задач, то требуйте резкого повышения вашей з/п или уходите в другую компанию на другой проект. К сожалению, у многих программистов есть предубеждение, что если они будут полгода делать задачи своего уровня, то их повысят. Нет, не повысят. Наоборот, тимлиды и менеджеры будут годами использовать вас, как совхозную лошадь, загружая монотонной посредственной работой, и вся ваша карьера превратится в вялотекущий дауншифтинг с работающей бедностью и отсутствием крупных долларовых сбережений на период зрелости и старости.
  • Легко менять компании, если вы почувствовали, что на текущем месте работы развитие вас как технического специалиста идет недостаточно быстро. Никогда не привязывайтесь ни к работе, ни к работодателю, ни к коллективу. Выходите из зоны комфорта раз и навсегда. Вообще не привязывайтесь ни к людям, ни к работе. Также не тратьте ваше время на женщин, особенно, если они не понимают важности ваших профессиональных интересов, тормозят ваше развитие, расхищают ваше время, внимание, деньги и прочие ресурсы или требуют от вас наличия каких-либо социальных статусов, особого положения в обществе, смены профессии, перехода на управленческие должности и так далее.
  • Никогда не позволять тимлидам и менеджерам опускать вашу самооценку, используя методики манипуляции сознанием. Запомните: как минимум 2 раза в год должен проводиться пересмотр ваших скиллов и опыта, на котором вам должны повышать з/п. Ваша з/п каждые полгода всегда должна и обязана возрастать хотя бы потому, что в стране есть инфляция. Наиболее подлые манипуляции, используя которые, менеджер может опустить вас на performance review, загнобить вас и не повысить вашу з/п, приведены вот в этой статье. Внимательно ознакомьтесь с ней. Если вы заметили такие манипуляции, если менеджер пытается сделать вас изгоем или опущенным, то смело посылайте менеджера и уходите работать в другую компанию на ту же или большую з/п. А для этого нужно регулярно ходить на собеседования, постоянно находиться в поиске новой работы и всегда иметь пару запасных вариантов, куда можно уйти в любой момент. На новом месте работы не забывайте активно набираться опыта за счет работодателя и улучшать скиллы, чтобы всегда быть востребованным на едином глобальном рынке труда.
  • Как при устройстве на работу, так и при дальнейших обсуждениях вашей з/п в данной компании никогда не вестись на мошенничество в духе "Ваш опыт работы с ZeroMQ - всего 1 год, поэтому мы вам не можем платить много". В нашем чересчур динамичном мире одни технологии быстро сменяют другие, и сейчас требование опыта работы с конкретной крайне специфической библиотекой, измеряемое не в неделях и не в конкретных задачах, а в годах, - это очередная попытка обесценить работника. При этом сам бизнесмен зачастую любит нагло врать на сайте своей компании о том, что его компания - один из мировых лидеров в десятке отраслей и якобы имеет десятилетний опыт работы с ZeroMQ и сотнями прочих инструментов, библиотек и технологий, несмотря на то, что ни один из сотрудников не имеет опыта применения ZeroMQ более года, например.
  • Всегда двигаться вперед. Если вы работаете над каким-либо небольшим российско-американским продуктом, который является всего лишь компонентом, продаваемым другой компании для ее большого проекта в рамках B2B-модели, то напишите в ту компанию, объясните, что вы - старший или ведущий разработчик этого компонента, в совершенстве знающий этот компонент изнутри и хорошо разбирающийся в данном коде. Вам могут предложить уволиться из вашей мелкой компании и перейти работать в крупную компанию, чтобы заниматься там практически тем же самым, но за более адекватный годовой доход. Если повезет, то ваша новая компания вообще откажется сотрудничать с предыдущей и начнет сотрудничать исключительно с вами. На новом месте не останавливайтесь, анализируйте бизнес этой компании, разведывайте список ее крупных B2B-клиентов, чтобы выйти уже на них напрямую, повысив ваш годовой доход еще раз. Если вам внезапно написал какой-нибудь 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 ч в день. Программисты не осознают, что совокупные расходы на труд программистов (то есть на труд джуниоров, миддлов и синиоров) у 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, россиянина не возьмут, но таких проектов в США мало. И еще не забывайте о том, что удаленная работа на серьезных проектах по долгосрочным контрактам - это не только США, но еще и Канада, Австралия, Сингапур, Новая Зеландия и прочие страны. Мир очень большой, и российский программист, решивший удаленно работать без лишних посредников в виде галер и бодишопов на сложных, интересных и высокооплачиваемых проектах в распределенных по планете командах разработчиков, сможет найти себе проект по душе. http://labor-union.wikia.com/wiki/Lifehacks - там есть еще советы по теме.

[править] Программисты и собаки

Узреть 

Собака программиста на Haskell гадит, только если кому-то нужно удобрение.

В собаку любителя OCaml можно засунуть другую собаку и получить третью.

Собака программиста на F# очень похожа на собаку кодера OCaml с той лишь разницей, что выходит гулять из дома только через окно.

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

Собаку программиста на Perl иногда не узнает даже хозяин.

Собака программиста на Python отходит ровно на четыре шага от места, где нагадила.

Собака программиста на Ruby по словам продавцов гадит только там и тогда, где хозяином ожидается такое ее поведение.

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

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

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

Собака С++ ника чем-то похожа на собаку программиста C, только более разжиревшая и ленивая (зато имеет полезные фичи — к примеру вместо хвоста ей можно прикрутить еще одну голову или наоборот).

Призрак собаки программиста на COBOL пугает других собак по полнолуниям.

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

Собака программиста на ABAP чем-то похожа на собаку программиста на 1С, только говорит на немецком языке и стоит в 9000 раз дороже. А еще постоянно пугает других собак, так как папа у нее был пес программиста на Cobol.

Собака программиста на Java умеет дышать кислородом, водородом, хлором и даже аргоном, при этом периодически впадает в ступор и начинает с безумными глазами сгребать мусор в помещении.

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

Собака программиста на Objective C чем-то похожа не собаку программиста на C, при этом имеет квадратную голову, глаза и хвост в виде символов @, а ноги и уши в виде квадратных скобок. Ранее питалась чистым углеродом, сейчас питается только какао.

Собака программиста на Scala родилась в будке собаки программиста на Java от связи питомцев программистов на OCaml и Smalltalk.

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

Собака программиста на Brainfuck совсем не похожа на собаку, к тому же страдает мазохизмом.

Собака программиста на Flash/ActionScript чем-то похожа на собаку программиста на Javascript, только очень не дружит с владельцем мобильной версии собаки на Objective C. Умеет показывать видео и играть с хозяином, больше ни на что не способна.

Собака программиста на Delphi, как и собака программиcта на C#, живёт только за окном в помещении с сероводородом (хотя её одичавшие версии могут дышать всем тем, чем дышит собака на Java, а мобильные версии — всем тем, что и собака на Objective C). Внешне выглядит как собранная из отдельных компонентов, внутри чем-то напоминает собаку программиста на C (если разозлить, то норовит откусить если не ногу, то руку владельца).

Собака программиста на LOLCODE напоминает нян-кэта, но ничего не умеет. Имеет размер мозгов такой же, как и у собаки C++ника.

Собака программиста на Assembler может сбрасывать пароли биоса. Лает словами eax, edx и прч.

Собака программиста на JPHPСОБАКА !!!!!1111!

Собака программиста на MS SQL хорошо ищет палку, но только если хозяин бросил палку не в собаку.

Собака программиста на бинарном коде похожа на труЪ собаку, но стоит чуть-чуть ошибиться — и у тебя инопланетный волкожук из 6 цивы

Собака АСУТП-шника гадит без передыху в один и тот же угол. Если её прибить, то через две секунды появится другая такая же и продолжит гадить.


[править] Галерея

[править] Видео

b
Сортировка методом выборки
b
Сортировка методом Шелла
b
Пузырьковая сортировка
b
Сортировка методом вставки
b
Быстрая сортировка
b
Сортировка методом слияния
b
b
Немного позитива


[править] См. также

[править] Ссылки

[править] Примечания

  1. high-level программеры в узкоспециальном смысле, разрабатывающие основы строения систем; помимо хардкорного скила кодинга, полностью осилили Гради Буча и Банду Четырёх, умеют проектировать взаимосвязь кодируемого софта, общаться с людьми и организовывать низшее быдло


EWJ welldone cows 2.jpg Программист — это такое быдло такой типаж.
Обычные  SJWStraight EdgeVIPБлондинкаБомжБуржуйБыдло (теории) • БюджетникГастарбайтерГламурное кисоГопникДауншифтерЖлобЖурнализдИнженерКозёл отпущенияКолхозникЛитературный негрЛохМалолетний долбоёбМаменькин сынокМедикМентМетробабкаМудакМыдлоНародные фрикиНастоящий мужыкНищебродНе такой, как всеНеудачникНовый русскийОфисный планктонОхранникПирсингованное быдлоПозёрПолитрукПопрошайкиРазведёнка с прицепомРыцарьСказочный долбоёбСоседиСтудент (Институтка) • Турист (Руссо туристо) • ФанатФеминисткаФутбольный хулиганЦелевая аудиторияЧмоШахтёрШкольникШовинистЮрист
Небыдло  Ванильная пиздаГуманитарийИндиИнтеллигент/ИнтеллектуалКулинарный снобМизантропМоралфагНебыдлоНердНигилистПросветленецПсихологСумрачный генийТехническая интеллигенцияТехнофашистТупая пиздаХиккиХиппиЭльфы
На дороге  Автомобилист (Синее ведёрко) • АвтостопщикБайкерВелосипедистДальнобойщикЖенщина за рулемКрасномордыйПешеходСкейтерСтритрейсерТаксист
От мира музыки  DJАудиофилБарабанщикБардБасистВокалистГитарастГовнарьГотКлабберПанкПедовкаРиветхэдСкаСкинхэдРэперХеркаХиппиЭмоМеталистРастаман
Политизированные  АнархистАнтифашистБандеровецВатникВДВшникЗмагарИмперецКазакКоммунякаКремлядьЛиберастМонархистНацболОппозиционерПоцреотПСППРезуноидСовокФошыстЧиновникШабесгой
Расовые  Белый человекБлагородный дикарьГойЕврейский расовый жидКацапКубаноидКурдМоскальНастоящий индеецНиграНохчаПиндосПолякРусскийРеднекТатаринУзкоглазыйУкрУнтерменшХохолЧукчаЧурка
IT  АдминБздунБыдлодизайнер/ДизайнерБыдлокодер/ПрограммистГеймер (ЗадротКазуалКемперЧитер) • ДаунгрейдерКрасноглазикКулхацкер/ХакерЛамерЛинуксоидНубОверклокерЮзверьЯблочник
В интернетах  Attention whore (CamwhoreDrawhoreGrammar nazi) • IM-быдлоАнонимусБелый рыцарь интернетовБитардВоин ПафосаДиванные войскаКамрадКармодрочерКуклоёбЛуркоёбМедоносМодераторНачинающий писательСмайлофагСоздатель интернетовСпамерТролльТупые свитчерыФеечкаФуаграстФидорасХомячокШмуклер
Японизированные  АнимешникБыдло-кунВапКаваистКуклоёбыНарутофагОтакуОЯШЯойщица
Увлечённые  Британские учёныеВеганГикДачникДиггерДраконофагКопирастЛюбитель волковМаньякМассовщикМобилодрочерРадиолюбительРапторРеконструкторРолевикСталкерСурвивалистТолкинистТранспортник (АвтобусникЖелезнодорожный маньякМетрофанатТрамвайщик) • ТурникменыФотоонанистФрикЧёрные археологи
В сексе  Альфа-самецАсексуалБревноГейДевственникДрочерЛоли/JailbaitМетросексуалНевестаНудистОвуляшкаПикаперПроституткаТрапФурфагЧайлдфриШлюха
Под веществами  АлкоголикБарыгаНаркоманОбъебосПсихонавтУпоротыйОмич-полуебок