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

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

Программирование против информатики

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

Чтобы понять разницу, рассмотрим общую область медицины и подобласть сестринского дела. Когда вы учитесь на медсестру, вы также изучаете общую область медицины в качестве основы. Вы должны овладеть основами медицины, но вы не врач общей практики и не магистр медицины. Когда вы становитесь медсестрой, вы специализируетесь в одном аспекте медицинской области, который является узконаправленным, практичным и практическим. И наоборот, есть те, кто изучает медицину в целом и осваивает ее в целом. Эти люди становятся врачами и / или исследователями-медиками с докторской степенью. Врач или исследователь могут выполнять обязанности медсестры, но не обязательно хорошо (возможно, плохо). Точно так же некоторые медсестры могут поставить какой-либо диагноз, как врач, но не в целом и не профессионально. Другими словами, и медсестры, и врачи являются важными и жизненно важными частями медицинской области, но один из них является узкоспециализированным и сфокусированным (медсестринский уход), а другой - мастером всей области (врач) и может дополнительно специализироваться в одной из них. площадь. Одному требуется 2–4 года обучения (медсестра), а другому - 10–12 лет (врач).

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

С более четким пониманием информатики в сравнении с программированием, следующее - что нужно, чтобы стать программистом.

Внимание к деталям

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

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

Разведка

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

Это не означает, что люди, которые не умеют программировать, не умны. Как предположил Гарднер, существует много видов интеллекта. Звездный спортсмен обладает исключительным телесно-кинестетическим интеллектом. У хорошего продавца высокий межличностный интеллект. У великого музыканта музыкально-ритмический интеллект намного выше среднего. Таким же образом, если вы хотите стать программистом, вам понадобится логико-математический интеллект выше среднего. В этой области вам нужно быть очень умным и хорошо обученным. Если логико-математический интеллект - это то, чем вы обладаете от природы и / или хотите его улучшить, то вы хороший кандидат на карьеру в программировании.

Алгебра, задачи по рассказам, головоломки

Тебе нравится алгебра? Сюжетные задачи - ваша любимая часть алгебры? Если да, то программирование может вам подойти. Если нет, то вы можете переосмыслить программирование как карьеру. Программирование - это бесконечная серия сюжетных задач и алгебры. Помните такие вещи… поезд проезжает через Чикаго в 13:00 в пятницу, двигаясь с постоянной скоростью 55 миль в час. Остин, штат Техас, находится в 1150 милях от отеля. Поезд останавливается один раз в Мемфисе, штат Теннесси, на два часа. Игнорируя изменение скорости для ускорения и замедления, когда поезд пройдет через Остин?

Таков каждый день программиста. Люди (менеджеры проектов, менеджеры по маркетингу, менеджеры по развитию и т. Д.) Приходят к вам и говорят: «нам нужен интернет-магазин, в котором покупатель размещает заказ на нашем веб-сайте, у них может быть или нет учетная запись, нам нужен их адрес электронной почты. адрес, чтобы быть доступным для отдела маркетинга, заказ должен быть отправлен на склад только после оплаты и проверки запасов, общее время сквозного заказа не может превышать трех секунд, и нам нужна система для обработки тридцати окон -до конца транзакций в секунду ». Итак, сколько времени у вас уйдет, чтобы запрограммировать это? Как бы долго вы ни думали, это займет у вас два дня, и вы должны были предсказать будущее и начать его три недели назад.

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

Для кого-то, кто любит алгебру, сюжетные задачи и головоломки, это вообще не проблема. Однако, если вы не любите алгебру, задачи и головоломки, программирование как карьера будет очень трудным.

Вы любите учиться

Прежде чем отправиться в путь, чтобы стать программистом, честно поговорите с самим собой о своей любви к обучению. Я не имею в виду, что вам нравится быть умным (да, всем нравится быть умным). Я не имею в виду, что вам нравится узнавать что-то по окончании учебной части. Я имею в виду, что вам нравится процесс обучения и сам процесс обучения. Кроме того, вы не только не против того, чтобы постоянно чувствовать, что понятия не имеете, что происходит, но и всегда с нетерпением ждете того, что происходит. Независимо от того, что вы думаете, что знаете, вы знаете, что этого недостаточно, и вы знаете, что что-то новое всегда ждет, чтобы научиться. Каждый день вы цените, что всегда есть чему поучиться, и это никогда не заканчивается.

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

Когда я впервые изучал информатику, COBOL и Fortran все еще имели значение, и мы все еще обсуждали, будет ли когда-нибудь полезна модель клиент-сервер. Объектно-ориентированное программирование все еще находилось в зачаточном состоянии, и программисты все еще спорили о достоинствах оператора GOTO. К тому времени, как я получил степень магистра информатики, ни одна из этих вещей все еще не использовалась. Я закончил колледж уже устаревшим, и вы тоже. Вот как быстро развиваются информатика и программирование. Вот почему так важна прочная основа в образовании в области информатики, но это уже другая история (скоро).

Если у вас есть идея, что вы просто пойдете на какие-то курсы, устроитесь на работу и все, то вас ждет большой шок. Быть программистом - значит учиться всю жизнь. Это означает, что независимо от того, сколько вы освоили, завтра вы проснетесь новичком в чем-то новом, но жизненно важном для вашей карьеры, и у вас будет новое богатство знаний, которые нужно приобрести, прежде чем вы снова сможете двигаться вперед. Быть программистом означает проводить остаток жизни в классах и семинарах, читать тексты и практические руководства и всегда чувствовать, что вы на полшага до того, чтобы стать устаревшим (потому что вы таковым являетесь). Это сопровождается изрядным стрессом; однако, если вы любите учиться, это также принесет большие награды.

Если вы любите учиться и если быть студентом так или иначе всю оставшуюся жизнь звучит хорошо, из вас может получиться хороший программист. Однако если вы просто хотите пройти обучение, устроиться на работу, ходить на работу с 9 до 5 и не думать о работе вне этого времени, то вы действительно не в том месте, если думаете о том, чтобы стать программист.

Страсть

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

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

Как профессиональный программист, возможно, вы не любите свою непосредственную работу, компанию или начальника (мы все были в этом), но ваша любовь к дисциплине и науке программирования является абсолютным и неумолимым требованием. Профессиональные программисты не просто программируют на работе, они также программируют для практики, развлечения, любопытства, соревнований и по многим другим причинам. За 30 с лишним лет в этой области я ни разу не видел (и даже не слышал) ни одного хорошего программиста, у которого не было бы побочного проекта просто для развлечения (или прибыли). Когда я был менеджером по найму, на собеседовании я задавал стандартный вопрос: «Какой у вас побочный проект?» Заметьте, я не сказал: «У вас есть побочный проект?» Я просто предположил, что он есть у собеседника, и я хочу услышать об этом в рамках оценки этого кандидата. Если у интервьюируемого не было ответа, интервью заканчивалось.

Так что спросите себя, видите ли вы, что возвращаетесь домой после долгого дня программирования для The Man и с нетерпением ждете возвращения к работе над своим личным программным проектом. Это очень серьезный вопрос, и не многие люди скажут «да». Как вы думаете, каменщику не терпится прийти домой и начать заливать бетон? Как вы думаете, медсестра, возвращаясь домой после изнурительной 12-часовой смены, надеется, что дома есть медицинская проблема, которая ждет своего решения? Как вы думаете, менеджер подает отчеты TPS дома в 2 часа ночи в воскресенье просто для развлечения и практики? Возможно нет. Программисты приходят домой и не могут дождаться, чтобы вернуться к программированию своих личных проектов? Абсолютно. По крайней мере, хорошие.

Возможно, вы программист…

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

Вы не просто занимаетесь программированием. Вы программируете. Радостно и одержимо, или совсем нет.