Как стать программистом: инструкция по «горячим следам» вчерашнего новичка
41К открытий41К показов
Рассказывает Игорь Филипенко, Java-разработчик
Совсем недавно в блоге IT-образовательного портала GeekBrains я описал свою историю, связанную с программированием. Я хочу поделиться с вами материалами, которые я нашел в процессе обучения и которые посчитал наиболее полезными. Подборка разделена на блоки, потому что ориентирована на программистов сразу нескольких специальностей.
Сразу оговорюсь: я — новичок в области IT, и эта статья — не истина в последней инстанции, а моё личное видение тех или иных аспектов программирования, подкреплённое какими-то источниками информации.
«Для чайников»
Если вы совсем уж новичок и знаете лишь, что кто-то как-то создаёт сайты, игры, мобильные приложения и пр., но хотя бы приблизительного понимания того, как это делается, у вас нет, то посмотрите запись вводной лекции «Первые шаги по построению карьеры в IT». После просмотра у вас появится понимание, что и где примерно применяется (в видео освещаются не все вопросы, конечно, но если нужной информации там нет, то вы можете найти её самостоятельно).
Дальше нужно познакомиться с базовыми понятиями и основными принципами программирования. Вам следует прочитать в сети, что такое процедурное и объектно-ориентированное программирование. У Tproger, кстати, есть серия материалов по ООП. Второе без первого не существует, и начинать нужно с «процедурки». Поэтому записываемся на курс «Основы программирования» GeekBrains и проходим. Прошли? Если да, то теперь у вас есть понимание того, что такое переменная, условный оператор, цикл и массивы.
Понравилось? Не тошнит? Хорошо, двигаемся дальше!
А дальше нужно закрепить изученное и получить ещё знаний по процедурному программированию. Для дальнейшего развития я бы рекомендовал С++. Можно выбрать Python, который покажется более простым, можно продолжить с JavaScript. Тем не менее, для отработки основных понятий С++ будет полезнее. Во-первых, многие языки Си-подобны. Во-вторых, это мощный инструмент в умелых руках и при его изучении вы «поковыряете» указатели, а также узнаете много интересных вещей, связанных с памятью и работой с ней. В той же Java прямого доступа к памяти нет, С++ же позволяет извращаться над железом, как вам захочется.
Есть 3 хорошие книги:
- Р.Лафоре: «Объектно-ориентированное программирование в C++» — эта книга понравилась мне тем, что в ней доходчиво всё объяснено и много схем. Информация, представленная схематически, мне даётся легче. При работе с этой книгой помните, что темы ООП там идут вперемешку с процедурным программированием. Подробнее о темах чуть ниже.
- Х.Дейтел, П.Дейтел: «Как программировать на C++» — это тоже очень толковое учебное пособие.
- С.Прата: Язык программирования С. Лекции и упражнения
Кстати, есть еще список книг для изучения C++, которые рекомендует сам создатель этого языка программирования — Бьерн Страуструп.
Ваша задача пройтись по основам программирования и хорошенько разобраться, что же такое переменные, условные конструкции и тернарный оператор, циклы и особенно вложенные циклы, массивы и многомерные массивы, функции, передача данных в функцию по ссылке и значению, структуры, указатели и пр. Прочитав теорию, обязательно практикуйтесь. Берите задачи из книги Дейтелов. В качестве IDE я рекомендую Visual Studio или CodeBlocks. Но есть и другие популярные варианты.
Теперь вы ознакомились с базовыми операторами и конструкциями программирования, дальше имеем 2 варианта:
- Вы уже выбрали язык программирования и область, к которой стремитесь;
- Вы ещё не определились.
И по одному и по другому вопросу мы вновь должны поработать. Заходим на Sololearn и проходим нужные нам курсы.
Если вы выбрали язык программирования, то проходите все курсы, связанные с ним. Например, для веб-разработки однозначно надо изучить PHP, Python, HTML, JavaScript, CSS и SQL. Эти знания потребуются дальше в ваших проектах. Выбрали С или Java? Вместе с С++ учите SQL, с Java учите SQL, HTML, CSS, JavaScript. Наверное у вас невольно возникает вопрос: «Почему с Java нужно учить веб-технологии?» Отвечаю: «Эти технологии активно используются в проектах, где живёт этот язык программирования». Вы делаете что-то на серверной части: сервлеты и прочее? Возможно, вам придётся хотя бы немного коснуться фронтенда. Вы пишете под Android? Android-приложения тоже верстаются, но там за основу взят не HTML, а XML, однако общие принципы у них похожи, поэтому лучше сейчас потратить лишние пару часов и изучить HTML. Выбрали C#? Набор технологий будет таким же, как в Java. Про Swift я знаю мало, но думаю, что и для него вам понадобятся элементарные знания технологии вёрстки.
Прошли курсы на Sololearn, что теперь? Я очень рекомендую посмотреть семинар «Что такое ООП и с чем его едят?»
Тут стоит обратить внимание на то, что автор рассказывает о 6 парадигмах ООП. Скажу честно: в двух местах я пытался интервьюерам рассказать, что их 6 и какие они. К сожалению, к этому они отнеслись скептически, потому что в мире все обсуждают в большей степени 4 парадигмы, но обмен сообщениями и повторное использование объектов никто не отменял, поэтому этому материалу стоит уделить внимание.
Дорогой читатель, к этому моменту ты должен уже был определиться с той областью программирования, в которой ты хотел бы трудиться. К сожалению, я всего не знаю и дальше речь пойдет о технологиях, связанных с Java и JavaScript. Другими вещами я просто не занимался, но дальше я поделюсь ресурсами, где обозревается куча разных других технологий.
DWiki — это список всякого разного. Со многими порталами я познакомился и могу сказать, что подборка очень хорошая, особенно для начинающих программистов. Если у вас плохо с английским, то посмотрите на Интуит, Hexlet и ITVDN, ну и конечно же, на GeekBrains. Для тех, кто чувствует себя увереннее в английском языке, подойдут академия Хана, Udacity, Lynda и т.д.
Английский язык
В заключении этой первой части я хочу коснуться ещё одной важной для айтишника темы — английского языка. Английский язык нужен программисту по нескольким причинам:
- Вы неизбежно столкнётесь с нехваткой информации в Рунете по интересующим вас темам. Иностранные программисты постоянно пилят какие-то гайды и прочие ништяки, которые будут очень полезны, но чтобы их понимать, нужно знать английский.
- Работа над проектом построена таким образом, что между программистами распределяются задания. Для координации специалистов используются RedMine, GitLab (кстати, познакомьтесь с редмайном, просто для себя зарегистрируйтесь и пощупайте данный сервис) и прочие программы, позволяющие агрегировать информацию по проекту в одном месте. Тут же вам “тимлид” будет давать задания и за вашей командой будет наблюдать клиент, который будет вносить правки по заданиям и писать комментарии. Как думаете, на каком языке он это будет делать?
- И наконец, вы сами, вполне возможно, вынуждены будете контактировать с клиентом напрямую. Тут вам тоже пригодится английский.
Более развернутые ответы дали несколько экспертов Tproger.
В IT-компаниях всегда спрашивают про английский, на собеседовании даже предложат пообщаться с HR на английском. В основном это простой диалог, в котором вы расскажете, какой вы молодец.
Подытожим вышесказанное. Какой уровень владения языком нужен? Обычно требуется Intermediate. Но не пугайтесь, во многих компаниях всё не настолько строго, с вас будет достаточно:
- Понимать язык и читать документацию, туториалы на английском;
- Вести диалог с собеседником более или менее свободно.
Вы можете делать какие-то ошибки, но вы должны говорить и иметь какой-то словарный запас. Или есть другой выход: вы должны быть хорошим специалистом. У нас на работе есть парень, который в предложении делает по 5 ошибок, но он понимает код в документации и работает отлично. Но пока вы, скорее всего, не самый крутой программист, поэтому мы немного подтянем ваш английский. В сети существует море курсов, методик и прочего хлама. Есть даже курсы типа «английский для айтишников». Большая часть из этого — шлак. Я вам предлагаю найти двухтомник от Бонка, Котия и Лукьяновой и работать по нему.
Причём работать нужно следующим образом. Там есть теория, есть упражнения на грамматику, перевод и т.п., и есть тексты. В конце каждой главы вы должны сделать хотя бы 2-3 упражнения. Желательно найти человека, который их проверит. Я бы поискал какой-нибудь форум по изучению английского и попросил бы там помощи. Уверен, кто-то знающий откликнется и согласится проверить ваши задания. В каждой главе вы должны пересказать текст, причём использовать новые слова, которые идут после текста. Если вы подойдёте к делу сознательно, то уже после первого тома вы сможете вполне неплохо понимать и использовать английский. Что касается технических терминов, поверьте, их усвоить будет легко. Когда начнёте изучать туториалы на английском, впитаете нужные термины автоматически. Поэтому не бойтесь учить язык и не влезайте в крайности. HR’ы в компаниях будут запугивать и скажут, что нужно быть ну просто англичанином. Это не совсем так, но и знать элементарные вещи необходимо.
В итоге
Это была первая часть моего материала с ссылками и советами начинающему программисту. Я очень надеюсь, что мой труд не пропадёт даром, и эта информация кому-то будет полезной. В следующих выпусках я расскажу о материалах по Java, Android и некоторым вещам, связанным с JavaScript. Ещё раз подчеркну, что цикл этих материалов — моя личная точка зрения, которая не является истиной, и за вами всегда остается право прислушаться к ней или пройти мимо. Успехов вам в изучении программирования, до скорых встреч!
41К открытий41К показов