реклама
разместить

Для будущих программистов.

Привет! Я - разработчик с опытом работы чуть больше 5 лет, поэтому я нахожусь на золотой середине, когда я уже примерно понял, как все устроено, но еще не успел забыть трудности, кот��рые испытывал, когда был новичком. За время работы у меня успел накопиться опыт, которым я хотел бы поделиться с теми, кто только думает о том, как именно начать карьеру программиста.

Эта статья - некий “ремейк” похожей статьи, которую я писал в 2022 году. Какие-то моменты я менять не стал, потому что моя позиция не изменилась. Какие-то - добавил(высшее образование)

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

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

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

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

Ну, поехали:

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

Ты на следующий день после прохождения курса за 300 000 рублей
Ты на следующий день после прохождения курса за 300 000 рублей

Сейчас в интернете невероятное засилье различных курсов, которые обещают сделать из вас разработчика/тестировщика/2D или 3D художника, стоит всего лишь заплатить 300 000 продавцу этих курсов (а то и 500 000, как за один интересный буткемп). Я сторонник того, что делать этого не стоит, потому что единственный плюс такого обучения - взаимодействие с преподавателем и получение фидбека, однако подобные курсы зачастую ведут и проверяют люди далеко не самые профессиональные, поэтому здесь - кот в мешке, смотря кто попадется.

Минусов, на мой взгляд, намного больше:

  • Большая цена - здесь даже говорить не стоит. Обычно она компенсируется рассказами о том, что курс окупится за 2-3 месяца работы, однако это только в том случае, если вы куда-то устроитесь. Более того, можно получить те же знания бесплатно, тогда и окупать ничего не придется.
  • Преподаватели - как я уже написал, зачастую совершенно неясно, какой уровень у человека, который писал материал курса и человека, который преподает его. Как ни странно, доверие к людям с условного YouTube намного больше, так как их навыки подкреплены мнением людей, возможностью посмотреть историю канала и тем, что у них (зачастую) нет цели что-то вам продать. Конечно, обжечься о плохого учителя можно и здесь, но тут это хотя бы материально бесплатно.
  • Отсутствие гарантий - я знаю, что часть школ «гарантирует» ваше трудоустройство (там тоже есть свои подводные камни), однако это только часть, и достаточно малая. Большинство, по-прежнему, не гарантируют ничего, кроме невнятного сертификата при прохождении. А те, кто и гарантируют и имеют хорошую репутацию, берут очень много денег в абсолютном выражении.
  • В реальности, нужно учиться разбираться в непонятных вещах самому - если вы идете на курс по той причине, что вам нужен именно преподаватель, который разжует вещи понятным языком и забьет их вам в мозг, и не хотите разбираться сами, то такой курс - лишь временная панацея. Если вы хотите, чтобы вас вкатили в IT, а вы просто денег отдали - это мимо. Вся суть нашей работы в том, чтобы разбираться в чем-то, что не ясно изначально, и никто не будет тратить время и деньги на то, чтобы постоянно объяснять и делать что-то за программиста.Здесь речь не идет о трейни, с которыми рядом постоянно находится ментор и помогает разобраться в работе. В таком случае, трейни уже попал на работу, потому что разбирался и учился сам, а ментор нужен для того, чтобы человек быстрее вник в кодовую базу, предметную область и адаптировался внутри компании. Если трейни не захочет разбираться сам, то он очень быстро вылетит за борт.

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

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

2. Английский необходим, но…

Окружаем себя английским языком
Окружаем себя английским языком

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

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

В нашем случае, две самых необходимых вещи это:

  • Умение формулировать мысли на английском (необязательно уметь правильно произносить их в слух) - этот навык напрямую влияет на то, сможете ли вы найти информацию по своему вопросу в интернете. На самом начальном этапе искать можно и на русском, но быстро станет ясно, что результаты крайне ограничены. А в наше дивное время LLM и замены ими гугла и StackOverflow, этот навык становится просто невероятно ценным.
  • Умение воспринимать информацию на английском языке - этот навык напрямую связан с первым, так как мало толку от умения найти информацию, если нет возможности понять то, что было найдено. Здесь речь идет и о тексте, и об аудио. Конечно, сейчас доступны переводы прямо в браузере, но проблема в том, что вы теряете устоявшиеся термины, которые в дальнейшем все равно придется употреблять и оперировать именно ими, а не переводом. Ну и картинки никто переводить не будет, а в документации они попадаются часто, поэтому вы рискуете оказаться в ситуации, когда в статье Deadlock был назван Взаимоблокировкой, а на картинке он все тот же deadlock
Скриншот из документации Microsoft с машинным переводом
Скриншот из документации Microsoft с машинным переводом

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

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

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

3. Математика НЕ необходима, но…

Как проинтегрировать этот проклятый .json??
Как проинтегрировать этот проклятый .json??

И снова достаточно распространенное мнение, что «программисту необходимо знание математики» и в целом базы, однако здесь конкретику можно встретить еще реже. Я тоже не готов расписать, какая область математики где может пригодиться, потому что это больше зависит от предметной области, в которой вы будете работать, чем от стека технологий. Однако, здесь есть исключения. Например, считается, что в разработке игр математика - один из самых важных инструментов, но это не совсем так. “Разработка игр” это слишком широкое понятие. Делаете визуальную новеллу на готовом фреймворке? Не нужна там математика. Собираете в хитром нодовом редакторе очередную казуалку? Тоже не нужна. И так далее.

Если упрощать, то математика(как и любое другое базовое знание) нужна там, где нужна, точка. Как понять это?

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

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

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

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

4. Высшее образование НЕ необходимо, но…

Ну вот, теперь в магистратуру на пару лет, а потом кааак в IT влечу с двух ног
Ну вот, теперь в магистратуру на пару лет, а потом кааак в IT влечу с двух ног

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

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

Зачем здесь высшее образование, чего ради? Это - огромная инвестиция, жизнь далеко не вечна, молодые годы тем более, да и денег оно зачастую стоит немало: даже если попали на бюджет, косвенные расходы, такие как съем квартиры, огромны.
Оно нужно, потому что пригодится когда-то потом, когда будут требовать решения настоящие задачи? А если не будут? А если можно справиться и без высшего образования? А что если научиться тому, чего задачи требуют тогда, когда задачи возникнут? Вы же не учите все технологии в мире в надежде на то, что когда-нибудь они обязательно пригодятся.

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

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

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

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

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

5. Семь раз отмерь, один раз отрежь

Все дороги ведут в Bockend
Все дороги ведут в Bockend

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

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

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

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

Я понимаю, что время ограничено, и хочется стать профессионалом в одном деле, а не новичком во всем на свете, но призываю вас потратить немного времени, собрать небольшой список крупнейших областей, в которых вы могли бы работать и сделать по одному мини-проекту в каждой из них. Примерами областей могут быть: мобильная разработка, веб, десктоп, игры, Data Science, embed и так далее.

Когда вы определитесь с желаемым общим направлением, то я советую не останавливаться, а продолжать копать дальше.
Скажем, вы решили разрабатывать игры. Определите желаемую платформу: мобильные/десктоп/консоли/VR/…
После этого - 2D или 3D.

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

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

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

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

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

Заключение

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

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

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

Желаю успехов в освоении одной из самых увлекательных профессий современности!

Телеграм канал - https://t.me/artem_ovchinnikov_palace.
Обсуждаем новости IT, пишем статьи и подкасты, а также иногда разгоняем про философию, социологию и старые мультфильмы

3131
1111
реклама
разместить
40 комментариев

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

8
2

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

Комментарий удалён модератором

для прогромистов это нормально, поверь мне я знаю о чем говорю

Раскрывать всегда
Junior web (frontend) developer (HTML, CSS, JS)

Здравствуйте все, планирую начать свою карьеру в IT, вот решил попробовать выставить пост в данной социальной сети, вдруг заметит какой-нибудь интересный человек, который сможет дать советы, либо пригласить в компанию, со своей стороны обещаю полную отдачу всем проектам, пунктуальность и ответственность на все 100%. Я знаю на базовом уровне HTML(Pi…

История о том, как я стали программистом с помощью ChatGPT
История о том, как я стали программистом с помощью ChatGPT
4040
1616
77
22
11
11
этот текст писал аи
Есть ли смысл продавать игровые ассеты в 2025? Или я опоздал, пока ИИ захватывает мир?
Есть ли смысл продавать игровые ассеты в 2025? Или я опоздал, пока ИИ захватывает мир?
2323
22
Как выйти из ИТ

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

5454
2121
77
11
11
Предлагаю стартап, принимаем заявки от тех кто хочет выйти из ит, и тех кто хочет войти. Меняем их местами. Профит
Как делать игры с помощью нейросетей. Подробное руководство.

Дисклеймер:

1313
44
Как уйти из IT в геймдев?
Как уйти из IT в геймдев?
33
22
Про сертификацию IT специалистов

Вышло постановление о начале эксперимента по сертификации IT специалистов.


Сначала краткий пересказ:


• Правительство РФ проводит эксперимент по добровольному подтверждению компетенций для разработчиков ПО с 14 февраля 2025 по 31 декабря 2026 гг.

• Цель эксперимента - предоставить разработчикам инструмент для проверки уровня владения различными ИТ-комп…

22
Сценарий применения LLM из личного опыта
Сценарий применения LLM из личного опыта

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

66
11
Как вкатиться в AI и ML, чтобы получать хорошие деньги (но, увы, не наносеки)

Пошаговая инструкция

Кадр из Ex Machine<br />
7070
11
Статья кстати мусор
реклама
разместить
Зачем люди продолжают учить кодить в 2025?

Кодеры это ладно. Представьте себе, ещё существуют верстальщики. А ещё больший сюр это интервью в 2025 где тебя спрашивают знание синтаксических конструкций языка, три кита ООП, я сейчас умру от кринжа, прекратите, остановитесь, лучше дайте мне написать сортировку пузырьком... Нет, лучше написать решение задачи на листе бумаги... Или нет давайте я…

158158
3131
1515
33
33
22
11
Что я за дрисню сейчас прочитал. Мне кажется или твоя идеология чсв зашкаливает от даже малого колличества информаций в той или иной сфере. Навязывать свое мнение, это глупо, может тогда и в архитектуру не лезть…
ChatGPT и молодое поколение

Интересный пост увидел на реддите. Он меня замотивировал эту публикацию сделать и обсудить с вами, ждет ли нас «Идиократия»

8787
55
44
22
11
11
Вангую ещё большее расслоение населения по условному iq. Хотя куда уж дальше. С чатгпт игрался месяц и вывод неутешителен - им нельзя пользоваться. Он врёт абсолютно по любым вопросам. Люто, дико, увиливает и трясется, аки слившихся дтфер. При этом чудовищно соевый, что цензурит даже науку (прям как ирл в США, где часть исследований никто не проводит, потому что запретные темы и тебя просто не опубликуют топ журналы). А считать так вообще не умеет. Быдлокод и соевые фанфики про дружбу его максимум в текущем виде. ЗЫ. Анализа литературы, по крайней мере в РФ, давно нет. Есть решебники и принятое трактование от рецензентов, умерших 100 лет назад.
Микропост для новичков в разработке. Starter Pack.

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

44