«Как ты понимаешь чужой код? Я хорошо разбираюсь в своём собственном коде, но всякий раз, когда мне нужно понять чужой, — я теряюсь. Чувство потерянности преследует меня все время, особенно, если код плохо задокументирован. Я до сих пор не представляю, с какой стороны нужно подступиться, чтобы работать с чужим кодом более эффективно. Было бы хорошо, если бы ты дал мне парочку советов.»
Мне понравился этот вопрос по нескольким причинам:
- Он проливает свет на один из самых важных аспектов приобретения новых навыков в программировании: учиться нужно часто и регулярно, используя большое количество примеров хорошего качества.
- Советы, которые я дам, помогут вам лучше читать и понимать чужой код.
Итак, давайте пойдём по порядку.
Как лучше всего читать и понимать чужой код?
1. Найдите ту часть кода, которую понимаете, а дальше попытайтесь распутать логическую цепочку из вызовов методов, классов и переменных в обратном направлении.
Разбираться в ПК? ЛЕГКО
Например, вы точно знаете, что кусок кода, который вы просматриваете, создает файл с заголовками фильмов. Сначала выясните, где конкретно находятся строчки, которые создают этот файл на диске. Далее, найдите место в коде, в котором в файл добавляется информация. Двигаясь в обратном направлении, найдите место откуда берется эта информация. И так далее…
Давайте назовем эти связанные между собой куски кода «Цепочкой действий».
Используя этот подход, вы неизбежно будете двигаться от одного участка кода к другому. И это, вероятно, поможет вам получить представление о следующем:
- Как этот код устроен (где определяются переменные, где хранятся те или иные методы и т. д.).
- Стиль, в котором написан код.
- Как программист, написавший этот код, думает и решает те или иные задачи (это сложно объяснить, но интуитивное понимание таких вещей приходит только с опытом).
Делая так, вы постепенно будете всё лучше и лучше понимать чужой код. И вскоре в больших кусках кода, в которых вы ранее не могли ничего понять, вам станут «открываться» отдельные части. И постепенно будет приходить понимание все большего и большего количества строк кода. Это примерно как стоять в большой, абсолютно тёмной комнате, в которой постепенно зажигается свет, и вы со временем начинаете различать всё больше и больше предметов, находящихся в ней.
Используйте подход «Цепочка действий» чтобы постепенно начать разбираться в ранее незнакомом коде
2. Повторяйте данные действия снова и снова.
Применяйте данный способ изучения кода множество раз, и вы быстрее сможете разобраться в непонятных ранее участках программы.
Что читать начинающему программисту
Книги, которые будут красиво смотреться на фото ваших рабочих мест.
Перед вами подборка из пяти книг, которые хорошо бы прочитать каждому программисту. Если вы только начинаете, можно идти сверху вниз — мы специально расположили книги в порядке возрастания сложности.
Как изучать электронику правильно. Советы и рекомендации.
Если вы не нашли в подборке свою любимую книгу по программированию — напишите о ней в комментариях. А если ещё расскажете, чем она будет полезна для начинающих, будет вообще отлично.
1. Код. Тайный язык информатики
Автор объясняет сложные вещи, связанные с программированием и работой компьютера. Объяснение того, как работает процессор внутри компьютера, мы считаем одним из лучших среди книг на подобные темы.
Если вы только начинаете разбираться в программировании, компьютерах и том, как это работает, читайте «Код».
2. Карьера программиста
Книга поможет подготовиться к собеседованию почти в любой IT-компании. Автор на примерах показывает, какие вопросы могут задать, в чём их особенность и как на них лучше отвечать. Особенно интересно почитать, чем отличается подход в маленьких и крупных компаниях и на что смотрят в каждой из них.
Если у вас скоро собеседование, а книгу прочитать вы не успеваете, прочитайте нашу статью про собеседования. Она не такая большая, но тоже полезная.
3. Идеальный программист. Как стать профессионалом разработки ПО
Роберт Мартин — это один из тех, кто придумал agile и гибкую разработку в принципе. Если вы не читали про скрам — почитайте, по этой системе работают большинство программистов в мире.
В книге «Идеальный программист» Роберт рассказывает, как программисту применять свои знания, как развивать навыки и к чему стремиться, чтобы стать профессионалом. Почти на каждое заявление автор приводит пример из своей рабочей практики, иногда неожиданный.
4. Чистый код. Создание, анализ и рефакторинг
Книга о том, как сразу писать чистый, красивый и правильный код и чему для этого нужно научиться. В отличие от предыдущей книги, в этом полно примеров кода — и плохого, и хорошего, и как превратить один в другой.
Единственное, что нужно учесть, — все примеры автор приводит на Java. Но если вы умеете программировать на любом языке высокого уровня, вы сможете быстро понять, про что говорит автор и что делает сам код.
5. Искусство программирования
Первая версия этой книги вышла в 1968 году, а сейчас публикуется уже третье издание, в которое добавлено много новых рабочих алгоритмов. Особенность книги в том, что все примеры приводятся на языке ассемблера, а это пугает многих современных программистов. Сам Кнут утверждал, что только так программист сможет по-настоящему понять, как работают программы внутри компьютера и что стоит за кодом на самом деле.
Билл Гейтс говорил об этой книге так: «Если вы прочитали все тома „Искусства программирования“, вам точно следует отправить мне своё резюме».
Источник: thecode.media
С чего самостоятельно начать обучение программированию: этапы освоения профессии и советы новичкам
С 2016 года изучаю удаленные профессии и способы заработка в интернете. Бросила работу в университете, чтобы с головой уйти во фриланс.
Здравствуйте, уважаемые читатели!
Решили сменить сферу деятельности, и выбор пал на программирование? Прекрасно! В этой области много востребованных, прибыльных, творческих и вдохновляющих профессий.
Но прежде чем начать обучение, подумайте и ответьте на пару вопросов: нравится ли вам программирование, готовы ли вы ежедневно посвящать этому делу время, искренне ли интересуетесь информационными технологиями, нужно ли вам вообще программирование? Если ответ на все вопросы “да”, прошу читать дальше. В противном случае, построить карьеру в IT-сфере будет весьма трудно.
Читайте статью, если хотите узнать с чего начать обучение программированию с нуля, как освоить IT-сферу самостоятельно и с помощью онлайн-курсов, кто такой программист, что надо знать, чтобы им стать.
Мой YouTube-канал «В СВОЁМ ДОМЕ» про переезд на землю, путешествия, жизнь
Кто такой программист
Программист – это человек, который разрабатывает программы и алгоритмы для решения определенных задач. В своей работе он использует математическое моделирование, на основе которого пишет код. Продуктами работы программистов могут быть компьютерные игры и операционные системы, сайты и приложения.
Стать программистом может любой человек, независимо от пола и возраста. Но он должен искренне интересоваться компьютерами и веб-технологиями, ведь они непрерывно развиваются и меняются, поэтому специалисту надо мониторить изменения и постоянно обновлять знания.
Программисты обладают такими качествами, как:
- стрессоустойчивость,
- внимательность,
- усидчивость,
- ответственность,
- креативность.
Также у большинства есть высшее, чаще всего техническое, образование. Если же это гений-самоучка, то ему не помешает наработать стаж, чтобы получить должность в известной компании.
Более 100 крутых уроков, тестов и тренажеров для развития мозга
Что нужно знать и уметь
Работу программиста не назовешь простой и понятной. Для освоения этой профессии понадобится немаленький багаж знаний и умений. Сотрудник должен иметь способности к многозадачности, уметь находить контакт с коллегами, знать иностранный язык и язык программирования.
В остальном же краткий перечень требований выглядит следующим образом:
- Уметь писать собственные и читать чужие коды.
- Иметь математические способности и логическое, аналитическое мышление.
- Интересоваться информационными технологиями, иметь глубокие знания в этой сфере и постоянно их обновлять.
- Знать английский язык.
- Иметь способности к многозадачности.
- Уметь автоматически переводить решения бизнес-задач на машинный язык.
- Знать, как вносить, обрабатывать, хранить информацию при помощи разработанных программ.
- Создавать, настраивать и внедрять в производство программные продукты.
- Уметь автоматизировать повторяющиеся процессы.
- Тестировать разработанный продукт и уметь исправлять выявленные ошибки.
- Понимать технические задания и самому их составлять.
- Уметь пользоваться инструментами программирования, фреймворками и вспомогательными программами.
И это лишь часть того, что должен уметь делать программист.
Как стать программистом с нуля
Прежде всего надо изучать теорию алгоритмов и структур данных. Они не зависят от конкретного языка, наоборот, языки программирования устроены в соответствии с алгоритмами и структурами.
Язык – это просто инструмент для решения бизнес-задач. Поэтому новичку надо определиться с тем, как решать задачу, разбить это решение на этапы, оптимизировать процесс, чтобы не тратить время и ресурсы впустую.
После освоения алгоритмов и структур данных нужно выбрать направление программирования. Лишь потом можно приступить к изучению веб-технологий и инструментов. Это серверные языки и языки разметки, стили CSS и JavaScript, веб-фреймворки, подходящие к выбранному языку программирования.
И напоследок научиться работать с базой данных.
Подбор направления
Перед изучением языка надо определиться с направлением. У программирования широкий спектр возможностей и вариантов работы. Можно создавать сайты и мобильные приложения, игры, социальные сети, интернет-магазины, разрабатывать операционные системы и программное обеспечение.
По основной классификации программистов делят на прикладных, системных и веб-разработчиков.
Прикладные создают программы и приложения, которые решают конкретную задачу. Примерами прикладных программ могут быть онлайн-переводчики, аудио- и видеоплееры, игры, редакторы‚ мессенджеры и т. п.
Системные занимаются разработкой операционных систем и драйверов, а также условий и инструментов для их слаженной работы. Благодаря программистам сервис может работать как единый механизм. Специалисты предотвращают или устраняют перебои и ошибки в работе целого ряда программ на предприятии.
Веб-программист работает над созданием веб-сервисов и пишет для них программную составляющую. Соцсети, интернет-магазины, информационные сайты, форумы и прочее – все это труды специалистов по работе в сети.
Выбрать направление деятельности можно среди доступных профессий:
- Data Scientist – специалист по работе с большими данными.
- Frontend-разработчик – программист, отвечающий за лицевую составляющую сайта.
- Backend-разработчик – человек, который работает с серверной частью веб-сервиса.
- Fullstack-разработчик совмещает в себе frontend- и backend-разработчика.
- Администратор базы данных – человек, разрабатывающий требования к базе данных, которая используется конкретным предприятием, и отвечающий за проектирование и использование хранилища.
- Системный инженер настраивает и обслуживает внутренние компьютерные сети, офисную технику и ПК.
- Верстальщик работает над оформлением страницы и ее элементами: заголовками и подзаголовками, рамками вокруг картинок, шрифтом, отступами, абзацами.
- Архитектор ПО создает сложные IT-системы для решения бизнес-задач. С его помощью организации автоматизируют и упрощают повторяющиеся бизнес-процессы.
- Визуализатор – это специалист по разработке реалистичных трехмерных макетов зданий, интерьеров, памятников, мебели, одежды, окружающего пространства в компьютерной игре и т. д.
- Веб-дизайнер занимается созданием удобного и привлекательного интерфейса для веб-платформ.
И это только часть должностей, которые может занимать программист.
Для каждой работы нужен свой инструмент, который может не подходить для создания чего-то другого. Поэтому направление – решающий фактор при выборе языка программирования для изучения.
Выбор языка программирования
Когда начинающий специалист встает перед выбором языка, ему надо учитывать количество имеющихся на рынке труда вакансий и выбранное направление.
Можно найти предложения о работе, в которых сразу написано, с каким языком надо будет работать, например, PHP-программист или программист Python.
Если же отталкиваться от направления, то надо знать, что веб-разработчик пользуется C++, Python, Java. Системный программист – Assembler, C, C++, Python. Администратор базы данных – SQL.
Ниже приведены самые распространенные и популярные представители языков программирования:
- Python – это универсальный и распространенный язык программирования. Он популярен во всем мире и используется в большинстве своем в научных проектах, в области разработки ПО и при работе с Big Data.
- JavaScript. Этот язык тоже универсальный и часто используемый. С ним работают при разработке игр, интерактивного веб-дизайна интерфейса и в робототехнике.
- Java – это один из самых простых в использовании и понимании языков программирования. С ним часто создают различные веб-приложения.
- PHP – один из лидеров среди языков программирования, используемых при создании динамических веб-платформ. Часто является инструментом разработки веб-приложений.
- Паскаль – известный, но несколько устаревший язык программирования. Тем не менее он является основой для некоторых других языков и до сих пор применяется для обучения программированию в старших классах в школе и на первых курсах в вузе.
- Swift – новый язык, созданный компанией Apple. Он легок в использовании и позволяет новичкам разрабатывать мобильные приложения для iOS и macOS.
Чтобы изучить язык, сначала надо разобраться с его синтаксисом, т. е. ключевыми словами, операторами, правилами написания кода. А дальше можно перейти к более сложным конструкциям.
Если к этому времени специалист еще не приступал к изучению фреймворков, структур и баз данных, то сейчас эти знания просто необходимы. Не надо бросаться на все сразу, лучше выбрать что-то из основного: Git, SQL, HTML, CSS, XML, JSP, Maven, Spring, ORM, REST, MySQL, PostgreSQL.
Самообразование
Книги хороши тем, что их можно читать и учиться бесплатно, и тем, что они быстро погружают в тему. Рекомендую следующие пособия:
- Роберт Мартин “Чистый код”
- Дональд Кнут “Искусство программирования”
- Игорь Савчук “Отъявленный программист. Лайфхакинг из первых рук”
- Панос Луридас “Алгоритмы для начинающих. Теория и практика для разработчика”
- Дэвид Харрис, Сара Л. Харрис “Цифровая схемотехника и архитектура компьютера”
- Галина Иванова “Основы программирования”
- Чед Фаулер “Программист-фанатик”
- Кент Бек “Экстремальное программирование”
Можно использовать бесплатные обучающие платформы, сайты и приложения, форумы, где делятся своим опытом профессиональные программисты. А можно положиться только на самостоятельное обучение, но такой путь сложен для новичка. Лучше совмещать его с другими методами, например, с онлайн-курсами.
Онлайн-курсы
Новичку предлагаются курсы от онлайн-платформ GeekBrains, Нетологии, Skillbox, Coursera, beONmax. Постигать азы сферы информационных технологий можно в своем темпе и в домашних условиях. Так цена будет ниже, чем обучение в вузе.
Обучение предполагает как теоретическую, так и практическую часть. Нередко выпускники курсов имеют портфолио, диплом или сертификат, подтверждающий их навыки и знания.
Предлагаю ознакомиться со следующими обучающими программами:
- Основы программирования
- Как стать программистом
- Факультет веб-разработки
- Старт в программировании
- Веб-разработчик с нуля
- Веб-разработчик с нуля до PRO
- Веб-разработчик 2020 – с нуля до результата
На блоге вы найдете список курсов по программированию с нуля с подробным описанием условий обучения, а также отдельные статьи с перечнем курсов по созданию сайтов с нуля, по геймдизайну и разработке видеоигр.
Составление резюме и портфолио
Можно начать работать на бирже, чтобы было что написать про свой опыт в резюме и добавить работы в портфолио. Для первого реального опыта подойдут и небольшие проекты. Главное – начать.
Лучше выбирать иностранные биржи, особенно если есть знания английского языка. Там и заказов больше, и доход выше. Подойдут, например, Upwork и YouTeam. Если говорить о русскоязычных биржах, то популярны Kwork, FL.ru и Freelance.ru.
Заполнить портфолио могут помочь и собственные проекты, если есть идеи, возможность и желание.
А дальше можно уже перейти на специализированные сайты с вакансиями только для программистов, например, We Work Remotely и Хабр Карьера. А можно поискать работу на таких ресурсах, как hh.ru или SuperJob.ru.
У специалиста должно быть резюме, когда он откликается на вакансию. В нем надо указать правдивые факты о проектах, в которых он участвовал, и свои достижения на этой работе. Не помешает рассказать и о собственных проектах, если они есть. Это показывает профессиональный уровень и любовь к IT-сфере.
Надо указать свои знания и навыки, но не на несколько страниц, а коротко, четко и лаконично. Нужно писать саму суть, без воды.
В портфолио лучше указывать несколько самых лучших проектов, которыми специалист если не гордится, то хотя бы доволен ими.
Советы новичкам
Создайте план обучения, разбив его на этапы, рядом с которым пропишите, что именно надо выучить и с помощью каких средств. Переход от одного этапа к другому должен быть по мере увеличения сложности.
Не растягивайте обучение на полдесятка лет. Информационные технологии имеют способность быстро развиваться. И пока вы тщательно изучаете какой-то инструмент программирования, он уже может быть заменен на что-то более современное.
При обучении используйте все материалы, сервисы и знания других людей, которые будут доступны. Не пренебрегайте ничем.
При возможности общайтесь с практикующим программистом, у которого есть опыт работы. Если он согласится курировать над новичком, направлять его, указывать на ошибки и давать задания для развития – это будет отличным дополнением ко всему обучению. Особенно если начинающий специалист обучается самостоятельно.
Узнайте больше об архитектуре компьютера.
Учите английский. Большинство обучающих программ представлены на этом языке. Есть и русскоязычные, но их значительно меньше. Без иностранного языка сложно что-то найти в англоязычном интернете. А уже непосредственно при работе программисты сталкиваются с английским во время чтения и написания кодов.
Заключение
Подведем итоги. Чтобы начать обучение программированию, надо следовать поэтапно. Сделайте следующее:
- Заполните пробелы, если таковые имеются. Речь идет об архитектуре компьютера и английском языке.
- Изучите для начала теорию алгоритмов и структур данных.
- Выберите направление, в котором есть желание развиваться.
- В зависимости от направления подберите язык программирования.
- Наберитесь знаний об инструментах программирования и веб-фреймворках.
- Изучите базы данных.
И в качестве общих советов:
- как можно больше практикуйтесь;
- используйте для обучения любые доступные материалы и платформы;
- начинайте с малых проектов;
- составьте грамотное резюме и портфолио;
- учитесь у профессионалов;
- если решили уйти в программирование, то действуйте и не затягивайте с этим, пока технологии не устарели.
На блоге iklife.ru вы найдете еще больше информации о программировании и других сферах деятельности.
Источник: iklife.ru