Из кого не получится хороший программист

2
1990
views

Ведущий iOS-разработчик neoviso Игорь Шавловский разобрал по пунктам, в каких случаях шансов стать хорошим программистом не так уж много, — пишет DEV.BY.

Из кого не получится хороший разработчик

Несколько раз в год я даю консультации по вопросу: «Куда лучше поступить, чтобы стать программистом?» Чаще всего спрашивают мамы выпускников. Звучит это обычно так: «Говорит, что хочет стать программистом, будем сдавать ЦТ по математике, но не знаем, куда подавать документы». На вопрос, почему именно программистом, отвечают, что зарплаты высокие.

Разберём по пунктам, в каких случаях вы не станете хорошим программистом. Причём вне зависимости от вуза, который выберете.

1. Если хотите, чтобы вас научили программированию.

Почему? Большинство из нас до сих пор живёт в прошлом веке с парадигмой советского образования и строгого следования учебному плану. Лабораторные выполняются, потому что без них не поставят зачёт, а на лекции ходят, поскольку надо писать конспект — вдруг его проверят на экзамене. Дипломный проект для многих — не научная работа, а повинность и беготня за справкой о внедрении.

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

Когда абитуриент ищет себе вуз, он задаётся вопросом: «Где меня будут учить?». А должен спрашивать: «Где я получу лучшие возможности учиться?».

В контексте обучения программированию полезно задавать такие вопросы:

  • Где лучшие преподаватели?
  • Где лучшие лаборатории?
  • Где есть объединения по интересам, возможность участия в олимпиадах и коллаборациях, связи с международными институтами?

Логично искать место, где вы получите больше навыков, чем в интернете на пошаговых курсах программирования.

2. Если вам не интересно программирование.

Главное делать то, что вам интересно

Приходить в университет надо уже с навыками программирования, вас никто не должен учить. В вузе надо развиваться, а не пытаться научиться с нуля. Абсолютно бессмысленно рассматривать учебное заведение как стартовую площадку для программиста. Для этого достаточно открыть Блокнот, скачать компилятор, заглянуть в Google и начать писать.

Интерес, в первую очередь, должен быть не в зарплате, а в возможностях, которые получает человек, имея в своих руках такой мощный инструмент, как программирование.

Пример из жизни. В школе мне всегда было интересно рисовать графики. Я ждал, когда же мы изучим новою функцию, чтобы увидеть очередную линию, почувствовать то, как математическая формула превращается в изящный рисунок, как круг порождает тригонометрические формулы. Именно поэтому, когда я впервые держал в руках учебник программирования, сразу начал искать в нём, как нарисовать линию, ведь любой график представляет собой последовательность линий. Но этого, как оказалось, было недостаточно, для начала потребовалось понять как «писать код». Пришлось прочитать первые скучные и бесполезные 20 страниц учебника, из которых узнал, как объявлять и вводить переменные, выводить результат. Свою первую же программу я попытался написать, не подсматривая в книгу. Тогда я с треском провалился — оказалось, что забыл всё, кроме begin и end. Более того, пришлось принять на веру необходимость непонятной строчки кода uses crt, что меня возмутило. Я не хотел терять контроль над происходящим, наоборот, важно было, чтобы всё написанное мной имело только те смысл и цели, которые я закладывал.

Через 10 минут моя первая программа запустилась, сделала какие-то простейшие математические операции над введёнными данными и вывела результат. Могу смело заявить, что в тот момент я научился программировать на Pascal, у меня было всё необходимое, кроме знания стандартных библиотек. Посидев ещё пару дней, я перевёл монитор в графический режим и нарисовал график экспоненты. Так моя первая цель была достигнута.

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

Поэтому не надо «хотеть» стать программистом, намного полезнее видеть в программировании удивительный мир бесконечных возможностей. Это поможет вам создать то, что поддержит ваши интересы. Можно начать с разработки своей домашней страницы, создания простой игры или моделирования эволюционного процесса, защиты своих данных. А можно сыграть «Кузнечика» на матричном принтере или нарисовать фрактал Мандельброта.

3. Если у вас нет аналитических навыков.

Программисту нужны аналитические навыки

В одной из своих колонок я писал, что главным навыком любого программиста является алгоритмизация — умение (даже, возможно, искусство) строить последовательности простых команд, которые в сумме выполняют конкретную задачу.

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

4. Если привыкли учиться по книгам.

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

Предлагаю людям, не знакомым с разработкой на iOS, почитать в книге, как работает UITableView, и попытаться написать код исключительно на основе этой информации. А теперь попробуйте просто открыть готовый код в интернете и понять, как он работает. Во втором случае вы научитесь работать с таблицей в разы эффективнее, потому что практические навыки приобретаются намного быстрее, чем усваивается информация из книги.

В книгах каждому компоненту может быть уделено 10 страниц текста. Но даже если вы прочитаете всё о кнопке, вы так и не сможете с ней ничего сделать, потому что реферативные знания вам не нужны, программисту нужна практика.

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

5. Если будете рассчитывать на экспресс-курсы.

Экспресс-курсы вам не помогут

Сегодня по всей Беларуси можно увидеть уйму рекламных плакатов о курсах и о том, как на них за считанные месяцы взрастят программиста с нуля. Мне всегда было интересно сходить на них. В первую очередь, чтобы посмотреть на людей, которые громогласно гарантируют трудоустройство.

Курсы программирования, как и вуз, не могут ничему научить, они могут лишь дать начальный толчок. При условии, что у вас есть интерес к  программированию (а не к профессии программиста!). Если посетитель этих курсов не заинтересован ни в чём, кроме их окончания и получения бумажки, они бесполезны. Чтобы курсы сработали, надо самостоятельно уделять программированию хотя бы раз в 10 больше времени, чем на аудиторных занятиях. То есть на 2-часовое занятие должно приходиться, как минимум, 20 часов самостоятельного закрепления. Более того, если учитывать, что на повторение двухчасовой лекции не должно уйти больше нескольких часов, остальное время надо тратить на практику и копание в деталях.

Ставьте себе задачи, которые интересны, решайте их путём анализа, поиска возможных решений и оптимального из них — тогда вы уже за пару первых недель изучите всё, что сможете получить на курсах, и пойдёте дальше. А после выпуска действительно сможете найти работу и начать развиваться как профессионал.

А из вас получится хороший программист?

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



2 КОММЕНТАРИИ

  1. Ну по поводу книг не согласен, если уж как вы говорите человек ищет возможности чтобы учиться, то он определенно из книг многое для себя почерпнет. Книги воистину великое изобретение и великая сила, тот кто это понимает — обладает бесконечным источником знаний. Другое дело если книга второсортная и написана некомпетентным человеком — тогда такую книгу лучше не читать.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here