Содержание

Как программисты-самоучки в реальности получают работу / Хабр

Вопрос с Quora:


Как программисты-самоучки в реальности получают работу?

Мне 17 лет и я занимаюсь программированием с 14-ти. Основной упор на Java, я получил 5 баллов по предмету AP Computer Science. Я довольно хорошо разбираюсь в Java (синтаксис, основные классы, GUI/JFrame и т.д.) и неплохо знаком с HTML5 и CSS3. Кажется, мне не хватает многих знаний, чтобы реально претендовать на работу в индустрии (например, как работают СУБД и какую из них следует использовать), и мне интересно, как другие программисты изучают такие вещи. Я планирую пойти в колледж по специальности «Разработка программного обеспечения», но меня начинает расстраивать мысль, что колледж — необходимое условие, чтобы получить работу. Есть ли какие-то курсы, которые я пропустил, хотя должен был изучить их, или что-то другое, чего я не сделал?

Мой ответ:


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

У программиста-самоучки много общего с тем, кто самостоятельно научился игре на гитаре. Не знаю, играл ли ты когда-нибудь на гитаре, так что объясню, как происходит обучение.

Во-первых, всё начинается с того, что кто-то видит, как другой человек играет на гитаре. Большинство из тех, кто уже играет, в какой-то момент хотели быть на кого-то похожими. После этого он принимает решение: «Я тоже могу научиться!», идёт в местный магазин музыкальных инструментов и покупает бэушную гитару (потому что она дешевле, но всё равно крутая).

Далее происходит одно из двух. Или человек находит самоучитель игре на гитаре в каком-то виде, ИЛИ он идёт на YouTube и начинает пробовать играть свои любимые песни. Как правило, второй вариант эффективнее.

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

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

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

В конце концов игра на гитаре станет «естественной», а изучение новой песни — обычным и безболезненным делом. «Язык» гитары для него станет чем-то естественным, вроде человеческой речи.

Всё это происходит в течение тысяч часов практики. Даже если практиковаться несколько часов в день, процесс занимает годы.

Так какое это имеет отношение к программистам-самоучкам?

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

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

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

Чувствуешь разницу?

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

Например, сегодня каждый веб-разработчик (и его брат) используют WordPress. Задолго до WordPress я написал для себя 3 или 5 разных систем управления контентом на PHP и MySQL. Я делал игры. Писал мобильные приложения. Фреймворки. SAAS-приложения.

Никто не платил мне за это. Всё это я делал для удовольствия или для обучения, или из любопытства.

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

Да, я мог посещать курсы по этим предметам. Но гораздо больше можно узнать, если самому создавать вещи, делать ошибки и по-настоящему «чувствовать» всё это, а не узнавать из книги или лекции.

Так что могу дать совет, с помощью которого ты получишь огромное преимущество над теми, кто такого почти не делает…

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

В конце концов у тебя получится что-то работающее и довольно приличное.

Затем начинай снова. Сделай что-нибудь ещё. Продолжай писать и писать, и писать, и писать. Вложи в свой скилл тысячи часов, бросая себе вызов на создание новых проектов.

По мере написания кода сохраняй работу в маленькое портфолио на своём сайте. Каждый раз по окончании проекта сообщай о нём на Hacker News или Reddit, или ещё где-то. В блоге.

Тебе 17… К 20-ти годам ты легко можешь вложить более 2000 часов в разработку своего навыка, в портфолио будет 10-20 проектов и ты выучишь многие уроки, которые учащиеся на курсах никогда не выучат.

Что ещё важнее, ты сможешь ясно продемонстрировать свою способность писать код, решать проблемы и выпускать что-то рабочее в этот мир. Это большая ценность. Именно то, что ищут компании.

Как только найдёшь работу, продолжай программировать в свободное время и продвигать свои проекты. Ты будешь расти быстрее, чем сверстники, потому что они приходят домой и смотрят телевизор, не обучаются, не растут и не создают НИЧЕГО. Они получают зарплату и идут домой.

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

Так что вылезай из скорлупы и создай что-нибудь. Пиши код!

7 выводов программиста самоучки за 1 год / Хабр

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

Понедельник

Самоучкой программистом быть можно. Тех, кто говорит вам, что сам ничему не научишься, а нужно образование… игнорируйте. Будь вы хоть художником по образованию — программистом можно научиться быть самостоятельно. Я скажу Вам больше. Я считаю, что программисту ЛУЧШЕ быть самоучкой. Почему спросите Вы? Потому что в этой из ряда вон выходящей профессии нужно самосовершенствоваться каждый день хотя бы час-полтора, а лучше всю ночь. Дело в том, что наука программирования постоянно развивается и итерируется, а значит старые методы мы смело забываем и осваиваем новые. Поэтому если вы думаете, что, получив 5 лет образования можно будет всю жизнь пожинать плоды — нет. Нельзя и не будет.
Вторник

Есть лишь один тип людей, которым я завидую белой завистью — прикладные математики. Но вернувшись к первому пункту я решил, что учить математику самостоятельно не только интересно, но и зашибись как полезно. Начав с дискретной математики обнаружил удивительную вещь — если не только учить, но еще и напрягать мозг над интересными задачками он О ЧУДО начинает соображать в разы быстрее. Как где-то было написано, если ты любишь, то что делаешь, рано или поздно ты попадаешь в поток и то, что ты делаешь становится очень простым и интуитивно понятным. Тебе. Хотя год назад ты был бы в ужасе при виде всего этого. Но легкость — это следующий барьер.
Среда

Если становится совсем легко — значит ты вырос и стоишь на месте. Если остановишься — остановится и твой рост. Если стало легко, голова как бы говорит тебе что ты можешь немного дружок отдохнуть и снова нырнуть в тот омут психологического дискомфорта где тебе ничего не понятно, но так интересно и хочется освоить, понять, осилить, победить эту железку, которая снова и снова ставит тебе новые задачи. Работу я бы поделил на такие этапы: Ничего не понятно и ужас как сложно. Ой, кажется у меня что то получается и Е мое то что делал раньше весь день сделал за 10 минут, теперь еще вот это докручу чтобы лучше работало.
Четверг

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

Все мы так или иначе говнокодим. Будь то по лени или по незнанию. Говнокодим, потому что, просыпаясь завтра я буду умнее чем вчера, а написанный код останется позавчерашним. Не надо стесняться того, что вы становитесь лучше. Но и код свой не оставляй плохим, если знаешь, что он таков. Сразу скажу: если открываете проект, а там сплошной говнокод: время делать ноги. Ищите место где говнокода меньше. Мне довелось резко сравнить код разных людей и это как читать Оскара Уайлда и желтую газетную статью. Сложно полюбить прекрасное, когда твой мозг и глаза насилуют. А главнее всего понимайте, что все говнокодят — даже самые опытные люди. Но писать надо так, чтобы как можно меньше специалистов приняли вашу работу за уделанную вермешель.
Суббота

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

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

Да. Год прошел не зря. В этот раз я явно не ошибся с выбором профессии. В замечательном настроении. Фух. Отдохнул. Время снова браться за математику.

10 программистов-самоучек, ставших преуспевающими разработчиками | by Дмитрий ПереводIT | NOP::Nuances of Programming

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

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

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

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

Лексис Хансон окончила колледж по направлению “Бизнес и финансы”. В дальнейшем она стала преуспевающим аккаунт-менеджером, но при этом чувствовала, что эта работа не даёт ей полностью раскрыть себя. Её склонность к критическому мышлению, логике и числам порождала в ней тягу к созданию чего-либо, к разработке.

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

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

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

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

Бостон был для неё возможностью начать всё с нуля, учитывая то, кем она хотела бы стать. Предпосылки к этому возникли, когда она пообщалась со знакомым человеком, который закончил университет в Хьюстоне, получив степень в биологии, но в итоге нашёл себя в разработке ПО для iOS. Он прошёл обучающий курс и получил работу разработчика iOS, не имея в этой области соответствующей степени. Этот пример вдохновил Ненну, и она погрузилась в самообучение. Её врождённое любопытство, а также страсть к самообразованию и технологии в итоге привели её в O’Reilly Media в качестве разработчика, где она занялась внедрением инноваций в их обучающую онлайн-платформу.

Она принимала все вызовы, которые встречала на пути, никогда не прекращала обучение, верила в себя, прошла 14-недельный курс обучения, использовала свободные онлайн-ресурсы и общалась с окружающими её единомышленниками, в том числе на Meetup.com

Джейсон Ванг — из семьи иммигрантов, прибывших в Америку на поиски лучшей жизни. Он поступил в университет на сестринское дело, затем переквалифицировался в международный бизнес, после чего на третьем году обучения решил бросить учёбу. Переехав в Сиэтл, он несколько лет перебивался случайными заработками и размышлял о решительном переходе в индустрию IT. Благодаря поддержке родителей и воодушевлению со стороны друзей, летом 2018 он принял решение “всё или ничего”.

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

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

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

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

Он начал фокусироваться на процессе, а не на конечном результате, создал прочное основание, стал завсегдатаем Stack OverFlow, организовал среду, позволявшую совмещать ему учёбу и работу, а также поддерживал связь с людьми через Meetup.com

Джонатан был типичным подростком, вынужденным к моменту окончания школы сделать один из важнейших выборов в жизни — что именно он хочет изучать в колледже. Он решил поступить на “Обеспечение поставок и логистику”, но спустя два года обучения, Джонатан был обеспокоен чувством неудовлетворённости, которое стал считать чем-то обыденным для студента.

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

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

“Дайте мне шесть часов, чтобы срубить дерево, и я потрачу первые четыре на заточку топора.” — Авраам Линкольн.

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

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

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

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

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

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

Спустя девять месяцев и семь дней полного погружения в программирование с сильным намерением сменить деятельность, он в итоге получил своё первое предложение работы.

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

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

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

Спустя два года она стала инженером ПО и возглавила связи с разработчиками в компании Oikos.

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

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

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

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

Самое важное для разработчика-самоучки:

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

Будьте инициативны

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

Продолжайте учиться

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

Создайте прочное основание

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

Ставьте цели и придерживайтесь их

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

Интернет

Использование интернета может оказать существенное влияние на достижение успеха. Никогда нельзя предугадать, насколько окружающие могут помочь, а люди в IT среде зачастую очень к этому расположены. Возьмите пример с Джейсона: познакомьтесь с как можно большим числом профессионалов. Ходите на семинары, пишите сообщения людям на разных платформах, посещайте технологические факультеты и не стесняйтесь обращаться к преподавателям и студентам, которых там встречаете. Можете даже ставить цели по знакомству с определённым числом людей каждую неделю. Возьмите с собой записную книжку, задавайте вопросы и записывайте ответы. Эти люди либо уже находятся там, где хотите оказаться вы, либо идут с вами по одному пути, поэтому учитесь у них.

Будьте настойчивы

Если бы все программисты сдавались при возникновении сложностей, то в мире бы их вообще не было. Если вы легко сдаётесь перед лицом проблем, то никогда не сможете достичь успеха. Вспомним Лексис. Когда она начала искать работу, то несколько раз получала отказ. Тем не менее она продолжала упорствовать и в итоге получила аж три хороших предложения на должность инженера: одно от компании FAANG, второе от стартапа и третье от компании, где уже была трудоустроена.

Верьте в себя

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

Будьте деятельны и не переставайте писать код

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

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

Читайте также:

Читайте нас в телеграмме, vk и Яндекс.Дзен

Есть ли шанс у самоучек построить успешную карьеру в IT — Карьера на vc.ru

Анна Палехова, руководитель практики IT&Telecoms рекрутинговой компании Hays в России

4941 просмотров

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

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

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

Разработчики ПО

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

Простой путь в разработку для человека с непрофильным высшим образованием или его отсутствием лежит через обучение верстке и основам front-end программирования (создания клиентской части веб-приложений). Для этого существует множество онлайн или оффлайн курсов (например, HTML Academy, CodeSchool, CodeAcademy, CodeAvengers или Lyndа). В зависимости от того, сколько времени человек готов уделить обучению, оно может занять несколько месяцев. Вначале изучают основы верстки — HTML+CSS, затем основы Javascript – языка front-end разработки. Новичкам можно посоветовать последние издания Дэвида Флэнагана, а также практиковаться и делать проекты себе или друзьям для наработки навыков.

Другие популярные точки входа в профессию – аналогичное обучение (самостоятельное и на курсах) разработке мобильных приложений и full-stack веб-программированию («сайтоделанию»).

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

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

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

Тестировщики

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

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

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

Тем, кто желает учиться, специалисты рекомендуют начинать с ручного тестирования, прослушать онлайн курс Михаила Портнова, прочитать профессиональные книги: Сэма Канера, Джека Фолка и Енг Кек Нгуена «Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений», Романа Савина «Тестирование Дот Ком», а также пройти сертификацию ISTQB. Существует также множество офф-лайн курсов, где за два-три месяца можно научиться основным процедурам – создавать и выполнять тест-кейсы, тест-планы, работать с багтрекерами (системами отслеживания ошибок). Попробовать свои силы можно с помощью песочницы на сайте https://www.utest.com, где в дальнейшем вы сможете поучаствовать в разных оплачиваемых проектах и записать этот опыт в свое резюме.

Технические писатели

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

Технические писатель – на эту должность могут претендовать, например, бывшие переводчики или любые профессионалы с отличным знанием иностранных языков. Многие компании нуждаются в создании технической и маркетинговой документации для иностранных пользователей своих услуг. Они зачастую готовы рассматривать кандидатов, свободно владеющих английским или другим необходимым языком, и не имеющих образования и опыта работы в IT-сфере. Обучение задачам и специфике работы происходит прямо «в бою» — в процессе работы. Новичкам придется освоить техническую терминологию, особенности использования программного продукта, навыки создания инструкций и описаний, в том числе текстовых и графических, методологию подготовки документов, связанную с циклом разработки ПО. Войти в IT нелегко, но работа того стоит: спрос на технических писателей со знанием английского языка постоянно растет, особенно в Москве и Санкт-Петербурге.

Data scientists

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

По мнению многих наших кандидатов и нанимающих менеджеров развитие IT специалиста не менее чем на 50% зависит от самостоятельного обучения. Для тех, у кого нет высшего физмат- или IT-образования, этот процент может доходить до 80-90%. Волшебным образом попасть в IT-компанию не получится. Нужно планировать этот переход и быть готовым к большому объему работы над собой. Один из наших кандидатов – опытный тестировщик, сделавший себя сам, советует постараться осознать свои истинные желания для правильного планирования направления развития.

Каких навыков не хватает программистам-самоучкам?

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

Валентин Попеску, Software Architect

Я закончил колледж, где вообще не преподавали ничего, связанного с информатикой. Поэтому я самостоятельно изучал C/C++ и использовал свои знания в личных проектах. Также я принимал активное участие в «open source» проектах, хотя тогда они еще так не назывались. И вот сразу после колледжа я проходил одно собеседование.

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

Затем у меня спросили, какова сложность этого алгоритма в нотации большого О. Что это еще такое?! Что еще за нотация?!

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

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

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

Была у меня и еще одна интересная проблема. Учился я сам, а руку набивал на open source проектах. В ходе работ над этими проектами общение было письменным, по электронной почте. В результате всего этого я не знал, как принято произносить многие слова. Например, «SQL» я произносил как «es-que-el», в то время как общепринятым был вариант «See-quel». Или вот «I2C» — я произносил «eye-two-see», а нужно было «eye-squared-see».

Лалит Суреш

О, хороший вопрос! Вот несколько моих наблюдений, сделанных за много лет работы:

Незнание того, что есть, а чего нет

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

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

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

Туннельное зрение

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

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

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

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

Майк Чиралди, программирую уже больше 50 лет

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

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

Несколько дней спустя этот товарищ подошел к моему столу — он весь аж сиял, потому что таки нашел способ сделать задуманное. Каждый раз, как его программа обнаруживала под-выражение, она удаляла его из строки, заменяя специальным символом. Я сказал: «Поздравляю! Ты только что заново изобрел машину Тьюринга!» Я ж говорил, что он был настоящим кудесником в программировании.

Дэвид Джиллиес, больше 20 лет опыта в написании и проектировании программ

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

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

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

Был у вас конвейер разработки (Agile, Scrum, Kanban и т.п.)? Конечно, нет.

Кто проводил ревью кода, ваш кот?

Вы писали модульные тесты для своего кода? Самоучки никогда не пишут модульных тестов, потому что это скучно и неинтересно.

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

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

Конечно, это не значит, что вы должны настраивать Gerrit или Jenkins для управления личными проектами, но вы можете использовать Docker для изоляции вашей работы от вашей системы или завести себе стейджинг- и продакшен-сервер (компьютеры сейчас относительно дешевы). Сделайте написание тестов и их запуск частью вашего процесса разработки. Используйте Git. И когда вы решите поделиться своим творением с миром, вы будете готовы это сделать.

Айвэн Миллер, Data Engineer

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

  1. Структуры данных и алгоритмы. Вам НУЖНЫ эти знания, если вы собираетесь разрабатывать программы, не падающие при заходе 10 тысяч пользователей.
  2. Умение решать задачи. Я не имею в виду копипаст со Stack Overflow. Я говорю о решении сложных проблем своей головой. Курсы математики и логики направлены как раз на выработку этого умения.
  3. Знание основ. Например, вам нужно хотя бы высокоуровневое понимание того, как строятся компьютерные сети. Изучение таких тем как сети, базы данных, операционные системы, языки программирования и компиляторы просто чудеса творит с вашей интуицией.
  4. Приобретение инженерского интуитивного «чувства опасности». (В оригинале — «spidey sense». Выражение уходит корнями в комиксы про Человека-паука, у которого появлялось ощущение, что происходит нечто неправильное или опасное. — Прим.перев.). Это ощущение тяжело точно описать, но оно вполне реально. И его нельзя заменить прохождением курсов или умением писать код на JavaScript. Оно поможет вам более эффективно заниматься отладкой кода, продумывать edge cases, проектировать системы и даже высказывать свои мысли!
  5. Математика. Нет, чтобы написать HelloWorld, знания алгебры не нужны. Но математика повсеместно применяется в моделировании проблем, а кроме того, дает вам нужный словарный запас для описания вещей. Математика учит вас решать сложные задачи, а именно этим и занимаются разработчики.

Робин Томас, Senior Software Engineer

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

  1. Многие самоучки на заботятся об эффективности кода. Они просто идут самым легким путем. Если есть 100 решений, они пишут самое простое из них. Алгоритмическая сложность для них ничего не значит.
  2. Под самостоятельным изучением программирования чаще всего понимается самостоятельное изучение синтаксиса языка. И больше ничего. Но информатика это не только программирование, не так ли? Самоучки упускают из виду множество концепций, которые изменили бы их подходы к решению проблем.
  3. Самоучки первыми переключаются на новые технологии, фреймворки и языки. С этим утверждением, конечно, можно поспорить, но это то, что я видел в своем окружении. Это не обязательно плохо. Но следует хотя бы подождать, пока у новинки появится хоть какая-то поддержка, а уж затем переключаться на нее, если это подходит для дела. А не переходить на новое только потому, что кто-то еще этим пользуется.
  4. Большинство самоучек не разбираются в алгоритмах. Они просто привыкли к библиотекам.
  5. Видал я людей, называющих себя программистами-самоучками после прочтения книги «Изучи Х за 24 часа» (вместо «Х» подставьте любой язык программирования).
  6. Многие самоучки не знакомы с шаблонами проектирования, принципами разработки программ и лучшими подходами к разработке.

Фрэнк М. Тейлор, веб-разработчик

Я не столько программист, сколько веб-разработчик, но я написал достаточное количество JS-кода, как для фронтенда, так и для бэкенда. Итак, чего же не хватает программистам-самоучкам?

Скромность

Кто-то уже довольно остроумно отметил, что чего программистам-самоучкам не хватает, так это скромности. Я согласен с этим утверждением.

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

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

Алгоритмы

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

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

Я потратил четыре дня, чтобы разобраться, как сделать перестановку. И я так гордился собой, когда мне это, наконец, удалось! Аж пока не обнаружил, что Б.Р. Хипс сделал это еще в 1963 году.

Шаблоны проектирования

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

Парадигмы программирования

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

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

Если у вас есть молоток, то вам все кажется похожим на гвоздь.

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

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

Структуры данных

Конечно, ваш язык программирования даст вам основное понятие о разных структурах данных. Но (заостряю ваше внимание!) это только основная идея.

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

Если бы мир умещался в массив, он был бы невероятно маленьким.

Тестирование

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

Научитесь проводить модульное тестирование. И, что даже более важно, освойте разработку через тестирование. Есть разница между тестированием кода и написанием кода, который может пройти тестирование.

В этом вопросе мне очень помогла книга «Программист-прагматик».

Как найти работу программисту самоучке

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

Итак, условия задачи:

  1. Джуниор не имеет профильного диплома. Максимум, что есть в активе из образования – «корочки» профильных курсов.
  2. Опыт работы отсутствует вообще либо минимальный: стажировки, небольшой срок работы в каких-то малоизвестных компаниях, возможно, даже не совсем по профессии: тестировщиком, сисадмином и т.д.

Рынок IT переполнен подобными соискателями, а потому к поиску работы нужно готовиться всерьез и настраиваться на многочисленные собеседования, тестирования и, в том числе, отказы. И самое главное здесь – позитивный настрой и терпение.

Страхи и отказы: что с этим делать

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

Важно: На рынке труда выбирают не только вас, но и вы!

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

Основные страхи, которые нужно преодолеть:

  • Отказали по итогам собеседования? Ничего страшного, скорей всего, просто нашли кого-то вашего уровня, но уже с нужным опытом. Никаких самокопаний и размышлений на тему «я никому не нужен»! Просто движемся дальше.
    Помните: с теми же сложностями сталкиваются новички в любой сфере – с дипломом и без него. Это не вы чем-то плохи, а просто – объективная реальность. Вам тоже обязательно повезет.
  • Выполнили тест и нет отклика? Читаем выше: может быть, вам просто не повезло в этот раз. С другой стороны, вы получили практический опыт. При этом стоит проанализировать свой результат и поискать ошибки. А вдруг вы и правда чего-то не знаете? Лишний повод подтянуть знания.
  • Вы шлете резюме в компанию мечты, но вам даже не отвечают? Мечты должны сбываться. Не бойтесь посылать запросы повторно. Работайте над резюме. Постарайтесь выйти на специалистов в нужном вам отделе, минуя HR. Как угодно – через форумы и социальные сети, с предложением решения какой-то задачи или просто включите «наглость» и напишите на email. Помните – можно все, что не запрещено. И вполне может быть, что вас заметят. Но без фанатизма – все хорошо в меру.

И самое главное: оценивайте себя объективно, насколько это возможно. И разумно соотносите свои возможности и запросы.

В каждой профессии имеется своя карьерная лестница. Начинать придется с небольших окладов и, зачастую, скучной работы рядового кодера. Просто потому что вы – джуниор. Вы будете принимать участие в решении практических задач, наберетесь знаний и опыта. В конце концов, получите столь желанную для карьеры строчку в резюме – «работал в такой-то компании с … и до…». И если у вас не появится суперинтересного предложения в период первой работы, желательно там продержаться хотя бы год. Даже если будет скучно. Это большой плюс на будущее.

А теперь перейдем к тому, что стоит иметь в числе преимуществ и как себя правильно подать.

Что ждут от джуниора самоучки?

В большинстве случаев интерес к программистам без диплома и солидного опыта проявляют работодатели-программисты, которые занимаются поиском сотрудников без помощи «кадровиков». Причина очевидна – HR специалисты не могут оценить ваши знания и навыки. Они ориентируются на опыт работы, дипломы, курсы и т.д.  Впрочем, и тут есть исключения. Но лучше строить свою стратегию поиска, исходя из того, что вас будут оценивать опытные коллеги.

На что обращают особое внимание:

  1. Знание языков программирования. Никто не ожидает, что начинающий программист будет знать множество разных языков. Более того, если в резюме вы укажете такой обширный список, велика вероятность, что о вас подумают – «знает ничего обо всем». Выбирайте специализацию с умом. И указывайте только такие языки, где вы реально можете что-то показать.
    Просто представьте, что на собеседовании вас попросили набросать код в C#, а вы его указали просто потому, что читали учебник. Все. Собеседование провалилось. А если вы перечислите только такие языки, где вы и правда готовы демонстрировать знания, вероятность положительного решения заметно возрастет.
  2. Портфолио. В процессе обучения вы, скорей всего, что-то писали. Пусть и для себя. Не стесняйтесь показать свои решения. В том числе с открытым кодом. Чем больше будет подобных работ – тем лучше.
    Работодатель-программист сможет оценить ваш уровень знаний и умение находить оригинальные варианты решения задач.
  3. Тестирование. Часто при поиске сотрудников-джуниоров в качестве первого этапа запускают тест. Это нормальная практика, позволяющая отсеять тех, кто тест вообще не напишет, а также напишет безграмотно.
    Обязательно пишите тесты, вам практика только на пользу, а работодатель сможет оценить ваши плюсы на основе чтения кода.
  4. Резюме. Не поленитесь изучить основные правила и подходы к его составлению. Во-первых, нужно показать умение составлять документы в соответствии со стандартами. Во-вторых, к составлению резюме есть много подходов, позволяющих показать плюсы и скрыть минусы. Пользуйтесь примерами от опытных коллег и советами HR специалистов в интернете.
    Нужно понимать: ваше резюме будет читать изначально, скорей всего, секретарь или рядовой сотрудник-кадровик. И даже если оно попадет сразу на стол к руководителю-программисту, все равно будет просмотрено «по диагонали». Потому очень важно составлять этот документ так, чтобы информация о ваших плюсах была на самом виду.

Собеседование: как себя вести

Ура! Вас позвали на собеседование. Обычная реакция новичка в профессии – страх и неуверенность в себе. Что ж, если вы будете «заикаться» и путаться в азах профессии из-за нервной реакции, скорей всего, об этой работе можно забыть.

А потому берем себя в руки. Вспоминаем об основном правиле рынка труда: выбирают не только вас, но и вы тоже. Как вариант, может помочь мысль: «На такую должность и оклад найти специалиста лучше у них не выйдет, это я к ним снисхожу». Даже если это совсем не так, именно такое ощущение внутри помогает.

Работодатели – такие же люди. Они также чувствуют психологический настрой соискателя. И если вы покажете уверенность в себе, то отношение будет на порядок лучше. Само собой, самоуважение – это ни разу не хамство. Даже если вам безумно страшно, не скатывайтесь на этот уровень. Как и на уровень «ну, пожалуйста, возьмите меня».

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

Если работодатель видит, что вы – спокойны и заинтересованы не просто получить любую работу, но задаете вопросы о своих интересах, это дополнительный плюс. У работодателя складывается ощущение: «видимо, у человека есть и другие варианты, значит, он того стоит».

Поговорим о резюме

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

Особенности составления документа для программистов:

  1. Отправляйте работодателям резюме, где в первых строках будет указаны нужные им знания (языки программирования, фреймворки и прочее).
  2. Если вы знаете несколько разных направлений, составьте по каждому их них отдельное резюме. И отправляйте с учетом специализации.
    Например, для веб-студии – в резюме будет php, html, JavaScript и т.д. А для должности системного администратора лучше рассказать подробнее о глубоком знании операционных систем, умении настраивать сервера, локальную сеть и пр.
  3. Не бойтесь писать об отсутствии опыта работы. В идеале вместо этого можно указать ссылки на портфолио и на какую-то проектную работу, где вы принимали участие в любом качестве (тестировщик, кодер) – и не забудьте честно указать, что вы там делали. Честность – важный фактор. Учтите, что к разработчикам проектов могут обратиться.

Фриланс и работа в компании

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

Плюсы фриланса:

  • Минимальный порог вхождения. Особенно на биржах Рунета. Вы можете принять участие в интересном проекте фактически «с нуля». Правда, и оплата будет минимальной.
    Здесь важнее всего – опыт на будущее плюс мотивация «копейки» на сейчас, что тоже немаловажно. Не просто для себя делать что-то, а за деньги, пусть и небольшие.
  • Возможность накопить достойное портфолио. На биржах фриланса никому не интересен ваш диплом. А вот выполненные проекты и отзывы – очень важны. И после первых проектов вас начнут брать в работу над все более сложными и дорогими решениями.
  • Свобода выбора и графика работы. Вы всегда знаете заранее, над чем будете работать. И можете выбрать, хотите принимать участие в этом проекте или нет. А работать можете из дома или откуда угодно, в том числе, как говорят, «в трусах», т.е. без дресс-кода и надоедливого начальника «над душой».

Минусы фриланса:

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

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

Причины такие:

  1. Возможность получить практический опыт и наработать портфолио.
  2. На международных фриланс-биржах много HR-хантеров от мировых лидеров индустрии. Если вы покажете себя классным специалистом, они к вам сами обратятся с очень достойными продолжениями.

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

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



10 программистов-самоучек, ставших преуспевающими разработчиками

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

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

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

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

1. Как я стала разработчиком-самоучкой в ведущей ИТ-компании. Лексис Хансон

Лексис Хансон окончила колледж по направлению “Бизнес и финансы”. В дальнейшем она стала преуспевающим аккаунт-менеджером, но при этом чувствовала, что эта работа не даёт ей полностью раскрыть себя. Её склонность к критическому мышлению, логике и числам порождала в ней тягу к созданию чего-либо, к разработке.

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

Как ей это удалось?

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

2. Как я сменила мытьё полов в солярии на разработку ПО. Ненна

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

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

Бостон был для неё возможностью начать всё с нуля, учитывая то, кем она хотела бы стать. Предпосылки к этому возникли, когда она пообщалась со знакомым человеком, который закончил университет в Хьюстоне, получив степень в биологии, но в итоге нашёл себя в разработке ПО для iOS. Он прошёл обучающий курс и получил работу разработчика iOS, не имея в этой области соответствующей степени. Этот пример вдохновил Ненну, и она погрузилась в самообучение. Её врождённое любопытство, а также страсть к самообразованию и технологии в итоге привели её в O’Reilly Media в качестве разработчика, где она занялась внедрением инноваций в их обучающую онлайн-платформу. 

Как ей это удалось?

Она принимала все вызовы, которые встречала на пути, никогда не прекращала обучение, верила в себя, прошла 14-недельный курс обучения, использовала свободные онлайн-ресурсы и общалась с окружающими её единомышленниками, в том числе на Meetup.com

3. Прорыв в среду IT без учёной степени. Джейсон Ванг

Джейсон Ванг — из семьи иммигрантов, прибывших в Америку на поиски лучшей жизни. Он поступил в университет на сестринское дело, затем переквалифицировался в международный бизнес, после чего на третьем году обучения решил бросить учёбу. Переехав в Сиэтл, он несколько лет перебивался случайными заработками и размышлял о решительном переходе в индустрию IT. Благодаря поддержке родителей и воодушевлению со стороны друзей, летом 2018 он принял решение “всё или ничего”.

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

Как ему это удалось?

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

4. Уроки, освоенные мной на пути разработчика-самоучки. Виктор Кассон

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

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

Как ему это удалось?

Он начал фокусироваться на процессе, а не на конечном результате, создал прочное основание, стал завсегдатаем Stack OverFlow, организовал среду, позволявшую совмещать ему учёбу и работу, а также поддерживал связь с людьми через Meetup.com

5. Как я заполучил первую должность разработчика? Я готовился к ней как сумасшедший. Джонатан Пак 

Джонатан был типичным подростком, вынужденным к моменту окончания школы сделать один из важнейших выборов в жизни — что именно он хочет изучать в колледже. Он решил поступить на “Обеспечение поставок и логистику”, но спустя два года обучения, Джонатан был обеспокоен чувством неудовлетворённости, которое стал считать чем-то обыденным для студента. 

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

Как ему это удалось?

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

“Дайте мне шесть часов, чтобы срубить дерево, и я потрачу первые четыре на заточку топора.” — Авраам Линкольн.

6. Я трудоустроенный программист-самоучка, обучившийся на бесплатных ресурсах. Антон Одман

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

Как ему это удалось?

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

7. Путешествие разработчика-самоучки Амита Шекхара

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

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

Как ему это удалось?

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

8. Как за 9 месяцев я вырос из новичка в разработчика ПО. Остин Такаберри

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

Спустя девять месяцев и семь дней полного погружения в программирование с сильным намерением сменить деятельность, он в итоге получил своё первое предложение работы.

Как ему это удалось?

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

9. 5 вещей, которым я научилась как разработчик-девушка. Стэйси Гох

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

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

Спустя два года она стала инженером ПО и возглавила связи с разработчиками в компании Oikos.

Как ей это удалось?

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

10. Как перейти в индустрию технологий с помощью самообучения. Джойс Акико.

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

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

Как ей это удалось?

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

Выводы

Самое важное для разработчика-самоучки:

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

Будьте инициативны

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

Продолжайте учиться

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

Создайте прочное основание

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

Ставьте цели и придерживайтесь их

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

Интернет

Использование интернета может оказать существенное влияние на достижение успеха. Никогда нельзя предугадать, насколько окружающие могут помочь, а люди в IT среде зачастую очень к этому расположены. Возьмите пример с Джейсона: познакомьтесь с как можно большим числом профессионалов. Ходите на семинары, пишите сообщения людям на разных платформах, посещайте технологические факультеты и не стесняйтесь обращаться к преподавателям и студентам, которых там встречаете. Можете даже ставить цели по знакомству с определённым числом людей каждую неделю. Возьмите с собой записную книжку, задавайте вопросы и записывайте ответы. Эти люди либо уже находятся там, где хотите оказаться вы, либо идут с вами по одному пути, поэтому учитесь у них.

Будьте настойчивы

Если бы все программисты сдавались при возникновении сложностей, то в мире бы их вообще не было. Если вы легко сдаётесь перед лицом проблем, то никогда не сможете достичь успеха. Вспомним Лексис. Когда она начала искать работу, то несколько раз получала отказ. Тем не менее она продолжала упорствовать и в итоге получила аж три хороших предложения на должность инженера: одно от компании FAANG, второе от стартапа и третье от компании, где уже была трудоустроена.

Верьте в себя

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

Будьте деятельны и не переставайте писать код

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

Что вам теперь делать?

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

Читайте также:


Перевод статьи Angelica Dietzel: 10 Self-Taught Programmers Who Became Full-Time Developers.

Программист-самоучка: полное руководство по профессиональному программированию 1, Альтхофф, Кори, электронная книга

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

Робин Абрамс , член совета директоров, HCL Technologies, FactSet Research, Lattice Semiconductor и Sierra Wireless


«Хотите научиться профессионально программировать? Следуйте совету Кори».

Дэвид Филлипс , соучредитель, Hackbright Academy


«Я невероятно впечатлен этой книгой.»

Джоанн Бьюкенен , старший научный сотрудник, Институт мозговых исследований Аллена


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

Дерек Шефер , старший финансовый менеджер, Чарльз Шваб


« Программист-самоучка было приятно читать — то, о чем я никогда не думал Я бы сказал о технической книге ».

Мелинда Сакс , бывший писатель, редактор, San Jose Mercury News


« Одна из лучших книг по дизайну программного обеспечения всех времен »

— BookAuthority

Я потратил год на написание Программиста-самоучки .Это был захватывающий и полезный опыт. Я относился к своей книге как к программному проекту. Закончив писать, я создал программу, которая выбирала все примеры кода из книги и выполняла их на Python, чтобы убедиться, что все 300+ примеров работают правильно. Затем я написал программу для добавления номеров строк и цвета в каждый пример кода. Наконец, я попросил группу из 200 новых программистов «бета-версию» прочитать книгу, чтобы определить плохо объясненные концепции и найти любые ошибки, пропущенные моей программой.

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


Надеюсь, вы научитесь читать мою книгу так же много, как я ее писал. Удачи в программировании!

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

Так как вы не из информатики, вам нужны некоторые навыки, которые будут отражены в вашем резюме. Изучите основы HTML, CSS и BOOTSTRAP.

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

Вариант 1

Путь, чтобы стать Front End разработчиком.

  • Выучите JavaScript в хорошей мере. Это будет очень важно в вашем путешествии в качестве фронтенд-разработчика.
  • Пришло время выбрать фреймворк, включающий ReactJS, AngularJS, VueJS.
  • Вы можете выбрать любой из трех, но похоже, что в настоящее время в ReactJS больше рабочих мест для разработчиков.
  • Для изучения ReactJS используйте это бесплатное руководство на YouTube — Learn React JS — Полный курс для начинающих
  • Начните изучать фреймворк и попробуйте создать несколько проектов. Эти проекты сыграют важную роль в отделении вас от толпы, которая в ближайшем будущем подаст заявку на работу, но еще не создала проект.

Option 2

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

  • Когда-то отличный ресурс для изучения Django — Django Girls Tutorial
  • На этом веб-сайте все подробно описано, если вы хотите изучить Django. Используя этот веб-сайт, вы сможете создать свой собственный блог, а также как разместить веб-сайт в Интернете.
  • Если вы знаете основы Javascript, вы можете изучить NodeJS. NodeJS — отличный фреймворк для изучения.
  • За последние несколько лет спрос на разработчиков NodeJs сильно вырос. Итак, изучение NodeJS может изменить вашу карьеру.

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

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

Option-3

Путь к тому, чтобы стать разработчиком Android

Путь к тому, чтобы стать разработчиком Android, не будет таким легким. Как всегда, вы должны сохранять познавательную позицию. Чтобы выучить Android, вам нужно выучить любой из языков между Java или Kotlin. Если вы начинаете свой путь с Android, я предлагаю вам сначала начать с Java, а затем переключиться на kotlin, когда вы попрактикуетесь в создании некоторых приложений на Java.

  • Сначала вы должны изучить основы Java. Затем вам нужно будет изучить все концепции объектно-ориентированного программирования на Java.
  • Начните с основ разработки Android, таких как кнопки, макет и т. Д.
  • Создавайте проекты, как только вы завершите основы и разместите весь код онлайн на github, чтобы вы могли показать его потенциальным компаниям.
  • Я не могу выразить словами то чувство, которое вы испытаете, когда увидите свое приложение на своем телефоне.

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

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

3 распространенных ошибки программистов-самоучек, которые вы можете совершать — Книги по кодексу

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

Как «гибридный» программист-самоучка, который посещал уроки информатики, но не получил степени CS, я каждый день становлюсь ближе к командному самообучению, особенно сейчас.

Рекламные ссылки В одном осеннем семестре я проходил курс математики в местном общественном колледже.Этот класс был лишь одним из бесконечной череды курсов математики и физики, которые учитывались для получения степени CS. Когда я работал на полную ставку, мои ночи и выходные были истощены. Я не занимался программированием, чтобы не отставать от основных классов CS.

Безнадежно, я чувствовал, что конца не видно. Я подумал про себя: Когда я смогу получить эту степень, чтобы сосредоточиться на тех навыках, которые имеют значение? Я уже работал веб-разработчиком и в настоящее время занимаюсь программным обеспечением, но я хотел перейти на следующий уровень в своей карьере.Это длилось вечно, и я не заботился о себе — не находил способности готовить для себя или заниматься спортом.

При такой скорости я смотрел на годы работы. И не было финиша — не было момента знать, когда я успешно добрался до .

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

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

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

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

Программист-самоучка говорит:

[D] Не забывайте, что некоторые из самых успешных людей в мире — программисты-самоучки. Стив Возняк, основатель Apple, программист-самоучка. То же самое и с Маргарет Гамильтон, получившей Президентскую медаль свободы за свою работу над космическими миссиями НАСА «Аполлон»; Дэвид Карп, основатель Tumblr; Джек Дорси, основатель Twitter; и Кевин Систром, основатель Instagram.

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

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

10 программистов-самоучек, которые стали разработчиками на полную ставку | Анжелика Дитцель

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

Будьте изобретательны

Помните, что практически все, что вы хотите узнать, можно найти в Интернете. Ключ к тому, чтобы стать отличным разработчиком, — это способность решать проблемы и находить ответы самостоятельно. Как и Антон , он находил ресурсы в Интернете и обучался самостоятельно, не тратя ни копейки! Воспользуйтесь этими бесплатными образовательными ресурсами.

Никогда не прекращайте учиться

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

Создайте прочный фундамент

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

Ставьте цели и придерживайтесь их

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

Сеть

Работа в сети может быть очень важной для вашего успеха, никогда не знаешь, что может исходить от окружающих вас людей — большинство технических специалистов всегда готовы помочь. Как и Джейсон , познакомьтесь с как можно большим количеством профессионалов. Посещайте встречи, общайтесь со случайными людьми в LinkedIn, посещайте технологический кампус и обращайтесь к каждому сотруднику, которого вы видите. Даже поставьте перед собой цель встречаться с определенным количеством новых людей каждую неделю.Возьмите с собой блокнот, задавайте вопросы и записывайте ответы. Эти люди уже там, где вы хотите быть, или на том же пути, что и вы — учитесь у них.

Будьте настойчивы

Если бы все программисты сдались, когда стало трудно, в мире не было бы программистов. Если вы легко сдадитесь перед лицом проблем, вы никогда не добьетесь успеха. Как и Lexis , когда она, наконец, добралась до процесса подачи заявления о приеме на работу, ей много раз отказывали. Однако она продолжала придерживаться этого принципа, и в конечном итоге у нее на выбор было три действительно отличных инженерных предложения — одно от компании FAANG, одно от стартапа и одно от компании, в которой она уже работала.

Верьте в себя

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

Действуйте и никогда не прекращайте кодировать

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

Подробное руководство, как стать программистом-самоучкой | Адитья Патанж

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

Дональд Кнут: Несомненно, один из величайших компьютерных ученых, которых когда-либо видела эта область.

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

1. Изучите C ++ и начните писать простые программы

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

На чем сосредоточить внимание: Написание кода на C ++ заставит вас почувствовать себя более программистом, потому что вы больше приближаетесь к описаниям на уровне машины.Узнайте разницу между синтаксисом и семантикой. Потратьте время на изучение статической и динамической типизации, управления памятью и указателей. Научитесь реализовывать условные выражения, циклы, функции, типы данных и все, что вы узнали в Python, снова и снова на C ++. Если все это похоже на греческий и латинский языки, не волнуйтесь. В разделе ресурсов вам все будет ясно.

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

2. Чтение документации должно быть для вас второй натурой

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

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

3. Практика. Повторить. Упражняться.

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

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

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

4. Хорошее понимание рекурсии

Это поможет вам лучше понять рекурсию. Ха-ха.

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

Резюме

На данный момент вы знаете язык низкого и высокого уровня и можете в достаточной мере оценить различия в «контроле», который вы имеете над своими программами. К настоящему времени вы должны уметь писать простые программы с использованием Python и C ++ и понимать разницу между обоими языками.

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

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

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

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

Чем это отличается от обычной программы бакалавриата? Обычные учебные программы бакалавриата сильно загружены теорией.Курсы, которые я предложил в разделе ресурсов, хорошо сочетают теорию и практику. Хотя это может быть хорошо для начинающих инженеров, для неспециалистов это не очень полезно. Вы теряете из виду, где заканчивается теория и начинается практика. Я точно укажу, что вам нужно изучить с теоретической точки зрения, чтобы вы могли сразу приступить к практике. Теория — это всего лишь инструмент, который поможет вам написать лучший код на этом этапе, поэтому не увязайте в ней слишком сильно.

Интересный факт: На втором семестре инженерного факультета у нас был предмет под названием СУБД (системы управления базами данных).Я был удивлен, обнаружив людей, которые рисовали лучшие ER-диаграммы для своих проектов баз данных, но когда дело доходило до фактического проектирования базы данных для практических приложений, они терпели неудачу. Они были настолько сосредоточены на правильном отображении деталей диаграммы, что забыли саму причину, по которой они это делали. Я не виню их, потому что их никогда не учили, что диаграммы нужны им для создания лучших баз данных, а не для улучшения их навыков рисования.

1. Дискретная математика

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

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

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

2. Структуры данных и алгоритмы

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

Линус Торвальдс построил ядро ​​Linux — то, без чего Android не был бы тем, чем он является сегодня.

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

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

3. Передовой опыт

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

Что ты умеешь? Уделите время пониманию и применению принципа СУХОЙ (не повторяйтесь) на практике. Не пишите повторяющийся код, так как это замедлит вашу работу и сделает вас более склонными к ошибкам. Пишите полезные комментарии и документацию везде, где можете. Когда я начинал, я думал, что это глупо, пока однажды я не открыл старый проект и не понял, что весь мой код непонятен.Программисту не нужно много запоминать. Вы запоминаете, что важно, и ищите то, что нужно.

4. Контроль версий (Git)

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

5. Объектно-ориентированное программирование

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

6. Практикуйтесь усердно

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

Брюс Ли: Сверхчеловек. R.I.P legend

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

Резюме

Вы знаете более чем достаточно для создания программного обеспечения, которое изменит правила игры.Вы должны усвоить все до этого момента, чтобы перейти к следующему шагу. Отсюда дополнительная теория не принесет вам никакой пользы. Вы должны вкладывать время исключительно в практику и создание полезных проектов. Программирование — это прикладная наука: следуйте правилу 80/20, что означает 80% времени посвящать практике и 20% чтению теории.

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

Я всегда вдохновлялся Марком Цукербергом за его неизменное отношение к свержению неудач

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

  1. Определите проблему, над которой вы работаете, и подробно изложите детали. Четко сформулируйте свои цели и задачи.
  2. Посмотрите существующие или похожие проекты и определите, где они лучше всего, а где нет. Посмотрите, где ваша идея вписывается, как проект согласуется с целями и задачами, которые вы имеете в виду, и запишите все.
  3. Составьте список всех навыков, которым вам необходимо овладеть для выполнения проекта, и того, в какой степени вам необходимо развить навыки для выполнения проекта.Знайте свои сильные и слабые стороны.
  4. Создайте план, чтобы получить необходимые навыки. Найдите нужных людей, которые помогут вам, и необходимые учебные пособия для начала работы. Сосредоточьтесь исключительно на развитии навыков, необходимых для выполнения вашего проекта. Легко увлечься погружением в глубину. Помните, что вы изучаете навыки, необходимые для выполнения проекта, а не пишете докторскую диссертацию. дипломная работа по ней. Если только это не твоя цель.
  5. Начните работу с проектом, обновите свои цели и задачи и четко обозначьте свои сильные и слабые стороны.Разбейте проект на выполнимые подзадачи и назначьте для каждой метрику объективности. Это означает, что вам нужно знать, когда перестать гнаться за совершенством и сосредоточиться на общей картине.
  6. Казнить нетерпеливо. Повторяйте, пока все ваши цели не будут выполнены.

Прочтите это, чтобы узнать, как научиться лучше учиться.

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

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

Как устроиться на первую работу программистом-самоучкой

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

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

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

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

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

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

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

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

Итак, приступим.

Распространенные заблуждения о разработчиках-самоучках

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

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

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

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

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

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

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

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

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

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

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

Самый надежный способ получить первую работу программиста

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

  1. Займите любую офисную должность в компании, в которой есть группа разработчиков программного обеспечения.
  2. Сообщите разработчикам, что вы можете писать код и добровольно помогать им в их задачах.
  3. В случае успеха постепенно переходите на постоянную должность разработчика программного обеспечения.

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

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

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

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

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

Учебные лагеря

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

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

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

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

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

Моя собственная история

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

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

Степень магистра имела некоторое отношение к информатике, но лишь смутно. Я немного изучал управление проектами, реляционные базы данных и географические информационные системы (ГИС), но я ничего не изучал о кодировании. Итак, когда я начал учиться программировать, я начинал с нуля.

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

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

Довольно много задач, которые я выполнял, были утомительными и повторяющимися, поскольку я копировал большие объемы данных в электронные таблицы Excel. Так было до тех пор, пока мои коллеги не намекнули мне, что в Excel есть встроенный язык программирования VBA, что означает Visual Basic для приложений. Это был язык, который мог автоматизировать довольно многое из того, что я делал. Итак, я начал активно его изучать.

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

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

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

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

К счастью, выучить второй язык программирования всегда намного проще, чем выучить первый.Вам останется только изучить особенности синтаксиса языка. Другие языковые структуры, такие как функции, поток управления, условная логика и т. Д., Вы уже знаете, изучая свой первый язык. Итак, хотя синтаксис C # и VB сильно различается, познакомиться с C # было относительно легко.

Когда я стал достаточно уверенным в C #, я начал отправлять свои приложения различным ролям разработчиков программного обеспечения. Вскоре я получил должность веб-разработчика. Мне потребовалось около 18 месяцев между началом программы выпускника и получением должности чистого разработчика программного обеспечения в другом месте.

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

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

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

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

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

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

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

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

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

Подведение итогов

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

  1. Займите любую офисную должность в компании, в которой есть группа разработчиков программного обеспечения.
  2. Сообщите разработчикам, что вы можете писать код и добровольно помогать им в их задачах.
  3. В случае успеха постепенно переходите на постоянную должность разработчика программного обеспечения.

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

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

6 жизненных уроков от программиста-самоучки

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

Никогда не сдавайся

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


« Победители никогда не сдаются, а бросившие никогда не выигрывают»

Планирование — ключ к успеху

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


«Цель без плана — это просто желание».

Ошибки — секрет успеха

Если вы не ошибаетесь, то уверены ли вы, что делаете это правильно? 🤔 Есть много людей, которые боятся ошибок или делают ошибки, но поверьте мне, вы не научитесь, пока не сделаете одну.Например, при кодировании на Java вы не узнаете, что каждый оператор заканчивается точкой с запятой, если только вы не пропустите ее и не получите сообщение об ошибке. Так что в следующий раз будьте особенно осторожны. Точно так же в реальной жизни, если вы не пьете горячее молоко и не обожаетесь, вы не будете знать точную безопасную температуру для питья молока. Мораль такова: ошибки ведут к обучению, обучение ведет к меньшему количеству ошибок в будущем, и это в конечном итоге делает вас успешным.


«Самая большая ошибка, которую может совершить человек, — это бояться ее совершить»

Все о решении проблем

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


«Проблемы — это не знаки остановки, это рекомендации»

Вы должны научиться самостоятельно

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


«Никогда не прекращайте учиться, потому что жизнь никогда не перестает учить»

Будьте последовательны

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


«Успех — это не всегда величие.Речь идет о последовательности. Последовательная и упорная работа ведет к успеху. Придет величие. ”

Начните реализовывать вышеупомянутые пункты, замедляясь, и вы увидите разницу. Что ж, для нас программирование — это жизнь, а жизнь — это программирование. Живите с тем, что делать, и вы увидите, как творит чудеса.