Почему чувствую себя бесполезным и ни на что не способным на первой работе по специальности?
==============================================================================================

 Привет, нужен совет от взрослых и опытных дядь :D  
  

В середине июля пошёл на стажировку в одну компанию, которая занимается интеграциями в уже готовый продукт (автоматизация ресторанных процессов). Вакансия называлась *"Разработчик C#/.NET"*. До этого по специальности не работал, только лабы и курсачи на заказ делал. Проблема в том, что я вообще не чувствую какого то удовольствия от этой работы. В первые дни я разбирался с API программы, для написания собственных модулей для интеграции. В течении дня могли переключить на другое задание, не связанное с программированием (скорее с тех.поддержкой ), а потом говорить почему я то не сделал. Задания, которые мне давали, описывались двумя словами ( старший разраб почему то думал, что я понимаю все сокращения и используемые технологии, которые ужились в команде разработчиков ). Каждое задание мне приходилось переспрашивать по 5 раз, а если вскрывался подводный камень, о котором мне не говорили, то ещё по 5 раз.   
  

Знаний для позиции Junior C# с головой, но я элементарно не справлялся с задачами, которые мне давали, потому что я просто не знал что и как устроено, работает, откуда обращается и где вызывается, от чего зависит и тп. Получается, что каждое задание - это постоянные вопросы, непонимание, моральное давление. За всё время я лишь подтянул знания о git'е и не более.  
  
*Сложно, наверное, понять суть вопроса, но: можно ли назвать позицию "Разработчик C#/.NET", если за месяц стажировки я написал максимум 10 строчек ?* После своего первого опыта чувствую себя ни на что неспособным в программировании. Со стажировки ушёл. 

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

Если написание кода само по себе Вам не приносит удовольствия - лучше в ИТ не идти. Да, байки о гигантских зарплатах основаны на реальности. Да, специалистов не хватает. Но между Вами и этим всем стоит огромная **ТОЛПА** полуграмотных "формошлепов", ремесленников, способных только на черную работу. Вам придется сначала стать одним из них, а потом подняться выше их - если сможете конечно.  

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

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

И самое главное - не отчаиваться :) 

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

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

Задайте себе вопросы:  
  

- что я могу сделать в следующий раз, чтобы получить более подробную постановку задачи сразу? Уточнить неизвестные термины?  
  

- как я могу тебе извлечь нужную информацию из кода и как IDE и отладчик поможет мне в этом?  
  

- где есть документация и как ее найти?   
  

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

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

- был ли я понятен для пользователей когда занимался поддержкой?  
  

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

Даже если вы ни на что не можете повлиять, ответ себе на подобные вопросы сделает вас лучшим программистом 

>  В течении дня могли переключить на другое задание, не связанное с программированием (скорее с тех.поддержкой ), а потом говорить почему я то не сделал. 

  

1) Косяк в организации работ на фирме.  

2) С вами не должны нянчиться, про все детали как вы работаете не должны помнить. Если у вас проблема - общайтесь с руководителем непосредственным.  
  

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

  

И кто за вас будет задавать вопросы?  

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

> Каждое задание мне приходилось переспрашивать по 5 раз, а если вскрывался подводный камень, о котором мне не говорили, то ещё по 5 раз.   
> 

  

Абсолютно нормально для начинающего.  

Более того - абсолютно нормально даже для сеньора, который только входит в новый для себя проект.  
  
**Да и вообще - подводные камни - это "наше все" в программировании.**  
  

> Знаний для позиции Junior C# с головой

  
**Нет. Вы не джун еще. Вы всего лишь "трейни".**  
  

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

  

Один из типовых навыков программиста - это все выяснять.  

Постоянно, каждодневно.  

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

> Получается, что каждое задание - это постоянные вопросы, непонимание, моральное давление

  
  

А вы часом не перехвалили себя в резюме?  
  

От вас поди ожидали большей квалификации.  
  

>  За всё время я лишь подтянул знания о git'е и не более.  
> 

  
  

Вас никто не будет учить, кроме вас самого.  
  

> можно ли назвать позицию "Разработчик C#/.NET", если за месяц стажировки я написал максимум 10 строчек ? 

  

Вполне.  

Дело трейни - разбираться, вникать. Тем более первый месяц.  

И вообще производительность труда программиста отнюдь не в количестве строк меряется. Я с месяц назад за исправление значения 2 констант взял 6 000 рублей за свою работу.  
  

> После своего первого опыта чувствую себя ни на что неспособным в программировании. Со стажировки ушёл.

  
  

Вход в профессию программиста тяжел.  

Вход и вникание на новом месте работы тоже не прост. Даже если вы уже сложившийся программист.  
  

Большинство программистов, кстати, предпочитают не вникать.  

А писать свои велосипеды.  

В частности потому так очень популярен фриланс "в одного".  
  

Не нашел ничего такого эдакого в вашем описание.  
**Все норм. Примерно так и должно быть**  
  

Из реальных косяков фирмы:  

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

Все остальное:  
**Исключительно ваши косяки.**  
  

Вы напрасно слиняли.  

Как показывает моя практика - **2 недели нужно только для первичного вникания.**  

То есть когда ты еще ничего не понимаешь по сути, но хоть что то полезное делать можешь. 2 недели только на это.  
  

Есть 2 пути программиста:  
  

1) Индивидуализм. Фриланс. Говносайты, говноприложения. Работа в не ИТ-шных фирмах или в мелких фирмочках где не поставлен процесс и по сути делаешь все один. Плохо тем, что не от кого получить обратную связь не с кем учиться, нет опытных коллег рядом. Всю жизнь будешь делать говносайты и говноприложения. Ну чуть чуть более цивильно. И все. Это предел.  
  

2) Если хотите все же заниматься в жизни чем посложнее и поинтереснее и поденежнее - учиться в большой конторе с коллегами. Где поставлен процесс. Где твою работу контролируют. Да придется ковыряться в куче чужого года, в куче легаси. Это нормально. Для высококвалифицированного программиста - **чужой код и взаимодействие с коллегами крайне важно.** Технически серьезные проекты делаются только большими группами программистов. 

 Люблю сейчас смотреть на такие ситуации. Не злорадно :), конечно. Через все это проходил.  
  

Я тебе так скажу, Очень мало где видел, чтобы все "по полочкам раскладывали, пережевывали и в рот ложили". Но с первой работой повезло больше. Там как раз простая контора была, но был очень хороший шеф-технарь. Он все понял и уделял время. Хоть потом понял, что я вообще нулевой пришел. В отличии от тебя. Нужно подстраиваться под коллектив. Делать мало, но делать. Потом будешь делать чуть больше с большей увереностью. В начале я вообще думал, что только время у разработчиков забираю и ничего не делаю. Делал рутину за них. Тебе должно быть гораздо проще. Всего-то несколько месяцев поработал и уже расстроился. Я мучился больше года, чтобы хоть какую-то уверенность в знаниях получить. 

 Присоединяюсь к [heartdevil](http://toster.ru/user/heartdevil) и тоже от себя добавлю  
  

По личному опыту. Этапы понимания, что ты полезен на текущей работе:   

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

2) Потом две недели помогал тех. поддержке, чтобы понять, с какими проблемами сталкиваются пользователи и опять же немного разобраться в терминологии. За это время поменял пару строк в коде, чтобы просто понять, как команда работает, как оформляются PR, как устроена CI/CD, как проходят code-review.  

3) В следующий месяц, дали написать пару юнит-тестов, вместе с человеком, который это уже умеет делать.   

4) Дальше пошли уже взрослые задачи, которые я еще год делал с адской натугой и скрипом. И только через год, стало видно, что польза все же есть.  

5) Почувствовал себя более-менее полезным. Через год. Благодаря тому что помогал тех. поддержке, писал тесты, наносил правки различной степени тяжести, и т.д.   
  

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

P.S. В первый год работы тоже хотел задать такой вопрос здесь, но постеснялся. Наверное зря.) 

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

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

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

Один из вариантов разговорить - это прийти и рассказать своё видение. Люди любят поправлять, вносить коррективы, добавлять деталей. :) Это называется посплетничать. :)  
  

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

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

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

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

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

Внезапно выясняется, что во всех этих процессах софтскиллы рулят и решают.  
  

В общем мой совет - качай всё, особенно софтскиллы и отставить кукситься.   
  

ПыСы: Большинство сотрудников в компаниях, где ты будешь обитать, будут считать тебя то ли кудесником, то ли магом, то ли телепатом, то ли всё вместе. Каждый будет искренне убежден, что ты знаешь все то же самое, что знает он и плюс еще кучу всего, чего они не знают, поэтому будут грузить всем чем угодно. Так же будут искренне верить, что ты обладаешь доступом в пятое измерение, что у тебя времени вагон (т.е. примерно 48 часов в сутках, а может и 72, кто тебя знает то...) и ты многозадачный. В общем будут проявлять все мыслимые и немыслимые формы неадеквата. Это нормально. Через это нужно пройти, научиться во всем это плавать, как рыба в воде. Это здорово прокачивает тебя как личность, если ты настроен на подобный прогресс.  
  

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

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

Если все по-прежнему не устраивает в течение месяца-двух, то лучше менять работу. 

 1 - без обид - вопрос и по духу (100%) и по сути (100%) к психотерапевту  

2 - вам точно нравится программирование? вообще? если не особо - меняйте профессию! (на что - это уж как то сами... или с психотерапевтом)  
  

ps чисто по человечески - "вступили в де;%о"... бывает... при чем со многими... вы перенесите внимание на то что ВЫ ХОТИТЕ... и двигайтесь к этому (с доктором или без, ну право, без обид, бывает что и доктор здорово поможет).. а в данном де;%е - не задерживайтесь... ни минуты  
  

удачи! 

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

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

 Да полная фигня, пошли в ЖОПУ,! сразу уходи, если еще раз наткнёшься на такое. Я конечно не могу сказать про Россию, но в Израиле всегда к новичкам относятся предупредительно и хорошо, не зависимо от уровня, стараются помочь, поддержать, это вообще best practice в цивилизованном IT. Новичка к кому то прикрепляют обычно, делают вводный курс, дают какую то лёгкую задачу на несколько трик кода, и время сколько попросит, потом код ревью, работа над ошибками, и новая задача, и так по кругу с усложнением в глубь и ширь. А вам, извините, говноконтора попалась. 

 Не переживайте! Многие на 2 курсе живут за счет родителей и вообще до получения диплома не парятся о своем трудоустройстве. А вы устроились куда-то на стажировку, что уже заслуживает уважения.  

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

 Смените работу.