![](/books_files/covers/thumbs_240/karera-v-it-kak-nayti-rabotu-prokachat-navyki-i-stat-krutym-razrabotchikom-264965.jpg)
Автор книги: Джон Сонмез
Жанр: Поиск работы и карьера, Бизнес-Книги
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 5 (всего у книги 58 страниц) [доступный отрывок для чтения: 17 страниц]
Как уже было сказано выше, я не думаю, что это принципиально важно. Однако если вы все равно ощущаете неуверенность, вот вам несколько советов.
Карьерные перспективыСкажу так – для большинства из вас наиболее важным аспектом является то, какую работу вам поможет получить тот или иной язык программирования и каковы его перспективы. На данный момент по каждому из популярных языков программирования можно найти массу вакансий. Рейтинг того или иного языка может со временем измениться в любую сторону, но, если вас беспокоит наличие вакансий, рекомендую сделать выбор в пользу наиболее популярных языков программирования. На момент написания данной книги такими технологиями являются следующие:
• C#
• Java
• Python
• Ruby
• JavaScript
• C++
• PHP
Вакансии для разработчиков на этих языках есть всегда.
Однако, выбирая язык, следует учитывать особенности рынка труда той страны, где вы живете, особенно если вы не планируете переезжать.
Например, если вы живете в небольшом городке в Арканзасе, в котором есть только одна технологическая компания, делающая все на Java, я бы посоветовал вам начать учить именно этот язык. Конечно, далеко не каждый из вас столкнется с подобной ситуацией. Но если кто-то из моих читателей все-таки в ней окажется, то выбор будет невелик.
Если же вы планируете переезжать или работать на фрилансе, можете попробовать освоить более эксцентричный и менее популярный язык. Так у вас будет больше шансов стать экспертом в области, где не так много профи. Но для начала я все же порекомендовал бы вам обратиться к чему-то более популярному.
Наряду с популярностью языка следует учитывать и его перспективы.
На момент написания этой книги язык Objective-C вряд ли можно назвать подходящим вариантом, так как сейчас большинство разработчиков под iOS переходят на язык Swift. Кроме того, сама Apple вкладывает большие средства в развитие этого языка.
Но если вы уже выучили Objective-C и теперь не знаете, как быть дальше, спешу вас успокоить. Рабочих мест, связанных с данным языком, довольно много. Существует множество приложений, написанных на нем, которые нуждаются в поддержке.
Тем не менее никто из нас не является провидцем и не может знать наверняка, какие языки будут популярны, а какие – нет.
Например, некоторое время назад я предсказывал смерть JavaScript. Однако он жив и поныне.
Недавно я посетил одну конференцию, где одним из докладчиков был соавтор языка Objective-C. Этот язык появился в начале 1980-х годов.
О чем это я? Ах да, о выступавшем. Так вот, данный человек по имени Том Лав является автором книги, в которой написано, что язык JavaScript мертв и никогда и нигде использоваться не будет. Однако на момент написания этой книги JavaScript входит в пятерку (а по некоторым данным, и в тройку) самых популярных языков программирования в мире.
Суть в том, что знать наверняка невозможно. Языку программирования Ruby понадобились годы, чтобы стать популярным.
Возможно, JavaScript – это один из худших языков программирования, который можно было придумать и который поначалу использовался лишь для создания небольших всплывающих окон на веб-страницах. А сегодня на нем пишут все подряд.
Мой вам совет – не гадайте. Если, конечно, у вас нет магического шара. Но если он у вас есть, то зачем вам вообще программирование? Отправляйтесь прямиком на Уолл-стрит, там вас ожидает головокружительная карьера!
Технологии, которые вам интересныВопрос Джону!
За что ты не любишь JavaScript? Крутой же язык!
Каюсь, иногда мое мнение о JavaScript выглядит так, как будто у меня на него большой зуб или он нанес мне глубокую психологическую травму в детстве.
Позвольте рассказать вам небольшую историю о том, как появилась эта технология. В мае 1995 года Брендан Эйк, который в то время работал в компании Netscape, создал за 10 дней некую штуку под названием JavaScript, стремясь получить простой «связующий язык», который был бы легок для освоения web-дизайнерами и программистами, работающими неполный рабочий день. (Цитата из «Википедии».) В общем, я хочу сказать, что JavaScript, будучи созданным всего за 10 дней, изначально не мог быть хорошо продуман. Это факт. Знаю, что никто не любит гонцов с плохими вестями, но давайте обойдемся без насилия. Хочу подчеркнуть, что я НЕ НЕНАВИЖУ JavaScript. Просто для меня этот язык не является верхом элегантности, и поэтому я предпочитаю его не использовать. Вот и все.
Справедливости ради следует отметить, что в 2015 году появился новый стандарт этого языка (известный как ECMAScript). При создании этой версии языка ее авторы учли многие недостатки JavaScript.
Стыдно сказать, но эта версия мне даже нравится… Но лишь слегка!
Тем не менее мое мнение здесь мало что значит, ведь JavaScript сейчас – один из наиболее популярных языков программирования. Хотите верьте, хотите нет, но я смирился с этим фактом, однако оставил за собой право прохаживаться при случае по нелюбимому мною предмету.
Ну а если вы все еще сомневаетесь в моей правоте, подумайте, почему одна из самых продаваемых книг, посвященных этому языку, называется «JavaScript: сильные стороны»[9]9
Речь идет о книге Дугласа Крокфорда. Издавалась на русском языке. Питер, 2013 г. – Прим. ред.
[Закрыть]?
Выбирая язык программирования, важно учитывать свои предпочтения в технологиях. Если вы начнете поиск, отталкиваясь от этого фактора, то сможете гораздо быстрее определиться с выбором. Я знаком с большим количеством Android-разработчиков, которые занимаются этим только из любви к Android. Для многих из них оптимальным выбором будет Java, потому что именно на этом языке разрабатывается большинство приложений для данной ОС. (Однако вы можете создавать Android-приложения и на других языках, например C#, Ruby и даже JavaScript.)
В общем, слушайте свое сердце, это упростит вам изучение вашего первого языка программирования. Чем больше вас привлекает изучаемая технология и чем больше вы ею увлечены, тем легче вам будет преодолевать виражи учебного процесса. Например, я очень хотел заниматься разработкой под iOS, потому что у меня появился мой первый iPhone, и я был в восторге от этой технологии. Эта воодушевленность значительно облегчила мне изучение Objective-C и создание моего первого приложения под iOS.
Будь я равнодушен к этой технологии, вряд ли я продвинулся бы в ней достаточно далеко.
Уровень сложностиЕще одним важным моментом, который следует учитывать при выборе языка программирования, является уровень сложности.
Некоторые языки программирования более сложны в освоении, чем другие. Я не рекомендую начинать изучение программирования с C++, потому что по сравнению с другими языками программирования он довольно сложен для понимания. В этом случае вы будете иметь дело с управлением памятью и указателями, а также с некоторыми другими неприятными конструкциями, которые могут вызвать у новичка настоящий ступор.
C++ это великий язык – один из моих любимых, но его изучение тот еще квест. Гораздо проще будет начать знакомство с программированием с таких языков, как C#, Lua, Python, Ruby или PHP. Более того, для начинающих программистов существуют даже специальные языки, такие как Scratch или Basic.
Я не хочу отговаривать вас от изучения более сложного языка, такого как C++, если вы действительно этого хотите. Однако следует заранее представлять, во что вы ввязываетесь, и принять осознанное решение, насколько легким для изучения должен быть ваш первый язык.
Доступные ресурсыОцените ресурсы, которые вам пригодятся при изучении выбранного языка программирования. Например, в случае некоторых малоизвестных языков вы можете столкнуться с недостатком учебных материалов по ним – книг, онлайн-видео или любых других ресурсов – все это может существенно осложнить процесс освоения языка.
Популярные языки программирования хороши тем, что вам будет доступна масса онлайн-руководств, учебных курсов, книг и других материалов, поэтому перед началом обучения обязательно изучите этот вопрос. Несмотря на то, что сейчас существует огромное количество разнообразных ресурсов для начинающих, стоит заранее учесть степень доступности обучающих руководств.
Также рекомендую оценить, какими ресурсами располагаете конкретно вы, например компьютером или программным обеспечением. Даже более сложный язык программирования будет проще изучить, если у вас под рукой есть много интерактивных онлайн-учебников.
Изучать JavaScript можно онлайн через браузер, без установки чего-либо на компьютер. В свою очередь такой язык, как C ++, потребует для своей работы определенных инструментов и программного обеспечения, получить которые может быть непросто.
Наконец, подумайте о людях, которых вы знаете. Есть ли среди них те, к кому вы могли бы обратиться за советом в случае трудностей?
Не зацикливайтесь на вопросе ресурсов, но и забывать о них тоже не стоит.
АдаптивностьНапоследок давайте поговорим о такой вещи, как адаптивность. Языки программирования по-разному адаптируются к исходным условиям. Например, на момент написания этой книги язык программирования C# можно с уверенностью назвать одним из наиболее адаптируемых благодаря таким компаниям, как Microsoft и Xamarin (теперь входит в состав Microsoft).
Изучая C#, вы вовсе не будете ограничены лишь разработкой под Windows или web-программированием. Этот язык может использоваться для создания приложений под любую из доступных платформ.
С помощью C# можно создавать приложения для Linux и Mac, и даже для Android и iOS. Многие другие языки программирования обладают сходной гибкостью.
Например, Ruby был перенесен на множество различных платформ и используется во многих технологических областях. JavaScript также легко адаптируется. Вы даже можете использовать JavaScript для управления платами Arduino и робототехники. (Мой хороший друг Дерик Бейли написал неплохую статью на этот счет.)
Некоторые другие языки программирования менее гибки. Например, если вы изучаете R или Go, вы будете чуть более ограничены технологиями и платформами, под которые можно разрабатывать программы на этих языках. Все больше языков программирования, особенно популярных, переносятся на новые платформы и используются во множестве различных технологий. При этом часть языков по-прежнему остаются не столь универсальными.
Поэтому, если вы хотите иметь возможность быть сегодня веб-разработчиком, а завтра писать программы для Android, или попросту работать с более чем одной платформой или технологией, выясните, насколько адаптивен выбранный вами для изучения язык.
Пара мыслей напоследокНесмотря на все высказанные мной соображения, которые не следует упускать из виду при выборе языка, я хочу подчеркнуть, что итоговый выбор технологии не так уж и важен.
Гораздо важнее выбрать что-то одно и придерживаться своего решения столько времени, сколько требуется для прохождения кривой обучения, необходимой для достижения мастерства. Многие начинающие программисты бросают дело на полпути, потому что им кажется, что они ничего не понимают. Мы еще вернемся к этой теме, в главе «Ваш первый язык программирования».
Главное – не сдаваться! Уверяю вас, что все получится. В какой-то момент вы можете ощутить скуку или решить, что надо было выбрать другой язык и затем начать перебирать разные технологии, но поверьте мне – это будет плохая идея. Когда я начинал изучать программирование, одним из самых важных навыков для разработчика было глубокое понимание языка. Я просматривал массу книг по C++, пытаясь узнать обо всех тонкостях языка. Сегодня в этом занятии нет необходимости. В наши дни программисты работают на более высоком уровне, что предполагает более широкое использование библиотек и фреймворков, нежели функций самого языка. Разумеется, вы по-прежнему должны уметь программировать, но тончайшее владение каким-либо языком сейчас излишне.
Именно по этой причине я рекомендую вам не тратить слишком много времени на выбор языка. Просто начните учить какой-то один и не меняйте своего решения.
Глава 6. Ваш первый язык программирования
Итак, выбор сделан. Что дальше? Конечно же, открыть книгу и начать читать! Прекрасный выбор, который с большой долей вероятности заставит вас отказаться от программирования раз и навсегда.
Помните, я говорил об обучении на практике? Именно этим мы и займемся в этой главе.
В ней вы найдете план, следуя которому сможете проще и качественнее изучить первый язык. И не просто изучить, а почувствовать себя в нем комфортно, и даже стать в нем профи. Возможно, что освоение первого языка окажется наиболее сложным этапом освоения программирования в целом, но это не обязательно так.
Большинство программистов (как и я сам в начале пути) учились так:
1) начинали штудировать учебник;
2) пытались что-то из него повторить;
3) это что-то не желало работать;
4) вновь и вновь перечитывали материал, пока не удавалось разобраться в проблеме;
5) PROFIT!
То, чем я собираюсь поделиться с вами, получено в результате обучения многих разработчиков программного обеспечения не только в процессе изучения их первого языка программирования, но и улучшения их навыков разработки на этом языке. При создании этой главы я также руководствовался собственным опытом освоения таких языков, как C ++, C # и Java.
Фактически в этой главе будет описана последовательность действий, которой я придерживался бы при изучении своего первого языка программирования, если бы знал то, что знаю сейчас.
Посмотрите, как функционирует уже работающее приложениеКак я уже говорил, большинство начинающих программистов, желая освоить какую-то технологию, просто открывают соответствующий учебник и начинают его читать. В мире существует несколько прекрасных книг, которые ставят своей целью научить вас программировать через практику. Однако я придерживаюсь мнения, что лучше всего начинать с изучения исходного кода уже написанного и точно работающего приложения, пытаясь понять, как работает программа.
Да, это сложно. Да, сначала все будет непонятно и некомфортно. Но советую привыкнуть к этому ощущению.
Я предлагаю вам взять любое популярное приложение с открытым кодом и изучить его. Для поиска объекта исследования воспользуйтесь сайтом GitHub. Отдельно рекомендую вам научиться скачивать код, собирать и запускать его самостоятельно. Будет очень круто, если в это время с вами сможет побыть опытный программист и помочь вам в наиболее трудных моментах! Но если таких знакомых у вас нет – ничего страшного.
Одинаково важно изучить листинг и для ознакомления с синтаксисом языка, и чтобы увидеть, сможете ли вы понять какие-нибудь программные инструкции или осмыслить происходящее в коде. В процессе изучения кода запускайте приложение на выполнение, чтобы ощутить связь поведения программы с ее листингом.
Вы совершенно точно будете ощущать дискомфорт. Скорее всего, вы даже почувствуете, что не понимаете ровным счетом ничего.
Как я уже говорил – это нормально. Если вы сможете понять хотя бы пару строчек, это будет очень круто. А если вам удастся изменить пару параметров так, что код запустится, а в приложении что-то изменится, то вы – огромный молодец!
Изучая программирование подобным способом, вы сможете понять, как выглядит структура хороших приложений. Представьте себя археологом, изучающим письменность древних цивилизаций. Благодаря этому методу вы окажетесь на несколько шагов впереди других начинающих программистов. Потому что в отличие от них, вы будете знать, как выглядит тот язык, на котором вы учитесь писать.
Перед путешествием всегда полезно изучить местность. В программировании дела обстоят точно так же.
Просмотрите пару качественных материалов по темеПродолжая тему изучения местности, в качестве следующего шага я рекомендую вам пробежаться по тексту пары книг глазами, – именно пробежаться, а не читать их от корки до корки.
Суть данного этапа заключается в том, чтобы понять, какие в изучаемой области имеются основные темы и понятия. Затраченные вами усилия обязательно окупятся, когда вы почувствуете, что поняли, какие вещи вы будете изучать и как они соотносятся друг с другом.
Программка Hello WorldНа этом шаге вы тоже не будете читать книги или осваивать какую-то учебную программу. Вскоре вы этим займетесь – но только если захотите. (На самом деле выучить язык программирования можно и без книг, если следовать действиям, описанным в этой главе. Например, я буквально за пару недель сумел изучить языки Go и Dart, пользуясь лишь онлайн-документацией и следуя процессу, аналогичному тому, что мы здесь обсуждаем.)
Итак, сейчас ваша задача – создать самую простую программу, какую только можно написать на изучаемом вами языке. Помните, в главе «Как развить технические навыки?» я говорил об уровне, достаточном для старта обучения? Это и есть ваша текущая цель.
Чтобы почувствовать уверенность в своих силах и получить практические знания, вы должны начать программировать.
Поэтому мы начнем с программы Hello World. Большинство книг по программированию начинается именно с нее. Все, что она делает, – выводит на экран надпись Hello World. На данном этапе от вас практически не требуется разбираться в языке. Вам просто нужно ознакомиться с базовой цепочкой инструментов, необходимых для создания и запуска программы на выбранном языке программирования.
В учебнике, посвященном вашему языку программирования, наверняка есть текст этой программы. Если это не так, сделайте в Google запрос «Hello World + твой язык программирования». В Google есть все. В процессе создания программы Hello World вы поймете, как выглядит базовая структура программ на этом языке программирования.
Изучите базовые конструкции и попрактикуйтесь на реальных задачахУра! Вы добрались до этапа, когда можете открыть книжку или приступить к прохождению учебного курса! Сейчас вам будет определенно легче воспринимать материал, чем если бы вы сразу погрузились в него.
Ознакомьтесь с основными конструкциями языка, а затем попробуйте создать с их помощью несколько программ. Подумайте, какие реальные задачи мог бы решать ваш код, чтобы вы могли как можно лучше закрепить навык. Далее приведен список основных базовых конструкций любого языка программирования.
• Возможность вывода на экран.
• Базовые математические действия.
• Хранение информации в виде переменной.
• Организация кода с помощью функций, методов или модулей.
• Вызов функции или метода.
• Булева алгебра.
• Операторы if/else.
• Циклы.
Хорошая новость: если все перечисленное вам уже знакомо, считайте, что вы уже умеете базово программировать на любом языке. Да, в каждом случае синтаксис будет отличаться, но суть останется прежней. Данный этап займет больше времени, чем предыдущий. Изучите каждую из упомянутых конструкций, а затем поработайте с ней на практике.
В случае, если вы учите язык самостоятельно, постарайтесь понять, какие конструкции имеются в языке и в каком порядке их следует изучать. Если вы работаете по книге (а лучше нескольким), в ней должен быть прочерчен путь обучения, а также должны приводиться примеры и задачки различной сложности. Старайтесь всегда понимать, для чего вы учите ту или иную тему и где можно использовать полученные знания.
Завершив этот этап, вернитесь к программе, исходный код которой вы изучали в самом начале, и оцените, насколько понятнее она теперь для вас выглядит.
Усвойте разницу между функциями языка и библиотекамиЕсть одна вещь, которая часто сбивает с толку начинающих программистов (особенно учитывая уровень развития нынешних языков программирования) – знание того, что является частью языка, а что – частью стандартных библиотек, которые поставляются вместе с языком. Во многих случаях эта разница будет практически незаметна, поскольку вы очень часто станете использовать библиотечные функции.
Однако, как я уже сказал, знать, где находится грань между библиотекой и самим языком, необходимо.
Вы можете считать меня формалистом, однако именно эта придирка поможет вам расставить по полочкам всю ту мешанину, которая наверняка осталась у вас в голове после всех предыдущих этапов. Разобравшись в этой теме, вы будете знать, что на самом деле большинство языков программирования куда проще и меньше, чем библиотеки. Подчеркну, что изучение библиотек более сложное дело, чем изучение языка программирования.
Дело в том, что программирование сегодня – это скорее умение использовать библиотеки и фреймворки, нежели доскональное знание языка. Именно поэтому я так много внимания уделяю важности понимания границы между языком и его библиотеками.
Это понимание позволит вам стать более продвинутым разработчиком. Зная, как найти библиотеку, которая поможет в решении той или иной задачи, вы будете создавать более качественный код, нежели любой «эксперт в языке».
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?