Как преодолеть кризис начинающего специалиста?
================================================

 Проблема такая.  

Сейчас я студент, на постоянную работу в нынешние времена устроиться не так просто *студенту с улицы*, работодатели предлагают проектную занятость на 1-3 месяца.   

За полгода я уже на третьем рабочем месте.  

Замечаю закономерность.  

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

Как только получаю рабочее место, первые недели три мне также интересно работать, но дальше начинается нечто. Работа скатывается в галеру, я начинаю замечать всё больше недостатков. Нигде не требуется писать самому: нужно переиначить готовые решения с гитхаба. Копаться в чужом коде - удовольствие ниже среднего, учитывая то, какую документацию многие пишут. Приходится копаться подолгу, тюнить параметры, додумывать. На это уходит поразительно много времени, на код уже после рабочего дня смотреть не хочется; самообразование таким образом постепенно отметается. Писать свои решения (я работаю в DS) - неоправданно долго, не думаю, что какой-то работодатель на это согласится.   

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

Предметная область, в которой работаю, при этом нравится.  

Как преодолеть такой кризис?  

Как на самом деле работают программисты? 

 Да, программист - не так романтично на деле, как кажется)  

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

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

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

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

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

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

 А кто сказал, что будет легко?  
  
**spoiler**Даже если вы занимаетесь bleeding edge разработкой в универах или корпорациях, то рутина будет занимать 90% вашей работы  
  

А что еще хуже 60% всего рабочего времени вы будете заняты согласованиями и совещаниями и не будете писать код вообще  
  

Потому, если вас не хватает сейчас, то стоит подумать, а нужно ли оно вам вообще 

 99% программистов 90% времени занимаются отловом багов в махровом легайси или формошлёпством. Есть только один способ попасть в 1% настоящих творцов - быть творцом, способным написать что-нибудь поистине выдающееся. 

> Как преодолеть такой кризис?

  

1. Уволиться, пойти поработать кассиром/грузчиком/официантом/таксистом (но надо иметь свой бизнес);  

2. Понять, что даже писать CRUD не так утомительно и скучно;  

3. Радоваться тому, что есть.  
  

> Как на самом деле работают программисты?

  

90% времени думают, 10% времени пишут.   
  

А ещё, говорят, ИТ не сводится к одному ДС. Можно попробовать что-то другое. 

> Работа скатывается в галеру,

  

Отключайте внутреннего родителя и старайтесь получать удовольствие от процесса.  
  

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

  

Это по вашей неопытности.   
  

>  самообразование таким образом постепенно отметается.

  

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

> Писать свои решения (я работаю в DS) - неоправданно долго, не думаю, что какой-то работодатель на это согласится.   
> 
> Спрашивал у знакомых: пользоваться готовыми решениями - это норма для индустрии.

  

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

> Как преодолеть такой кризис?

  

Расти. 

 Это и есть самая настоящая работа программиста)  

Можете попытаться сменить место работы, но на новом будет примерно тоже самое.   

Смиритесь или попробуйте себя в других профессиях.  
  

Но если есть на что жить помимо зарплаты, можете попробовать заняться своими проектами. Там вы будете хозяином положения, ощутите себя творцом. Но выстрелит ли хотя бы один из них - это вопрос... 

 Да, проблема есть, НО вы не туда смотрите. У вас типичная проблема новичка, она в иной плоскости. Вы слишком самоуверенны и считаете что много знаете/умеете/достойны\_большего. В начале кажется многое "не нужным" и "глупым". Хочется не использовать фреймворк, а писать самому. Хочется написать очередной велосипед и свою ОС.  

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

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

 Когда я начинал, у меня тоже был стресс от несоответствия ожиданий действительности. Ведь пока читаешь книги, кажется, что разработка ПО — это что-то идеальное, строительство безупречных воздушных замков. А в реальности каждый день приходится иметь дело с костылями, big ball of mud, и, даже, ужас какой, самому писать костыли.  
  

Надо понять, что жизнь — это жизнь. В книгах и кино всегда лишь идеализированная однобокая картина жизни.  
  

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

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

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

 Добро пожаловать в реальный мир. Это и есть она - работа программистом. 

> Проблема такая.  
> 
> Сейчас я студент, на постоянную работу в нынешние времена устроиться не так просто студенту с улицы, работодатели предлагают проектную занятость на 1-3 месяца. 

  
  

У вас сессии.  

Работодателю не выгодно сажать вас на более серьезные проекты.  
  

> За полгода я уже на третьем рабочем месте.  
> 

  

А это плохой признак.  

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

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

  

Вы не усидчивы.  

Работа программиста требует вдумчиво разбираться. Ежедневно.   
  

>  Нигде не требуется писать самому: нужно переиначить готовые решения с гитхаба. Копаться в чужом коде - удовольствие ниже среднего, учитывая то, какую документацию многие пишут. Приходится копаться подолгу, тюнить параметры, додумывать. На это уходит поразительно много времени, на код уже после рабочего дня смотреть не хочется; самообразование таким образом постепенно отметается. Писать свои решения (я работаю в DS) - неоправданно долго, не думаю, что какой-то работодатель на это согласится. 

  
  

Даже если он и согласится.  

Вы же не программист еще. Вы только заготовка программиста.   

За вами еще и переделывать придется.  
  

> Спрашивал у знакомых: пользоваться готовыми решениями - это норма для индустрии. 

  

Вас дезинформировали.  

В индустрии огромное количество готового.  

Но и самому писать нужно много.  

Другое дело, что 100% писать самому не рационально.  
  

> Но никакого кайфа от программирования в таком случае я не испытываю, так как больше прокачиваю навыки владения bash, а не ООП-парадигму, синтаксис питона и алгоритмы DS.

  
  

Вам никто не даст писать свое, пока вы не научитесь на чужом.  

Это нормально.  

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

>   
> 
> Как преодолеть такой кризис?  
> 
> Как на самом деле работают программисты?

  

Учиться, работать, развиваться.  

Через пару лет будет даже слишком много самостоятельности. 

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

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

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

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

Я думаю это синдром миддл-разраба, перерастаешь со временем. 

 А что вы умеете? Есть у вас пул знаний, который работодатель может с пользой использовать? Если вы прекрасны в bash, но он не нужен, чего вы ожидаете? Идите в высокотехнологичный проект, вот только опыта и знаний у вас нет. Работодателю не нужно всё что вы знаете, ему нужно чтобы сейчас было сделано то, что понадобилось, НО никто не говорит, что через месяц bash не пригодится. Если компания небольшая, то такого не избежать. Потому что нельзя взять в компанию из 5 человек: архитектора, разработчика БД, сис.админа, тим лида, бэкенд-джуниора, бэкенд-миддла, бэкенд-сеньора, дизайнера, верстальщика, js-джуниора и т.д.  

Я ненавижу делать crud-админки и прикручивать шаблоны, это просто, но это так муторно, так скучно. В голове-то уже всё готово, но надо. Да, я могу больше, но проекту в данный момент это не нужно.  

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

И еще, а вы уверены, что вы такой крутой настолько, что вам скучно и у вас кризис? Я вот лет 5-7 назад мог движок сайта за неделю сделать и считал, что я неимоверно крут. Сейчас я понимаю, что нихрена это был не движок и недели мне теперь точно не хватит.  

Если нет сил на саморазвитие, то попробуйте так: работа остается на работе; не перерабатывайте; используйте перерывы, чтобы мозг отдыхал, а не пойти на балкончик и продолжить думать там;изучение технологий для себя, а не для проекта (если можно прикрутить это хорошо, но это бонус, а не цель); найдите новые технологии и поиграйтесь с ними(я так игрался с go и нейросетями, это совсем не мои сферы отчего было легче, потому что новое и каждый, даже маленький успех, радует) и не it-хобби(у меня кубик Рубика и каллиграфия, они всегда на столе и я могу отвлечься на пару минут). 

 С нуля нечасто приходится делать что-то, это нормально. Обычно используются готовые фреймворки какие-то, которые приходится изучать, и создаются новые компоненты на их основе. Я сам не знаком с работой в DS (это Data Science или что-то другое?), может там всё по-другому.   
  

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

 Работодатели не любят "с нуля" и им не интересно, что там программист хочет прокачать или развиться. Точнее интересно, но если этим он будет заниматься в свое личное время. А на работе приходится копаться в легаси проектах, которые уже покинуты своими "творцами". Я работал, например, над проектом, который покинуло по меньшей мере 5 "архитекторов", на код было больно смотреть, но ничего, и из этого получилось извлечь много полезного. Читать код приходится намного чаще, чем писать свой, и это обычное дело. 

>  Нигде не требуется писать самому: нужно переиначить готовые решения с гитхаба. 

  
  

Почему такая нелюбовь к готовым решениям? Я люблю готовые решения.  

Если есть готовое решение и оно подходит под задачу, то это вообще отлично. Зачем писать свое? Это только как учебная задача полезно, а на практике скорее вредно.  
  

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

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

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

На новых местах работы меня хватало обычно на 3 месяца, потом все превращалось в рутину.  
  

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

В любом проекте всегда 80-90% рутины, каких-то тупых и скучных задач. Нельзя сделать ни один проект не выполнив эту работу. 

 Количество мыслетоплива которое запасает организм на каждый день строго ограничено, поэтому весьма наивно полагать, что получится фигачить с раннего утра и до заката и еще сил на pet-project останется. При этом еще очень желательно спать регулярно, качественно и достаточно. А чтобы спать качественно необходимо получать достаточный уровень инсоляции (а с этим уже все не так радужно).  
  

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

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

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

ЗЫ: Про мыслетопливо Макс Дорофеев интересно рассказывает. 

 я сам не работаю в DS, но у меня в команде есть коллеги которые заняты в этом деле. На мой взгляд это отдельная субкультура специалистов. Весьма интересные люди и имеют своей отличный взгляд на мир и понятия. Это было лирическое отступление )) Хочу сказать, что когда ты начинаешь, тебе дают возможность копаться в чужом более авторитетном коде и ты занимаешься просто его поддержкой. Когда пойдешь дальше тебе предоставят возможность заниматься его адаптацией к вашим задачам и частичной модификации. Только спустя время когда ты достигнешь определенного авторитета твоих коллег и начнешь качать признание и заслуживать внимание, то у тебя появится возможность писать свой код...  

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

Успеха, все у вас получится )))