Шрифт:
Тем не менее вы наверняка по-прежнему не чувствуете, что в совершенстве владеете языком программирования.
Не волнуйтесь, это тоже нормально.
Когда я только изучал C++, я помню, что даже после того, как я понял все об этом языке, использовал его для создания нескольких приложений и даже поработал программистом, пишущим код на C++, я все еще не чувствовал, что по-настоящему овладел этим языком.
Я чувствовал себя хорошим программистом на C++, но не отличным.
Мне хотелось улучшить свои навыки работы с языком, но я не знал как.
Затем я обнаружил сайт под названием TopCoder, где проводились соревнования для программистов. Каждую неделю там появлялся новый набор задач по программированию, и можно было посоревноваться с другими программистами в решении сложных алгоритмических задач.
Сначала это было ужасно. Я не мог решить даже самую простую задачу. Я смотрел на решения других людей и понятия не имел, как они к этому пришли или даже как работает их код.
Они использовали C++ таким образом, какого я и представить себе не мог.
Но со временем, пытаясь решать все новые задачи и глядя на то, как их решают другие люди, я постепенно начал становиться лучше… намного лучше. Я начал видеть закономерности в том, как решались определенные типы задач. Я начал по-настоящему понимать, как использовать функции C++, которые я раньше игнорировал. Я узнал, как эффективно использовать стандартные библиотеки, языковые возможности и структуры данных для решения сложных задач.
Я стал разбираться в C++ не просто хорошо, а превосходно. Наконец-то я почувствовал, что овладел этим языком.
Я хочу, чтобы вы поступили так же.
Вам не обязательно заходить на TopCoder, есть множество других мест, где вы можете попрактиковаться в решении задач программирования алгоритмического типа.
Я уже упоминал об одном хорошем источнике подобных задач, но вот еще несколько:
• «Карьера программиста» Гейл Лакманн Макдауэлл;
• «Жемчужины программирования» [10] Джон Бентли;
• Проект Эйлер [11] ;
• Codility;
10
Издавалась на русском языке. Питер, 2002 г. – Прим. ред.
11
Проект Эйлер – некоммерческий проект в Интернете, объединяющий любителей математики и программирования. Проект был запущен в 2001 году Колином Хьюзом и сейчас поддерживается небольшой группой энтузиастов. Участники проекта могут выбрать любую из существующих в текущий момент задач и решить ее с помощью любого известного им языка программирования. После ввода правильного числового ответа участник получает доступ к форуму по данной задаче, где участники обсуждают и сравнивают между собой найденные ими алгоритмы. – Прим. ред.
• Interview Cake;
• TopCoder.
Не думайте, что создать их будет просто, наоборот. И это нормально. Со временем вы поймете, что все задачи делятся на несколько типов, и научитесь с ними работать. Перенимайте опыт других людей, смотрите, как они справились с теми проблемами, с которыми столкнулись вы. Старайтесь понять, почему те, кто успешно решил задачу, выбрали именно такое решение. Это один из лучших способов совершенствования себя как программиста.
Лично я для обучения использую ресурс TopCoder. Решив предлагаемые на этом ресурсе задачи с помощью изучаемого вами языка программирования, вы повысите степень своего мастерства и сможете с легкостью проходить собеседования на должность разработчика, выгодно отличаясь от других кандидатов.
Глава 7. Высшее образование
В следующих трех главах я расскажу вам о трех путях (или стратегиях) становления вас как разработчика. Мы поговорим о высшем образовании, о курсах по программированию, а также о самообразовании. Все эти варианты имеют право на существование, но я хотел бы обратить ваше внимание на плюсы и минусы каждого из них и поговорить о наилучших способах использования каждого из этих подходов.
Давайте начнем с наиболее традиционного пути – высшего (или среднего специального) образования. Думаю, что в рассказах о том, что такое «университет» или «колледж» вы не нуждаетесь. Гораздо лучше будет поговорить о том, к чему следует быть готовыми, отправляясь по этому пути.
Выбор данного пути означает, что ваше обучение будет проходить в аккредитованном учебном заведении по такой специальности, как, например, «информационные технологии», «вычислительная математика» или что-либо подобное. Так начинает большинство программистов. Хороший это способ или лучший? Попробуем разобраться.
Преимущества
Давайте сначала взглянем на преимущества этого варианта. Ваши родители наверняка думают, что плюсов тут огромное количество. Может быть, они даже считают, что получение высшего образования является единственным приемлемым вариантом. Я же постараюсь быть более объективным.
Честно говоря, я не фанат высшего образования, но определенная выгода в получении корочек (красных или синих – неважно) все же есть.
Множество компаний все еще нанимают только тех, кто имеет высшее образование