Привет!
У меня было много интересных разговоров с людьми о том, как трудно стать разработчиком и как почти невозможно получить работу без диплома в области компьютерных наук. Для меня это действительно интересная тема, и я думаю, что многие могут найти в этом отклик, поэтому я решил написать об этом немного подробнее.
Учёба
Давайте поговорим об учебе. Распространено мнение, что во время учебы вы узнаете все, что вам нужно знать. Но это не так. Давайте начнем с самого начала и остановимся на реальных деталях.
Чтобы получить диплом, мне потребовалось пять лет (3,5 года/7 семестров для бакалавриата и 1,5 года/3 семестра для магистратуры).
Конечно, это может занять больше времени, если вы не сдадите некоторые экзамены и вам придется их пересдавать. Если учесть, что на изучение чего-либо дается 5 лет, то представьте, сколько это времени!
У меня было много разных предметов, некоторые были связаны с информатикой, а некоторые - нет. Если я правильно помню, у меня было восемь или девять различных математических предметов, две разных физики, физкультура и некоторые другие, более ненужные предметы (на мой взгляд).
Положительным моментом является то, что в течение этих 5 лет я много занимался программированием на различных языках, таких как C, C++, Java, Python, MATLAB, PHP, JavaScript, HTML & CSS. Было два разных предмета о базах данных, несколько об алгоритмах, структурах данных, компиляторах, программной инженерии, основах информатики и сетевых технологиях.
Вы можете подумать, что все это было очень полезным и нужным, но добавьте в уравнение, что между вторым и третьим курсом (4 и 5 семестр) я начал работать на полставки в качестве Ruby-разработчика.
Прежде чем начать работу, мне нужно было знать что-то о базах данных, структурах данных, алгоритмах, git, HTML, CSS, JavaScript и Ruby.
К сожалению, большинство из этих вещей я узнал только в 5-м семестре или позже, если вообще узнал, поэтому мне пришлось изучать все самостоятельно.
Это было не так просто, особенно когда нужно учить несколько разных предметов, готовиться к экзаменам, работать над различными проектами и вести социальную жизнь.
Я начал изучать Ruby (который не был включен в программу моего обучения), JavaScript и базы данных. Я знал некоторые основы HTML и CSS, что в какой-то момент оказалось полезным. Я занимался по ночам, спал по 3-4 часа... Это было решение, которое я принял, и у меня была огромная мотивация узнать что-то отличное от того, чему учат в университете.
На самом деле, в то время у меня не было этих технологий в учебе - так что в данном случае учеба совсем не помогала. Более того, я тратил больше времени на изучение чего-то другого. На самом деле, ситуация развивалась бы точно так же, если бы я выбрал совершенно другой предмет для обучения, учился бы в свободное время и работал бы на полставки разработчиком программного обеспечения.
Можно ли стать программистом без высшего образования?
Есть много способов, которыми можно изучать информатику и программирование; решающее значение имеют планирование и мотивация.
Не думайте, что это будет легко, я повторюсь: вы должны быть последовательны и настойчивы, даже если вам кажется, что у вас ничего не получится. В начале все трудно, поверьте мне. Даже сейчас, когда я изучаю что-то новое в мире ИТ, вначале все не так просто.
Сколько времени нужно, чтобы стать разработчиком? Вы должны быть терпеливы и тратить на это много своего свободного времени.
Вы не научитесь этому за одну-две недели или даже за несколько месяцев. Это как при изучении нового языка - вы не выучите английский за два месяца, даже если будете тратить на него большую часть своего дня и у вас есть человек, с которым вы можете практиковаться.
Вы должны подготовить свой план и подумать о том, сколько времени вы сможете уделить ему. Есть ли у вас свободные два-три часа в день? Можете ли вы посвящать этому каждый день? Регулярность - это самое важное. Лучше заниматься каждый день по два часа, чем один раз в неделю целый день. Этот день не всегда будет доступен для вас.
Курсы по программированию
Я заметил, что многие люди, которые хотят сменить профессию или научиться программированию, посещают буткемпы или курсы. Что такое буткемпы? Буткемп - это что-то вроде ускоренного курса, обычно он длится два или три месяца (8 часов в день, 5 дней в неделю), и вы учитесь кодировать с помощью преподавателей.
Возьмем для примера буткемп по Ruby. Там вас учат, как писать на Ruby и как использовать базы данных. Вы делаете свой первый реальный проект в команде, и впоследствии благодаря этому вы действительно хорошо разбираетесь в основах и можете найти свою первую работу.
На мой взгляд, это действительно хорошая инициатива. Есть также много курсов, которые стоят недорого, можно даже брать в рассрочку.
Я почти уверен, что по окончании курса у вас будет такое же прочное базовое понимание, как и после буткемпа. Более того, вы сможете учиться, когда захотите.
На курсах обучать вас будут только самому необходимому, практичному и эффективному. У вас будет даже диплом, возможность сразу после курса найти работу. Это отличный вариант для тех, кому сложно обучаться самостоятельно!
Вот несколько примеров лучших курсов, которые я могу вам посоветовать:
Программная инженерия
Язык программирования - это еще не все; это только начало. Вам также необходимо знать, как работают базы данных, как пользоваться терминалом, как тестировать и развертывать приложение на сервере, как настраивать сервер (если вы не хотите использовать готовое решение), как использовать Git (систему контроля версий для отслеживания изменений в компьютерных файлах) и многое другое.
С другой стороны, мы не говорим о том, чтобы претендовать на должность инженера-программиста в Google или Amazon, поэтому действительно подробные знания по информатике не потребуются в вашей работе.
Более того, они не потребуются ни до того, как вы начнете учиться, ни даже когда вы будете искать работу.
Будучи веб-разработчиком, вы не создаете очередную операционную систему или язык программирования.
Мы используем инструменты, которые были изобретены кем-то другим. На начальном этапе вам не нужно ничего знать о том, как работает системная память, что такое поток и так далее. Вам просто нужно выучить некоторые основы - бонус, если вы их уже знаете - об алгоритмах, структурах данных, переменных, функциях, условиях и т.д.
Университетское образование. Что изучать, чтобы стать разработчиком программного обеспечения?
Еще один важный момент - упомянуть о степени в области компьютерных наук: многие люди думают, что без неё невозможно найти работу. Что ж, все зависит от политики и требований компании.
Задумайтесь на секунду: что лучше - нанять действительно знающего, опытного человека без степени в области информационных технологий или выпускника факультета информационных технологий без каких-либо специфических знаний, который кажется обычным человеком?
Я думаю, что вы сами можете ответить на этот вопрос.
Помню, когда я набирал людей в Nopio, я никогда не обращал особого внимания на то, есть ли у кандидата степень в области информационных технологий или нет. Для меня самым важным было то, умеет ли человек писать код и что он умеет.
Доказать, что вы подходите для этой работы, не так уж сложно. Вы можете самостоятельно заниматься какими-то действительно крутыми проектами, упомянуть их в своем резюме и дать ссылку на исходный код. Помните, что диплом не пишет ваш код, это делают ваши навыки. Также неважно, как и где вы их получили!
Источники
Где же найти источники? Можно найти множество бесплатных онлайн-курсов, электронных книг, учебников и скринкастов. Конечно, вам не обязательно платить за них, но есть несколько действительно классных платных ресурсов, на которые стоит обратить внимание.
Давайте начнем с онлайн-курсов по разработке программного обеспечения. Можно начать с Fullstack-разработчик, Профессия Веб-разработчик. Существует огромное количество курсов, которые разделены по направлениям, вы можете подробно ознакомиться с каждым и выбрать свою стезю. Эти сайты - действительно хорошее место, чтобы начать и сделать первые шаги.
Для получения другой полезной информации вы также можете ознакомиться с официальной документацией. В ней описывается, как работает та или иная часть языка или фреймворка.
Для тех, кто только начинает, это то, к чему вы можете вернуться позже, поскольку это более продвинутый материал.
Если вы ищете электронные книги, то почти все, что вы можете найти, находится на странице it-ebooks. Здесь представлены бесплатные и полные электронные книги по ИТ, которые вы можете читать онлайн или скачать на свой жесткий диск. Они бесплатны как для частного, так и для личного пользования.
Я заметил, что у многих IT-компаний также есть технологические блоги, где они пишут о различных языках программирования, проблемах и интересных вещах.
Как научиться программировать самостоятельно?
Лучший способ - учиться на практике. Чтение слишком большого количества книг или статей приведет к тому, что через некоторое время вы забудете прочитанное. Вместо этого, когда вы чему-то научитесь, не копируйте код, а попробуйте набрать его самостоятельно и подумайте, что там происходит.
Если вы совсем новичок в веб-разработке, начните с HTML и CSS. Каждая страница использует эти технологии. Более того, HTML и CSS не так сложны и являются основополагающими для веб-страниц.
Когда вы полностью поймете, что такое HTML и CSS, вы можете попробовать самостоятельно создать небольшую веб-страницу или даже скопировать существующую и создать ее с нуля. Это называется "учиться на практике". Даже если вы не знаете, как что-то сделать, попробуйте поискать.
Одна из самых важных вещей - знать, как и где искать информацию, решения или почти все остальное. Если вы не знаете, как создать веб-форму, попробуйте поискать: как создать веб-форму с помощью HTML. Скорее всего, вы найдете это в первых пяти результатах поиска.
После того как вы выполните свой первый проект и почувствуете себя комфортно с HTML и CSS, попробуйте создать что-то действительно простое на JavaScript. Опять же, хорошая идея - начать с малого.
Вы наверняка заметите, что вам не хватает такой вещи, как история изменений - чтобы проверить, что вы изменили, как это выглядело несколько дней назад. На этом этапе вам стоит узнать, как пользоваться git - системой контроля версий для отслеживания изменений в компьютерных файлах.
Этот инструмент отслеживает изменения ваших файлов и способен показать различия между всеми изменениями. Действительно, я не могу представить себе проект без Git. Было бы практически невозможно отслеживать изменения и видеть, что было изменено, когда и кем.
После знакомства с Git'ом начните изучать Ruby и то, как писать код. Узнайте, что такое переменная, класс, что такое метод и как написать свой первый скрипт.
После этого вы можете приступить к разработке своего первого веб-приложения - следуйте учебникам, а затем попробуйте создать что-то действительно простое самостоятельно. Я почти уверен, что вы найдете что-то, пройдя любой курс.
Когда вы начнете делать веб-приложения, вы узнаете что-то о базах данных, о том, как работает веб-запрос, или о том, как развернуть приложение на рабочем сервере - например, Heroku. Вы найдете все, что вам нужно - все, что вам нужно, это набрать в Гугле правильный ресурс, например: "как развернуть Rails-приложение на Heroku?".
Не забывайте быть последовательным; лучше потратить один час каждый день и сконцентрироваться на этом, чем два часа ничего не делать.
Еще одна вещь - компьютер, вы можете использовать свой текущий ПК, без необходимости покупать Mac или что-то более мощное, даже 5-летний компьютер подойдет для начала.
Трудно ли получить работу программиста?
Когда вы чувствуете себя достаточно сильным в веб-разработке, уже создали несколько личных проектов и знаете, как работает HTTP-запрос, что такое контроллер, проблема N+1 запроса, как использовать индексы в базе данных - вы можете начать подавать заявку на свою первую работу.
Есть много компаний, которые ищут новичков и стажеров. Это неправда, что вы не можете найти работу как новичок. Просто нужно хорошо поискать. .
Не надейтесь получить работу после первого же собеседования. На каждую вакансию, вероятно, приходится около двадцати или более кандидатов. Будьте реалистами и дайте себе достаточно времени. Используйте эти собеседования, чтобы понять, что для вас является наиболее сложным, что вам следует улучшить и где у вас есть проблемы.
Помните, мир принадлежит вам! Наберитесь терпения, и в конце концов вы научитесь программировать и найдете свою первую работу разработчика программного обеспечения. Удачи!
До новых встреч!