Программист - это звучит гордо. Часть вторая, только для программистов

Сообщество - О жизни

— Вчера долго объяснял соседу, что работаю программистом. — Удалось? — Короче, сошлись на том, что чиню телевизоры и холодильники.

Легкость экспериментов

В чем преимущество профессии Программист перед другими? Ответ на этот вопрос находится в области эзотерики. Фактически программист вдыхает в компьютер душу. Без программы, компьютерное обеспечение - ничего не стоящие железки, а когда установили программы, которые к компьютерному железу не прибавили ни одного грамма, и при этом появились весьма интересные картинки на экране, компьютер оживает.

В далеком 19 веке Мендель ставил генетические эксперименты над горохом, и каждый цикл созревания семян приходилось ждать около полугода. Последователи экспериментатора ускорили данный цикл используя мух дрозофил, при этом новое поколение стало появляться гораздо быстрее, немногим более чем через сутки. Тем самым увеличилась скорость экспериментов и соответственно повысилась точность результатов, появилась возможность сделать новые наблюдения.

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

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

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

Алгоритмы

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

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

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

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

Проблема, конечно, быстро вскроется. Останется вопрос: Что делать?

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

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

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

Сроки начала разработки

Это страшное слово ДЕДЛАЙН (deadline). Что оно вообще обозначает? Только одно, что раньше ничего сделано не будет. К этому сроку еще вопрос, может и будет работать, хотя и плохо, но будет, а вот раньше точно ничего не работает.

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

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

Размышление над задачей в процессе разработки дает возможность подумать несколько раз, и усовершенствовать уже написанные алгоритмы.

Компьютерное оснащение

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

Аргументов в пользу этого много. У меня была история, когда вышел из строя основной сервер, я ввел в эксплуатацию свой рабочий компьютер, который почти не уступал ему в производительности, объемах ОЗУ и накопителей.

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

Игры

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

Главное - никогда не играйте при работодателе или начальнике в рабочее время! Во время игры не проявляйте бурные эмоции даже в нерабочее время. Вообще, на работе нужно быть сдержанным, кроме того, я уже давно не вижу офисов без камер наблюдения. За нами непрерывно следят, это нужно держать в голове.

Работа в команде

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

Разработка программного обеспечения – это коллективная задача. Да, программист играет в этом ключевую роль, но зазнаваться не стоит. Гениально написанная программа без внедрения не станет чем-то полезным, а останется просто кодом.

Общение в коллективе

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

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

Устойчивые методы общения с людьми используются в социуме постоянно, а такие теории как НЛП лишь систематизируют знания и в процессе получения теоретических знаний часто удается сделать свои наблюдения на практике, увидеть и создать свою систему классификации человеческих особей.

Эксплуатация человека человеком

Так как у программиста огромный запас полезных навыков и знаний, даже не только в области программирования, то окружающие пытаются использовать их для своей пользы. Плохого в этом ничего нет, но я встречался с проблемой, что такая помощь односторонняя. Люди почему-то считают, что для программиста это единственное удовольствие в жизни, копаться в компьютерах в поисках неисправностей, как будто миссия в жизни у программистов должна быть: исправление всех багов и неисправностей в компьютерах.

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

Зависть

Распространенное, деструктивное чувство. Чаще возникает даже не к обладателю какой-нибудь модно-дорогой вещи, а к обладателю полезного навыка.

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

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

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

Работодатели

Разделим наших благодетелей, как они себя считают, на категории:

  1. Франчайзеры. Так как они профессионалы на этом рынке, то будут применять разнообразные приемы для снижения зарплаты программистов и зарабатывать у них много, особенно на начальных этапах своей карьеры, практически невозможно. Но можно приобрести огромный опыт. Кроме того, так как программисты у этого вида работодателя создают основную прибыль предприятия, то отношение к нашей братии у них немного лучше, чем бывает у других видов работодателей.
  2. Конечные заказчики. Продать себя им дорого, вполне вероятно, но они за это будут отыгрываться. Рабочее место похуже, компьютер подешевле, задачки посложнее. Программист у них обслуживающий персонал, да, делает важное дело, но прямой прибыли не приносит. Любой косяк будет рассматриваться как преступление, сроки работы всегда будут в глазах работодателя растянуты, технического задания не дождешься. При наличии целого отдела, все будет сильно зависеть от его начальника. Они бывают двух видов: на хорошем счету у начальства и на плохом счету у начальства. Это будет сразу заметно, по обстановке в IT отделе, и на программистах это сильно отражается.
  3. Фриланс. Хороший способ продавать свои знания и навыки. Быстро приобретается опыт, денег немало можно заработать. Только нужно решить одну дилемму: когда программируешь не ищешь клиентов, когда ищешь клиентов не программируешь.

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

Удаленная работа

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

Работодатели не лохи и конечно будут контролировать вашу доступность и будут требовать четкого соблюдения сроков разработки. Зато не будет побочных дел, в виде субботника на территории или помощи в разгрузке товара.

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

Эникейщик

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

Резюме программиста

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

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

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

Что мы хотим от работодателя? Высокая, своевременная оплата труда, социальная защищенность, комфортное рабочее место, уважение.

Где жить?

Лучше в центре мегаполиса. Это обеспечит качественные коммуникации (интернет), жилье при этом дорогое, но это не страшно, мы же хорошо зарабатываем. В мегаполисе большой рынок труда для программистов. При движении от центра города к окраинам, в часы пик, не попадаешь в пробку, а двигаешься против основного потока.

Как развлекаться

Только работать не получится, нужно уметь развлечься. Главное, чтоб развлечение заставляло двигаться. Работа у нас сидячая и нужно соблюдать баланс и поддерживать свое тело в тонусе.

Много программировать не следует. Состояние «поток» приятное, но приводит к эмоциональному выгоранию. Часа четыре в день не приносят неприятностей, но иногда приходится выкладываться и программировать по 8-10 часов в сутки, тогда отдых другой, физическая нагрузка, длительный сон. Но так долго не протянуть, это временный режим.

Тенденции развития

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

За рубежом

Там 1С Предприятие не пользуется популярностью. И если вам очень нравятся языки C*, Ruby, Pascal и другие, то вам за бугор. Там специалистов ценят и спрос на них огромный. Жаль, что не очень получается работать удаленно на забугорную компанию. Там высокие зарплаты, а у нас низкие расходы, получился бы хороший профит.

Как стать программистом?

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

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

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

Поэтому, мой ответ на вопрос: как стать программистом? НИКАК. Либо жизнь сама принесет на эту стезю, и ничего с этим поделать не получится. Либо потратите время, усилия, нервы, деньги и все равно потом бросите это занятие.

См. также

Комментарии
1. Петр (peterxx) 17 23.04.18 14:40 Сейчас в теме
"но при наличии цикла внутри цикла, время обработки возрастает не линейно, а по экспоненте, "
Нет, в этом случае, время возрастает полиномиально.

"Люди почему-то считают, что для программиста это единственное удовольствие в жизни, копаться в компьютерах в поисках неисправностей"
Тут согласен, они гады пытаются все время подсунуть что-нибудь, как правило, компьютерный хлам, и обижаются когда ты "встаешь на крыло" - "ну ты же специалист, типа".
2. Piotr (Tolpinski) 55 23.04.18 15:18 Сейчас в теме
Много программировать не следует. Состояние «поток» приятное, но приводит к эмоциональному выгоранию. Часа четыре в день не приносят неприятностей, но иногда приходится выкладываться и программировать по 8-10
С нового года каждый день в таком режиме, плюс и на выходных. На работу уже как зомби.
И все спасибо 1С и нашим законотворцам, одни от старых конф отказываются, другие все новые налоги вводят.
3. Сергей Дашков (serega_sun) 25.04.18 10:24 Сейчас в теме
Ну если комп программиста такой же как сервер, то это очень маленькое предприятие...
Yakud3a; корум; IgorS; +3 Ответить
4. Евгений Бочкарев (Ликреонский) 135 25.04.18 11:01 Сейчас в теме
(3)Я предполагаю, что на большом предприятии есть резервные сервера.
5. Виктор Александров (docerman) 43 26.04.18 14:22 Сейчас в теме
Привлекательные условия труда и зарплата не компенсируют интеллектуальные нагрузки и стрессы от этой работы.

Это точно.
6. Петр Петров (jONES1979) 27.04.18 14:25 Сейчас в теме
Скучно, если честно.
А для чего вообще была статья?
7. Евгений Бочкарев (Ликреонский) 135 27.04.18 15:00 Сейчас в теме
(6)А зачем эти вопросы?
jONES1979; +1 Ответить
Оставьте свое сообщение