Войти в IT

ploughlike_elk задал интересный
вопрос – а с чего начать изучать
программирование? Вопрос настолько здорово сформулирован, что
приведу его здесь полностью:
Наверное дурацкий вопрос, но вот с чего именно посоветуете начинать начинающим?
Я когда-то начинал с программируеммых микрокалькуляторов (если кто помнит такие с их программами в сотню шагов или типа того), потом Бейсик на школьном компьютере БК-чего-то-там (на который я переписывал игры с тех самых микрокалькуляторов), потом Бейсик на ZX Spectrum и потом Ассемблер для него же. Вот для программирования на Ассемблере мне тогда уже не хватило аппаратной части: не было дисковода, а запись и считывание с магнитофонной кассеты для прогонки написанного кода занимала слишком много времени. ZХ-128 с дисководами тогда стоил как сильно подержанная машина, а уж про "IBM-совместимый" компьютер можно было и не мечтать, такие были только в организациях. В общем, тогда победило другое и более сильное увлечение, автомобилями. Сперва много, реально много прочитанных книг по устройству автомобиля и хорошее понимание теории в этом плане. А потом уже первый Жигуль, практически полностью разобранный-собранный собственными руками чтобы это само ехало и более-менее неплохо выглядело... Ну а дальше уже другие люди сами приходят и просят им починить машину, и пошло и поехало.
Так вот что у нас будет аналогом книги "Устройство автомобиля" и Жигулей-копейки в программировании? Если вообще можно так ставить вопрос?
По своему опыту попыток войти в тему я могу сказать что спотыкаюсь на постановке самому себе интересных задач. Я стал изучать Python, сделал калькулятор, сделал конвертер, а дальше всякие курсы и книги предлагают сделать какой-нибудь Asteroid Shooter и на этом месте я теряю интерес. Я понимаю что делает код и как он создает картинку на экране реагирующую на user input, но слишком многое происходит "под капотом", с использованием всяких библиотек, т.е. огромного количества кода написанного другими людьми. Мне лишь предлагается воспользоваться им приняв как должное что он просто работает. Просто напиши правильно вызов функции или класса - и он сам все сделает. Так неинтересно!
Если делать аналогию с моей работой, это как использовать некоего робота меняющего ремень ГРМ и вместо кручения гаек самому надо лишь ввести правильно команду этому роботу. Оно конечно чисто и быстро, но скучно и все равно не понимаешь что же там делает робот и как этот ремень там чего-то в моторе приводит во вращение.
На самом деле ответ содержится в самом вопросе, надо лишь внимательно его перечитать.
Допустим, я спрошу собеседника:
– А зачем ты ремонтируешь машины?
Собеседник посмотрит на меня, как на дурачка, и ответит:
– Ну очевидно, чтобы ремонтировать машины! Чтобы машины, которые не могли ездить, ездили! Что ж тут непонятного?
А дело тут в том, что никто не пишет программы, чтобы писать программы. Программирование, в отличие от многих видов человеческой деятельности, – не цель, а средство. Поэтому первое, что должен сделать желающий научиться программировать, – поставить задачу.
Ценность всех так называемых «школ программирования» не в том, что там расскажут про какой-нибудь язык – синтаксис языка можно изучить за пару дней, а потом ещё за пару дней написать на этом языке простенькую программу. Ценность в том, что на курсах перед студентами ставят задачи, которые те должны решить, чтобы получить диплом об окончании курсов.
Те, кто играет в компьютерные игры, считают, что игры интересны всем просто по определению. Вот и предлагают в качестве учебного задания написать игру. А моему собеседнику это внезапно не интересно. И я его понимаю – мне это тоже не интересно. Я в своё время даже умудрился рассказать на собеседовании самому Евгению Сотникову, что компьютерные игры – бесполезная трата ресурсов и времени.
Когда есть задача и Google, нужный материал находится очень быстро, не надо даже спрашивать советов у блогеров в интернете. Так давайте поищем задачи!
Допустим, вы – офисный клерк, который постоянно заполняет формы
в Excel’е и рассылает горы писем. Подумайте, какие задачи за вас
мог бы делать робот. Попробуйте записать в Excel’е макрос,
разберитесь, как он работает. Visual Basic – очень простой язык, в
нём всего десяток конструкций. Изучение программирования сведётся к
изучению объектной модели Excel. А потом освойте такую нехитрую
операцию как mail merge. А потом само собой придёт понимание
технологии OLE... Бывают, правда, злобные корпоративные программы,
не допускающие никакой штатной автоматизации. В этом случае
Аркадий Гилев рекомендует обратить
внимание на Python и библиотечку PyAutoGUI.
Или, допустим, вы – интернет-боец невидимого фронта, убеждённый,
что Власти Скрывают™, журналисты обманывают, все данные на самом
деле лежат в открытом доступе, но средний тупой и ленивый юзер
просто не может сделать из них правильный вывод. В этом случае
выбор – язык Python, книга Тоби Сегарана «Программируем
коллективный разум», библиотека Pandas и сайт Госкомстата и
Госдепа. Скачайте данные, найдите Тренд, постройте Диаграмму и
выведите на чистую воду полную лажу тайную ложу, правящую
миром.
А может, вы в детстве читали Азимова и Гаррисона, и теперь вам хотелось бы домашнего робота, который бы бегал по комнатам, смешно спотыкаясь, и моргал лампочками? Тогда ваш выбор Arduino. А чтобы изучить таинственный язык, на котором программируют роботов, прочтите классическую книгу Брайана Кернигана и Денниса Ритчи «Язык программирования C».
Ой, вы не клерк и не фантазёр, а простой предприниматель. Который понимает, что управленческий учёт построен абсолютно неправильно, а стоит лишь по-умному считать дебет с кредитом, как прибыль попрёт вверх (реальный, кстати случай; дорогой А., если ты читаешь этот текст, привет тебе!) Тогда ваш путь – 1С со всеми его если-то-иначе-всё.
Что посоветовать автомеханику? Сложный вопрос. Наверно, почитать всякие статьи по темам «базы знаний» и «экспертные системы». Это совсем не похоже на изучение устройства компьютера, зато похоже на изучение устройства данных, что намного интереснее. И кто знает, может в результате получится такая система, которую подключаешь к сканеру, а она такая «масло надо было поменять ещё 10000 миль назад, у правого переднего колеса развал уехал на полминуты, а если вы вотпрямщаз не замените деталь XYZ123456 (ссылка на eBay), то своим ходом машина доедет только до свалки» – как в известном анекдоте.
В общем, ищите задачу, которая сможет вас заинтересовать, вбивайте формулировку в Google, а уж книги, примеры и единомышленники найдут вас сами.
Есть, правда, и такая формулировка задачи: «хочу много денег, а
айтишники – они же все сидят в тёплом офисе, ничего не делают и
гребут деньжЫщи». Тут тоже просто – читайте какую-нибудь брошюру
типа «Java за 21 день», выполняйте упражнения в конце каждой главы
и пополняйте армию говнокодеров, написав объявление на
Тиндер HeadHunter. Вторым Биллом Гейтсом не станете, но на
доширак, пиво и Hyundai Solaris в кредит заработаете всегда.
Оставайтесь с нами, и вы узнаете, как стать хорошим программистом.
|
</> |