Мне 69 лет. 2 года как я на пенсии! До этого этого 50 лет трудился в ИТ.
Сейчас Рунет буквально переполнен статьями на тему: "Как стать программистом?". Статьи очень разные: от крайне слабых (написанных якобы профессионалами), до более менее объективных (хотя их чаще всего их пишут дилетанты никогда не занимавшиеся программированием профессионально). Чтобы не тратить наше с вами время на разбор таких статей, отсылаю вас к подборкам: "По волнам моей памяти". Ч. 1-6; "Карьера в ИТ". Ч. 1-2. В первой я описал свою трудовую биографию за первые 22 года работы. Во второй рассказал о специальностях и уровнях квалификации в ИТ. Обе темы пока не окончены, если с вашей стороны будет спрос обязательно продолжу. В любом случае, если у вас хватит терпения прочесть уже написанное, думаю вы будете лучше разбираться в ИТ и в выбраной специальности.
В этой же статье я хочу вам рассказать о трудностях, которые вас ждут на "пути в программисты"!
Умение программировать в чем-то сродни умению плавать или умению ездить на велосипеде, такая же эйфория при первых успехах. Однако не каждый кто переплыл Волгу становится мастером спорта по плаванию! Так же, как и не каждый, кто съездил на велосипеде на дачу и обратно, становится мастером спорта по велокроссу, даже если дача находится в нескольких десятках километров от вашего дома!
В общем добиться того, чтобы машина делала то, что вы ей поручили это ещё не профессионализм и даже не повод решить, что вам нравиться работать программистом.
Программирование это Искусство и что бы в нем добиться успеха, как и в любом другом виде искусства, надо много и упорно трудиться! Профессионалом вы станете не тогда, когда освоите все необходимые для работы знания, умения, навыки и компетенции и даже не тогда когда накопите собственный опыт их применения. А только тогда, когда у вас появятся собственные оригинальные идеи и собственныцй взгляд на процесс программирования. Еще хочу вас предупредить, что профессиональное программирование это коллективное искусство, что-то сродни театру или кинематографу. И успех там зависит не только от вас одного - пусть даже самого единственного и неповторимого, а от всех людей, которые трудятся рядом с вами, их профессионализма, и их любви к искусству программирования! Хочу обратить ваше внимание, что это должны быть профессионалы самых разных специальностей, хотя и объединенных одним емким словом ИТ.
В ИТ еще много зависит от характера решаемых вами задач! Без постоянного решения все более сложных и трудоемких задач профессионалом в области ИТ стать просто нельзя!
Такие задачи профессиональные программисткие коллективы ищут на рынке, но возможность усложнения задач там ограничена спросом, который сильно зависит от уровня экономического развития страны. Так, что усложнение решаемых задач на рынке, часто имеет легко видимый предел!
Руководству программисткими коллективами остается только самим придумывать такие задачи и искать под них заказчика! Как ищут продюссера для своих творений театральные и кинематографические режиссеры. Вот только в силу исторических причин людей которые разбираются в программных разработках значительно меньше, чем людей, которые считают, что они что-то понимают в театре и кино!
Кроме того в отличие от "гениальных творений" в театре и кино, в программировании решение более сложных и трудоемких задач всегда требует больше денег, чем для реализации простых и как кажется заказчикам, более нужных проектов. Поэтому найти источники финансирование сложных проектов очень не просто. Потому, что не многие видят те преимущества, которые они обеспечат в перспективе, да и не все верят в возможность их реализации! Кроме того и государство свои интересы в области ИТ видит и блюдет очень плохо!
Теперь представьте, какой путь предстоит пройти участнику школьной художественной самодеятельности, чтобы стать всемирно известным режиссером. И сколько времени на это уйдет! Далеко не всем так везет, можно на всю жизнь так и остаться на разных этапах этого большого пути.
Теперь о том насколько вы уже опоздали внедриться в эту профессию! Многие авторы утверждают, что вы уже точно опоздали! Потому, что сейчас специалистов в области ИТ готовят практически все: ВУЗы, техникумы, профессиональные училища и курсы различной степени продвинутости, т.е. на программиста сейчас учат практически в каждой подворотне! Поэтому к тому моменту, когда вы закончите свое обучение для вас в профессии уже не будет места! Какой-то резон в этом есть! Когда я начинал свою карьеру программиста в НПО радиотехнического профиля, хорошие программисты становились ведущими инженерами в возрасте 25-26 лет, а вот хорошие радиоинженеры получали эту должность только 55-56 лет!
Сведущие люди утверждали, что до войны радиоинженеру занять должность ведущего инженера в 25 лет было возможно, потому, что радиоинженеров в стране тогда было мало!
Однако сейчас процесс подготовки программистов в нашей стране чем то напоминает охоту, преподаватели ищут талантливых учеников, ученики хороших преподавателей. Но даже когда они друг-друга находят это не значит, что все срослось, ученики не всегда понимают, чему их учат,хорошие преподаватели, а талантливые ученики не всегда получают те знания, которые им нужны для успешной карьеры!
Поэтому, я считаю, что переизбыток специалистов, сфере ИТ в ближайшие годы не грозит! Во первых не все выпускники умеют работать по записаной у них в дипломах специальности; Во вторых можно даже считать, что вам крупно повезло, если такая специальность действительно востребована производством, а не существует только в рекламных проспектах обучавшего вас ВУЗа; а в третьих сфера деятельности "айтишников" в экономике страны постоянно расширяется.
Так. что "профессиональной поляне" скорее угрожает не наплыв новых кадров, а недостаток профессионалов. Правда у этого процесса тоже есть свои минусы. По этой причине в различных сферах экономики не возникают новые амбициозные задачи, а решаются только более менее типовые. Поэтому в стране, за редчайшим исключением не создаются "свои" оригинальные инструменты и оборудование для сферы ИТ. А также присутствует крайне низкий интеллектуальный уровень руководства разработками, к тому же и система образования страны со своими задачами в области подготовки кадров для ИТ регулярно не справляется!
Поэтому люди достигшие определенного уровня профессионального развития стремяться покинуть нашу страну, слава богу не всем это удается! Потому, что как у нас, так и на Западе "гастарба́йтеров" не используют на руководящих работах в прорывных направлениях научно-технического прогресса, а предлагают работу по проще, хотя и платят за нее больше. К тому же и на Западе, как и у нас, пока не научились отличать талантливого работника от посредственного, путем заполнения соответствующей анкеты. Но негативные последствия отток талантливых кадров имеет. Расти талантливым ИТ специалистам у нас в стране не куда!
Поэтому наша "профессиональная поляна" деградирует буквально на глазах, и не от того, что её "вытаптывают" (избыточно подготовленые на "модном тренде" специалисты), а потому, в отсутствии серьезных работ, она "засыхает" не развиваясь!
Теперь о том где же все же учиться? Ну это как с лечением, надо найти место, где у нас в стране выбранной вам специальности хорошо учат! Редко, но это еще бывает! Но перед этим надо убедиться, что вы лезете в дело которое действительно является вашим призванием! А не вам только так кажется!
Учеба за границей мне не кажется выходом. Я не буду отрицать, что большинство достижений в области ИТ к нам пришло из заграницы. Но тут есть, как минимум две сложности: для учебы там надо иметь большие деньги и в совершенстве знать язык на котором вас обучают. Согласитесь, что тем и другим в нашей стране обладает далеко даже не каждый третий. Кроме того надо правильно выбрать ВУЗ и иметь какие ни какие таланты к выбранной профессии, а не только желание. Но это всё как и у нас, переезд за границу этих сложностей не отменяет. Государство в вопросе, обучения за границей вам тоже не помошник. Если государство отправит на учебу "кучу оболтусов" в посредственный зарубежный ВУЗ это не исправит ситуацию в стране. А отбирать таланты, чтобы там не заявляли в "Сириусах" оно тоже гарантированно не умеет. С другой стороны сколько бы не говорили в академических кругах о научных и технических школах появляются эти школы непредсказуемо и исчезают совсем не ожиданно. Кроме того прорыв очень часто сменяется застоем. Так, что ориентируясь только на рекламную информацию в СМИ вам врядли удастся найти нужное вам место учебы заграницей.
Остается учиться на производстве, но хорошее место для этого надо еще найти и как-то туда попасть! Кроме того для этого необходимо обладать хоть какой-то базовой подготовкой.
Что же тогда делать?
Я считаю, что обучаться программированию надо начинать еще в школе! Для этого необходимо, чтобы в вашем полном распоряжении был хоть какой-нибудь компьютер. Дальше необходимо изучить простейший из имеющихся на нем языков высокого уровня, при отсутствии таковых можно попробовать программировать и в машинных кодах (правда в этом случае вам необходимо хорошее письменное руководство или живой консультант). Параллельно неплохо прочесть, что-то о том, как работает компьютер. В первом приближении сойдет и статья в детской энциклопедии (скажем Аванта+, тома "Компьютер" и "Информатика"), главное не относится к полученным знаниям, как к истине в последней инстанции и понимать, что это только даже не очень верный каркас вашего будущего знания и в нем много в процессе дальнейшего изучения придется уточнить и поменять. В качестве консультанта могу посоветовать использовать руководителя школьного кружка "компьютерной граммотности", мне кажется, что все проблемы возникшие у вас на этом этапе он способен решить. Но конечно все надо проверять особенно, если кружок платный.
Если у вас есть выбор, то в качестве первого языка программирования, я бы рекомендовал БЭЙСИК, если его нет, но можно поставить, я бы поставил.
После этого можно приступать к написанию первой очень простой программы, потом второй и так далее постоянно повышая их сложность. Хорошо бы, чтобы эти программы имели какой-то практический смысл, для вас,вашей семьи или друзей! Цель написания всё усложняющихся программ понять ограничения используемого вами языка программирования. Т.е. понять какие задачи нельзя решать с его помощью и почему. Если вам за это время надоест заниматься программированием значит это не ваше призвание!
Если интерес не пропадет можно приступать к выбору своего первого профессионального компьютера. Это должен быть аппарат занимающий самую большую нишу на компьютерном рынке. Не забывайте, что вы только начинающий программист и рынок спроса на ваши услуги должен быть большим и быстро растущим.
Вы наверное заметили, во время работы на вашем первом компьютере, что помимо языка Бейсик вам для разработки программ были нужны и другие иногда не очень бросающиеся в глаза инструменты, как-то: редактор текстов, какой-никакой отладчик, что-то для поиска и организации хранения данных, возможно даже система программирования для БЭЙСИКА. Если системы программирования на старом компьютере не было, на новый её надо установить и опробовать все предлагаемые ею возможности. Для чего надо разработать еще одну более сложную программу на БЭЙСИКЕ с использованием системы программирования.
После чего необходимо досконально изучить принципы работы нового компьютера и операционной системы под которой он работает. Естественно, что эта ОС должна быть наиболее распространенной ОС для вашего типа компьютера.
После чего можно установить систему программирования для Ассемблера и приступить к его изучению. Для этого придется писать очередную программу. Осваивать Ассемблер без консультанта не очень просто, но возможно! Интернет и техническая литература вам в помощь! Но тут надо честно признать, что в области технической литературы шедевры встречаются значительно реже, чем в области художественной литературы. Не все из них своевременно переводятся на русский язык, к тому же перевод не всегда адекватно можно понять. Поэтому придется изучить английских до уровня - свободно читаю специальную литературу.
Для получения базовой подготовки в ИТ надо знать еще много чего помимо ассемблера. Выучить все это самостоятельно очень не просто! Поэтому предлагаю заняться этим в профильном ВУЗе, во-первых , не все из них учат абсолютно плохо, во-вторых боюсь, что сегодня без диплома о высшем образовании не примут даже в дворники, в третьих лишних знаний не бывает от слова вообще! Как бы плохо не учили в вашем ВУЗе, но ваш кругозор он расширит, хотя возможно при этом и не снабдит достоверными и практически полезными знаниями в области ИТ. Но не исключенно, что в ВУЗе вы сможете найти достойных консультантов по некоторым интересующим вас вопросам, при чем не только среди преподавателей, но и среди студентов. Во время учебы нельзя ни на минуту забывать о необходимости получения специальных знаний по самым разнообразным инструментальным средствам, как-то: графическим редакторам, системам проектирования на их основе. Помимо этого надо изучить и понять взаимодействие программ в локальных и глобальных сетях и все работающие в них протоколы передачи данных. Еще существуют программируемые и настраиваемые аппаратно-программные средства защиты компьютерных сетей, которые надо бы тоже знать. Есть еще масса переферийных устройств, часто со своими возможностями программирования, которые тоже было бы неплохо изучить. Существуют еще такие инструменты как СУБД, хотя бы одну из которых необходимо знать. Есть различные языки форматирования экранов, которые очень полезны при разработке диалоговых программ и создании сайтов. Необходимо изучить различные форматы упаковки графических данных (пиксельных и векторных), без знания которых нельзя профессионально решать многие задачи от разработки компьютерных игр до построения разнообразных систем инженерных расчетов. Есть специальные инструменты для построения мультипликации и создания музыки и различных шумов. Есть специальные рисовальные пакеты на которых создают мультипликацию для испльзования в играх и художественных фильмах. И специальные редакторы для монтажа видеоряда. Есть специальные средства для проведения виртуальных совещаний. Есть отдельный блок знаний связанный с проектированием и разработкой больших программных систем. Есть средства компьютерной криптографии. Не стоит и забывать о приемах построения столь популярных сейчас нейросетей и ИИ. Наконец есть загадочный мир криптовалюты и приемов ее создания.
Во всем этом многообразии программных инструментов надо уметь хотя бы ориентироваться! Знание всего этого и превращает вас в специалиста с хорошей базовой подготовкой.
Возникает вопрос как все это успеть изучить? Могу дать только один совет - надо точно знать траекторию своего профессионального роста и не разбазаривать свое дорогое время на изучение разного рода "пустышек".
Что я под этим имею в виду? Дело в том, что за время моей долгой профессиональной карьеры на моем профессиональном горизонте мелькнули тысячи программ, рекламируемых, как "чудо инструменты" программиста. Которые тем не менее не смогли завоевать своё место на рынке ИТ! Просто избегайте таких продуктов, основная масса из них это языки высокого уровня. Не буду утверждать, что все языки высокого уровня абсолютно не нужны, существование некоторых из них вполне оправдано!
Во многих языках высокого уровня нельзя понять всех их возможностей и средств без знания языка ассемблера и принципов работы ЭВМ, которую вы используете в своей деятельности! Не стану спорить, что в основе некоторых из них лежат красивые идеи и интересные подходы, которые могут пригодиться вам в дальнейшей вашей работе. Но ни один из них не способен ускорить работу и повысить возможности применения ваших программ качественнее и лучше языка Ассемблера. и уж заведомо все выгоды от использования языка высокого уровня не соответствуют действительности в той степени, какую обещает реклама! Кроме того все они для начала работы не требуют полного знания всех своих возможностей, поэтому изучение их не опытным пользователем превращается в простую профанацию, когда изученных языков много, а используемых возможностей мало, потому, что из каждого нового языка отбираются только те возможности, которые необходимы пользователю для решения его текущих задач! В профессионала же специалиста превращает доскональное знание возможностей своих инструментов и виртуозное владение этими инструментами на практике, что с языками высокого уровня могут позволить себе не многие, кроме их авторов. И уж никак не начинающие программисты-любители. Не смотря на это очень многие команды программистов ведут разработку своих программ на языках высокого уровня, происходит это по многим причинам, на мой взгляд наиболее частая из которых низкая квалификация руководства. Обращаю ваше внимание, что в данном случае я говорю не об использовании языка высокого уровня при разработке комплекса программ, а о разработке всего комплекса программ на том или ином языке высокого уровня.
Хочу еще сказать, что не стоит думать, что не знание какого-либо конкретного языка высокого уровня лишит вас возможности занять достойное место в таком коллективе.
Потому, что для любого программиста с хорошей базовой подготовкой не проблема освоить даже новый для себя ассемблер. На это при отсутствии хорошего консультанта обычно уходит чуть больше недели! А уж при изучении нового языка высокого уровня при тех же условиях достаточно нескольких дней.
Если я вас не запугал и вы по прежнему готовы попробовать войти в мир искусства программирования, в стране которая переживает глубочайший кризис этого вида искусства, то Добро пожаловать в мир ИТ в стране под названием РФ! В конце концов не боги же горшки обжигают! И на вашей улице возможен праздник!