Найти тему
GeekBrains

Мини-Клондайк начинающего программиста. Часть 1

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

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

Если вы совсем уж новичок

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

-2

Посмотрели? Итак, теперь вы понимаете, что и где примерно применяется (всего в видео не освещается, если по какой-то причине нужной информации там нет, вы можете найти её самостоятельно). Дальше нужно как-то познакомиться с базовыми понятиями и основными принципами программирования. И тут вам следует прочитать в сети, что такое процедурное и объектно-ориентированное программирование. Второе без первого не существует, поэтому начинать нужно с “процедурки”.

Поэтому записываемся на курс “Основы программирования” на GeekBrains и проходим. Прошли? Если да, то теперь у вас есть понимание того, что такое переменная, условный оператор, цикл и массивы.

Понравилось? Не тошнит? Хорошо, двигаемся дальше!

А дальше нужно закрепить изученное и получить ещё знаний по процедурному программированию. Для дальнейшего развития я бы рекомендовал С++. Можно выбрать Python, который покажется более простым, можно продолжить ковырять JavaScript. Тем не менее, для отработки основных понятий С++ будет полезнее. Во-первых, многие языки Си-подобны, во-вторых, это мощный инструмент в умелых руках и при его изучении вы "поковыряете" указатели, а также узнаете много интересных вещей, связанных с памятью и работой с ней. В той же Java прямого доступа к памяти нет, С++ же позволяет извращаться над железом, как вам захочется. Хватит прелюдий, перейдём к делу. Есть 3 хорошие книжки, я не думаю, что у них есть аналоги лучше. Есть? Пишите в комментариях!

Ваша задача пройтись по основам программирования и хорошенько разобраться, что же такое переменные, условные конструкции и тернарный оператор, циклы и особенно вложенные циклы, массивы и многомерные массивы, функции, передача данных в функцию по ссылке и значению, структуры, указатели и пр. Прочитав теорию, обязательно практикуйтесь. Берите задачи из книги Дейтлов. В качестве IDE я рекомендую Visual Studio, можно и CodeBlocks.

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

  • Вы уже выбрали язык программирования и область, к которой стремитесь;
  • Вы ещё не определились.

И по одному и по другому вопросу мы вновь должны поработать. Заходим сюда и проходим нужные нам курсы:

-3

Если вы выбрали язык программирования, выбираете и проходите все курсы, связанные с ним. Например, если вы выбрали web, то однозначно надо проходить PHP, Python, HTML, JavaScript, CSS и SQL. Эти знания потребуются дальше в ваших проектах. Выбрали С, или Java? Вместе с С++ учите SQL, с Java учите SQL, HTML, CSS, JavaScript. Наверное у вас невольно возникает вопрос: "Почему с Java нужно учить веб-технологии?" Отвечаю: "Эти технологии активно используются в проектах, где живёт этот язык программирования". Вы делаете что-то на серверной части (сервлеты и прочее)? Возможно, вам придётся хотя бы немного коснуться фронтэнда. Вы пишете под Android? Android-приложения тоже верстаются, но там за основу взят не HTML, а XML, однако общие принципы у них похожи, поэтому лучше сейчас потратить лишние пару часов и пройти HTML. Выбрали C#? Набор технологий будет таким же, как на Java. Про Swift я знаю мало, но думаю, что и для него вам понадобятся элементарные знания технологии вёрстки.

Прошли курсы на Sololearn, что теперь? Теперь я очень рекомендую посмотреть данный семинар:

-4

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

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

Итак, пока нас не покинули будущие разработчики C#, "питонисты" и т.д., привожу ссылку на интересные источники информации и материалы:

-5

Тут есть целый список всякого разного. Со многими порталами я познакомился и могу сказать, что подборка очень хорошая, особенно для начинающих программистов. Если у вас плохо с английским, то посмотрите на Интуит, Hexlet и ITVDN, ну и конечно же, на GeekBrains. Если же вы "шпрехен зе инглиш вери гуд энд ё нейм из Борис анд Лондон из зэ кэпитал оф Грейт Бритн", то можете попробовать академию Хана, Udacity, Lynda  и т.д.

English

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

Итак, зачем же нужен английский программисту?

  • Вы неизбежно столкнётесь с нехваткой информации в Рунете по интересующим вас темам. Иностранные программисты постоянно пилят какие-то гайды и прочие ништяки, которые будут очень полезны, но чтобы их понимать, нужно знать английский.
  • Работа над проектом построена таким образом, что между программистами распределяются задания. Для координации специалистов используются RedMine, GitLab (кстати, познакомьтесь с редмайном, просто для себя зарегистрируйтесь и пощупайте данный сервис) и прочие программы, позволяющие агрегировать информацию по проекту в одном месте. Тут же вам "тимлид" будет давать задания и за вашей командой будет наблюдать клиент, который будет вносить правки по заданиям и писать комментарии. Как думаете, на каком языке он это будет делать?
  • И наконец, вы сами, вполне возможно, вынуждены будете контактировать с клиентом напрямую. Тут вам тоже пригодится английский.

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

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

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

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

-6

Найдите этот двухтомник и работайте по нему. Причём работать нужно следующим образом. Там есть теория, есть упражнения (на грамматику, перевод и т.д.) и есть тексты. В конце каждой главы вы должны сделать хотя бы 2-3 упражнения. Желательно найти человека, который их проверит. Я бы нашёл какой-то форум по изучению английского и попросил бы там помощи. Уверен, кто-то знающий откликнется и согласится проверить ваши задания. В каждой главе вы должны пересказать текст, причём использовать новые слова, которые идут после текста. Если вы подойдёте к делу сознательно, то уже после первого тома вы сможете вполне неплохо понимать и использовать английский. Что касается технических терминов, поверьте, их усвоить будет легко. Когда начнёте изучать туториалы на английском, впитаете нужные термины автоматически. Поэтому не бойтесь учить язык и не влезайте в крайности. HR-ы в компаниях будут запугивать и скажут, что нужно быть ну просто англичанином. Это не совсем так, но и знать элементарные вещи необходимо.

В итоге

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

Если понравилась статья, ставьте лайк и подписывайтесь на канал.

Почитайте похожие материалы:

Лендинг: идеальный первый экран

Видео - Какой язык программирования выбрать в 2018?

Как фрилансеру рассказать о себе

Книги не по программированию, которые будут вам полезны

Как организовать рабочее место в однокомнатной квартире

Если вы хотите почитать статьи и материалы в нашем блоге, переходите на наш сайт.