Заканчивается 3 год и я все еще junior software developer. Собственно, в этом слове junior вся соль проблемы.
Прихожу джуном, за 3 месяца получаю знания достаточные для выполнения определенного круга задач и в общем то все. Делаешь однообразные задачи, а толку нет. Чувство, что зря протираю штаны не покидает ни на минуту. Прыгать с места на место каждые 3 месяца тоже желания нет. А угадать, что же предлагает работодатель очень сложно. На собеседованиях обещают интересные проекты, а по факту все не так.
Хочу выработать какую то стратегию, чтобы разорвать этот порочный круг, поэтому сижу анализирую свой скромный опыт. В дальнейших рассуждениях, постараюсь максимально абстрагироваться от технологий, т.к. пришел к выводу, что суть моей проблемы глобальная и не зависит от каких либо мелочей. В общем, как мне кажется я все делаю не так, прошу пнуть в верном направлении.
1. Начнем с банальщины: - Делай свои проекты! Ок. Делал. Делаю. Буду делать. Сколько мелких проектов запилено уже не сосчитать, к сожалению никого ими не удивишь, да и после определенного уровня все становится однообразным и бонуса к скиллу не дает никакого. Были попытки сделать более крупные проекты, все были сделаны до какого то уровня, а потом заброшены, ибо за рутиной потерян интерес. Лично мне для себя пилить что то крупное прям сильно напряжно. И снова, даже когда делаешь что то большое, то все равно это набор каких то знакомых тебе паттернов, просто их много.
2. Пробовал ли говорить с начальником, чтобы дали другую работу? - Пробовал, иногда давали разовые задачи, но каждый раз заканчивалось одинаково - «мы тебя взяли под определенную задачу, ты нам нужен тут». Так было и на 1, и на 2, и на 3 работе. Пробовал брать напором, и скулежом - только испортил отношения. На 2 работе так вообще до смешного дошло, добавили зп лишь бы больше не поднимал этот разговор.
3. По поводу менторства: - Много раз слышал про менторство, мол найди себе учителя или работу с таковым. Были попытки, даже были люди готовые ответить на мои вопросы. Проблема в том, что я не знаю что у них спросить. Когда у меня есть конкретный вопрос, мне не влом загуглить. На последней работе у меня был ментор на испытательном, ей богу хороший дядька, много всего знает, но объяснять не умеет, от слова совсем. Поэтому от общения было толку мало, но тут у него хоть была обязанность это делать. В других местах обычно даже времени на код ревью не было, поэтому с вопросами просто отшивали.
4. Мысли по поводу книг: - В последние года 2 приналег на книги, читаю все подряд - алгоритмы, про язык, про технологии, т.е. вроде бы все близкое по смыслу. Но как показывает опыт на это тратится очень много времени, но выхлоп очень маленький, т.е. реально за целую книжку в 800-1000 страниц говоришь «мм вон оно как» в лучшем случае 2-3 раза, остальное не имеет смысла пока плотно не столкнешься, а когда начнешь делать то проще загуглить.
5. По поводу фриланса: - Если рассматривать в целом то, что предлагают биржи, то это ахтунг, 90% задач реально зашкварные, чуть более менее нормальная задача появляется, то сразу конкуренция высокая.
- Даже если идеализировать предыдущий пункт. Если посидел нормально и попрогал ночью, то с утра на основной работе сидишь как вареный и полдня приходишь в норму. Это сразу качественно сказывается на основной работе. Высокий шанс перегореть.
- Если пытаться на елку залезть и кое куда присесть, то у среднестатистического человека 9 часов на работу + сколько то на дорогу. Итого, в лучшем случае ~4 часа в день. Со сроками, которые ставят заказчики - 4 часа это ни о чем. Да, я знаю людей, которые умудряются делать на основной работе то, что продают потом вечером как фриланс. Я искренне восхищаюсь ими и считаю их талантами, у меня такое не прокатывает.
6. Коммитить на гитхабе. - Ок, выбираю язык + технологию, которые мне интересны, смотрю баги и то что открыто. Если открыто и нет пул реквестов, то моих знаний там тоже не достаточно. Ищу тупо то, что мог бы хотя бы потенциально починить. Смотрю - их уже кто то фиксил, а они так и висят в pull request, потому что владелец давно забил на проект. Допилить фичу в какой то имеющийся проект? Да тоже самое, те идеи что и приходят в голову требуют хороших скилов.
7. Найти народ на форуме и с ними запилить проект. - Было и такое, встречался, обсуждали и даже делали, но таки успеха не было. Потому что абсолютно все идеи изначально были слабые.
8. Была интересная мысль мол, есть сайты на которых люди просят что нибудь сделать. Мол можно там идею подсмотреть. - Анон удивишься, я о таком огромном количестве софта узнал благодаря этому, но все идеи, которые были уже кем то реализованы.
Конечно, все это без конкретики пустые строки. Поэтому попробую вспомнить, все свои проблемы.
1. Самая главная претензия, ты медленно пишешь код. Чаще всего бывает так, что подобный код пишу впервые. Я не представляю как можно писать код не разобравшись в проблеме досконально. Обычно, если не разобрался до конца, то потом будет багов столько, что проще будет все таки сесть разобраться и написать код заново. Лично видел людей, которые вообще не разбираясь в сути проблемы сходу пишут код и каким то чудом им удается избежать багов. Для меня это мистика, если есть потенциальные грабли, я их соберу все до единого. Анон, как мне набить этот скилл???!!!
2. Не понимаю ТЗ. Также одна из главных моих проблем. Спрашиваю, сделать так - угу. Делаю, отдаю на проверку, мат перемат, мы все хотели по другому. Смотришь на исправленное ТЗ - все ваще не так. И я бы сказал что это не моя проблема, но снова, я видел людей которые экстрасенсы чтоли, умудряются сходу понять, что не так. Думал что с годами этот скилл будет расти, так и есть, но оччеень медленно.
3. Поиск информации. Речь не о том, чтобы открыть stack overflow, отнюдь! Если инфа не гуглится, то я буду сидеть месяцами и снова таки пытаться разобраться с проблемой пока не разберу ее на винтики и таки снова я вижу что большинству удается найти инфу там, где никогда не догадаешься искать. На вопрос, как?? как ты до этого дошел, человек пожимает плечами.
4. Как читать код. Нет, нет, вопрос не про то чтобы проследить вызовы функций или кто где выставляет переменные, вопрос в том, когда ты открываешь сходу понять идеологию в принципе. Хорошо когда рядом есть человек, который писал код и ты можешь его спросить, а что же в принципе этими строчками ты хотел сделать. Постоянно с этим проблемы.
5. Многостаночник. лично от меня на работе это постоянно требуют, но я вижу что некоторым товарищам удается это обойти и они занимаются одним делом. И снова вопрос, стоит ли?
6. Смежные технологии. Постоянно от меня требовали знаний в какой то узкой области, причем абсолютно всегда эти знания больше нигде и никогда не пригодились. Стоит ли бодаться или изучать?
Итого, много сумбура. Я понимаю что главный ответ на мои вопросы - сиди программируй, это понятно. Вопрос как делать это эффективно, при таких исходных данных, с такими темпами я еще 10 лет буду джуном. Хочется мяса и жести, роста, интересных проектов, удовольствия от того что делаешь. ЗЫ анон, прошу больше конкретики.