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

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

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

Я начал с того, что, вероятно, делает большинство людей, гуглил «как кодировать». Сразу же вас утонут тысячи статей и руководств, но как вы решите, с чего начать?

Шаг 1. Проведите исследование

Что заставило вас прочитать эту статью о том, как стать инженером-программистом? Было ли это объявление о конкретной вакансии? Хотите работать в одном из этих крутых стартапов или в одной из крупных технологических компаний? Обратите внимание на то, что в их объявлениях о вакансиях упоминается о том, что квалифицирует кого-то как хорошего кандидата. Используйте эту информацию, чтобы вести свой поиск. Что должен знать хороший кандидат, чтобы преуспеть в этой должности? Для моей роли это была Руби. Это основной язык, который мы используем в моей нынешней компании, StreetEasy, так что я начал с него. Я сразу погуглил, как писать код на Ruby. Если вы думаете об этом, я бы порекомендовал остановиться. Идти по этому пути равносильно изучению языка до понимания глагола, существительного или других основных понятий. Понимание общих концепций всех языков программирования значительно упростит усвоение просмотра этого учебника для конкретного языка. К некоторым из них я вернусь позже.

Шаг 2. Изучите основные концепции программирования

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

Https://codewithchris.com/learn-programming/

Https://dev.to/lucpattyn/basic-programming-concepts-for-beginners-2o73

Https://blog.upperlinecode.com/computer-language-fundamentals-five-core-concepts-1aa43e929f40

Https://dev.to/aspittel/a-complete-beginner-s-guide-to-programming-2ni4

Шаг 3. Изучите концепции и синтаксис конкретного языка

Помните тот раз, когда вы гуглили как писать код, и я сказал вам остановиться? Пришло время открыть эту вкладку и нажать Обновить. Что касается того, какой язык программирования выбрать, если вы имеете в виду что-то конкретное, я бы рекомендовал придерживаться этого, в противном случае я бы рекомендовал начать с Javascript, Ruby или Python. Каждый из них считается объектно-ориентированным языком программирования. Udemy предлагает множество хороших уроков (некоторые бесплатные!), Которые вы можете пройти в удобном для вас темпе. Для синтаксиса и при разработке браузеров Codecademy отлично работает. Кроме того, не забудьте прочитать документацию по выбранному вами языку, которую обычно можно найти на главном веб-сайте языка.

Шаг 4. Создание, сбой, улучшение, итерация

У меня была цель перейти в команду разработчиков StreetEasy, и я подумал, что самый быстрый способ сделать это - просто изучить Ruby. Я умел писать код на Ruby, отлично. Но любой, кто потратит 30 минут на просмотр учебника, сможет это сделать. Понимание того, что вы пишете и встраиваете в функциональное приложение, - это совсем другое дело. Я писал операторы if else и печатал на консоли, как начальник. Это здорово, и его нельзя упускать из виду как достижение, поэтому делайте маленькие победы там, где можете. Но сложное программное обеспечение работает не так. Вы будете создавать вещи, которые, скорее всего, будут повторно использованы, переработаны и расширены. Вы не начнете понимать это, пока не начнете создавать приложение. Так что подумайте о своем любимом приложении. Это Twitter, Instagram, Medium или ваша собственная идея? Каковы его основные особенности? Запишите их. Планируйте небольшие шаги для того, каким может быть минимально жизнеспособный продукт. Наконец, постройте. На самом деле это может показаться сложной задачей (это было для меня), но я обещаю, что, делая это, вы узнаете больше всего, и это лучше подготовит вас к жизни в качестве инженера-программиста. Google будет вашим лучшим другом, и, скорее всего, это будут односторонние отношения, в которых вы просите, но ничего не отвечаете (кроме случайных голосов за переполнение стека, когда что-то работает). Это нормально (но, надеюсь, однажды вы сможете внести свой вклад!).

Шаг 5. Не забудьте проверить!

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

Шаг 6. Гордитесь собой

Делать то, что вы делаете, - нелегкий подвиг. Многие люди начинают и решают, что это не то, чего они хотят так сильно, как они думали. Гордитесь собой и своей работой (какой бы хрупкой она ни была 😩). Это только начало вашего пути, и вы оглянетесь на этот код через несколько лет и, вероятно, на то, что вы написали, но это означает, что вы растете и поправляетесь, так что гордитесь этим старым кодом и своим новые знания (в качестве теста, возможно, даже рефакторинга этого кода 😏).

Шаг 7. Не расслабляйтесь

Всегда есть чему поучиться. Быть инженером-программистом - это действительно бесконечный процесс. Ситуация постоянно меняется, новые фреймворки / языки добавляются или обновляются каждый день. Одним из лучших решений, которое я принял, стала подписка на Medium, чтобы получать ежедневные электронные письма с популярными статьями по дисциплине «Программная инженерия». Это привело к бесчисленным моментам «ага» и является отличным ресурсом для непрерывного роста.

Шаг 8. Узнайте, как принимать отзывы / задавайте вопросы!

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

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

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

Спасибо, что нашли время, чтобы прочитать это, и счастливого (ну, иногда) кодирования!