(Иллюстрации к статье А.П. Ершова «Программирование — вторая грамотность»)

Стив Джобс не написал ни строчки кода, Билл Гейтс — написал. Пол Грэм — первоклассный программист, Питер Тиль — юрист по образованию, сооснователь PayPal и владелец Palantir (написал ли он что-нибудь?), а Илон Маск в детстве написал свою игру и успешно её продал.

Никита truesnow из #tceh сказал мне, что на курсе «Врубаемся в Ruby» они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?

На ум сразу пришел бомж-программист, но после успеха с его приложением он предпочёл остаться «дзен-монахом». Есть ли еще примеры? Вдохновляющий пример, что научиться кодить может каждый — слепой программист. Когда я прочитал статью на Хабре «Смотря на код с закрытыми глазами», то понял, что нет преград, кроме собственных отмазок.

А у меня для вас есть три истории из моей жизни. Просто три истории.

История первая — ламер


Слово «ламер» я прочитал в «Компьютерре». Там давалось такое определение: «Ламер — отнюдь не безграмотный человек, не умеющий (как бы это помягче выразиться?) программировать». Окрылённый истиной я побежал и рассказал об этом друзьям-одноклассникам, но они предпочли поиграть в футбол, вместо того чтобы освоить суперспособности. Забавно, что потом все они зарабатывали программированием деньги, а я нет. Через неделю я записался в краевую станцию юных техников (КСЮТ), где был кружок по программированию. Там для новичков давали qbasic. А боги прогали на C.

Так вот как-то один из «богов» подозвал меня к монитору и спросил: «Так сможешь?». И показал прогу, которая ждала, когда пользователь введёт в командной строке любой символ, а потом поворачивала его на 90 градусов. Я был ошеломлен.

Наверное, меня это так зацепило, что я решил — во что бы то не стало, выучить все что можно, и стать самым крутым программистом. Заряда хватило на годы. Этот случай я позабыл, прошло несколько лет, и, вспомнив о нем, я написал не больше десятка строк на basic`e минут за 20. Программа работала идеально.

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

История вторая — первый шифр


Идея пришла внезапно. Пришла так, что не смог заснуть и сел кодить. Из шифров тогда я знал только про пляшущих человечков из Шерлока Холмса (а это класс 8 или 9, занимался программированием полгода-год). Мне захотелось написать шифр, чтобы нельзя было так просто его вскрыть простым анализом.

Задумка была следующая: каждой букве русского алфавита мы приписываем массив из 5 символов в виде букв русского и английского языка, спецсимволы. При шифровании мы рандомно выбираем один из них. Получалась «расширенная» простая замена. Это сейчас мне понятно как его ломать, но тогда для меня была запредельная высота. Через 3-4 года я поступлю на компьютерную безопасность.

Вывод. Решать интересные задачи — это круто. Но гораздо круче придумывать и находить задачи самому.

История третья — триумф BASIC`а


Я уже 2 года «занимался» программированием. И тут в школе появилась… информатика. Меня почему-то отправили в слабую группу. Как узнал позже, моё лицо не понравилось преподавательнице и она посчитала, что я тупой. Мои друзья ворвались в кабинет к директору и сказали, что я занял призовое место на краевой олимпиаде по программированию. Начались, разборки, но мне было так пофиг, что я остался в слабой группе, где учили вводить цифры в Exсel. За первую неделю я сдал всю программу и спокойно ходил играть в Diablo 2 в компьютерный клуб.

А на олимпиаде был забавный случай. Разрешённые языки — C, Pascal, а я то был прожжённым бейсичником. Выкрутился. Задачу принимали в виде exe'шника, а я подсуетился и нашёл бейсик, который кует exe'шники. Программы проходили тесты, а сами тесты принимались на серваке. Одна задача была сугубо вычислительная. Давались координаты центров и радиусы двух окружностей. Требовалось выдать взаимное расположение окружностей в текстовом виде: пересекаются, касаются, одна в другой, совпадают, и прочие.

С формулами было возиться лень, и недавно я как раз разбирался с графикой. Задачу решил графически, рисовал окружность одним цветом, а потом «сканировал» попиксельно по второй окружности, втыкаюсь ли я в уже окрашенный пиксель. Был большой страх, что прога не сможет работать на серваке без монитора, но все обошлось — 10 тестов из 10. На разборе задач был звездный час. Полсотни человек решили задачу один в один как автор, какого же было их удивление, когда я рассказал свой способ.

Вывод. Школа — зло. Результат — круто. Нестандартное мышление — прикольно. Обходной путь есть всегда.

Зачем взрослым учиться программировать


У меня есть три ответа на этот вопрос. Они зависят от горизонта планирования:

— Цель на 1 неделю или месяц — это вызов. Это как пробежать марафон или забраться на Эльбрус, проверить не засохли ли мозги, выйти из зоны комфорта.

— Цель на год-два — это бабло. За это время можно научиться создавать ценность и работать удаленно. Или учить других. Очень многие хотят научиться программировать.
пруф
image

сам поискал 8 сентября:


на русском в 1000 раз меньше:


— Цель на 5-10 лет — развитие в целом. Во-первых, вы улучшите своё мышление. Во-вторых, вы сделаете неоценимый подарок детям. Они получат несколько лет форы в изучении программирования и у вас появится много чудных моментов совместного написания программ. Для полного счастья останется научиться играть в компьютерные игры, но это вы скорее всего уже умеете.

Как научиться программировать


Есть заезженная картинка на этот счёт:
image

Почему-то все сразу начинают советовать Кнута, Кормена и прочее, но неподготовленный человек сможет осилить только предисловие. Если совсем проблемы с самооценкой возьмите детскую книгу и напишите игру.

Если готовы приступить по-взрослому, то есть множество ресурсов для самообучения. От Coursera (раз, два) до всяких %имя%academy (codeacademy, htmlacademy и пр)

Если намерения совсем серьёзные, могу посоветовать курс «Врубиться в Ruby».

Во-первых, есть живой преподаватель с хорошим бэкграундом в разработке. Виталий Куреннов, 6 лет пишет на Ruby и больше года обучает всех желающих этому навыку, работал над Ruby проектами для Nokia и Avaya.
Во-вторых, есть группа единомышленников, работая бок о бок с которыми, у вас многократно повысятся шансы дойти до победного конца и освоить программирование до того уровня, когда оно начнет приносить прибыль.



— Никита, почему именно Ruby?
— Все просто, мы нашли очень хорошего преподавателя.


Про Ruby
Попробовать сделать первые шаги можно прямо сейчас, займет всего 5-10 минут.


Нашел шикарный ресурс с геймификацией и сразу из браузера tryruby.org
За 5 минут выполняем несколько заданий, получаем ачивку и переходим на следующий уровень.

image
А зомбяк не хотите ли? railsforZOMBIES.org

Про Lisp
«Однако я не думаю, что смогу убедить кого-нибудь (старше 25) выучить Lisp.» Пол Грэм, «Побеждая посредственность»

Начитавшись Грэма, осваиваю Lisp.

;; Welcome to L(?)THW!
(let ((llthw '(learn lisp the hard way)))
  (format t "~{~@(~A~)~^ ~}, because ~{~A~^ ~} is easier!" llthw (cddr llthw)))

;; Common Lisp: Powerful, Expressive, Programmable, General Purpose, Multi-Paradigm.



Нашёл для себя удобную браузерную обучалку Learn Lisp The Hard Way

«За те годы, что я проработал в Viaweb, я прочитал множество объявлений о найме на работу. Примерно каждый месяц появлялся новый конкурент. Первое, что я делал после того, как проверял, доступна ли онлайновая демонстрация работы их программы, — смотрел список их вакансий. Через пару лет я научился отличать опасных конкурентов от неопасных. Чем больше отдавало IT-мэйнстримом от описания требуемых кандидатур, тем менее опасна была компания. Самыми безопасными были те, кому требовались специалисты по Oracle. О таких не стоило беспокоиться. Также мы были спокойны, если требовались разработчики на C++ или Java.

Если требовались программисты на Perl или Python, это уже было слегка пугающе — это значило, что компанией или, по крайней мере, ее технической частью заправляли настоящие хакеры. Если бы я когда-нибудь увидел объявление о найме на работу Lisp-хакеров, я бы обеспокоился не на шутку.»
Пол Грэм, «Побеждая посредственность»


Ещё пара советов


  • Читайте Хабр. Например, вот это статья может очень помочь тем кто уже начал свой путь — «Почему научиться программировать так чертовски тяжело?» Или история успеха — «Как я сам научился программировать за 8 недель»
  • Читайте Пола Грэма. Он вдохновит заняться программированием кого угодно. Даже меня. Даже на Lisp.
  • Найдите единомышленников
  • Найдите вдохновляющую задачу
    например
    Общие упражнения:
    Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование на любом языке.
    Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
    Rosalind — это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
    Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
    codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.
    Ruby Quiz — серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.

    Задачи из олимпиад по программированию:
    UVa Online Judge — коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.
    TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.
    CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».
    Timus — то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).
    SPOJ — похож на UVA, с огромным числом языков программирования на выбор.
    USACO содержит несколько задач на алгоритмы с руководством по их решению.

    Под определённые языки:
    Для Prolog, Lisp и подобных языков посетите P-99 и L-99, наборы из 99 задач для повышения вашей эффективности в данных языках.
    Python Challenge — объединяет загадки и головоломки, которые помогут вам серьёзно прокачаться в Python.
    4Clojure — набор упражнений по программированию, специально разработанных под Clojure, Lisp-подобный язык.
  • Соревнуйтесь
  • Играйте в Игры для программистов
  • Пишите код каждый день
  • Пишите о своих успехах и находках на Хабр


P.S.
Ещё интересные статьи с Хабра на тему быть/не быть программистом и как делать шаги на пути мастерства





P.P.S.
Алан Кэй делится яркой идеей об идеях. Архитектура, математика, обучение, программирование и много ещё интересного.

Комментарии (62)


  1. lair
    08.09.2015 11:13
    +1

    Никита (@truesnow) из #tceh сказал мне, что на курсе «Врубаемся в Ruby» они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?

    Что в вашем понимании «гуманитарий»?


    1. MagisterLudi
      08.09.2015 11:21
      +2

      В моем стереотипном понимании, самый экстремальный случай — красивая девушка с филфака/журфака.
      Ну, а по существу, тот человек, скорее всего с неестественно-научным фундаментом, отучившийся/работающий в гуманитарной области: журналистика, право, РR, HR (Лиля, это не про тебя), маркетинг и прочее. Кто в школе/универе не ходил на кружки по программированию.


      1. lair
        08.09.2015 11:35
        +6

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


        1. MagisterLudi
          08.09.2015 11:38
          +1

          Ура. Круто. Поделитесь, пожалуйста, как отважились на этот шаг, с чего начали, чему, как и где учились. Очень интересно.


          1. lair
            08.09.2015 11:41
            +3

            Это не «отважился», мне всегда нравился это процесс, я с детства читал книжки о компьютерах, позже — руководства по программированию, потом начал писать что-то для себя, а потом отец посоветовал мне конкретную работу, где я мог бы попробовать эту любовь применить. Ну и понеслось.

            Я для вас не совсем чистый пример, я фактически параллельно учился в гуманитарной области и саморазвивался в программировании; я просто считаю себя наглядным примером того, что образование — не помеха, а «гуманитарный склад ума» — некоторое преувеличение.


            1. meft
              08.09.2015 16:32
              +2

              А может Ваш пример несколько обратный?
              Может Вы все же (технарь) близки к естественным наукам, но в образовании пошли в сторону гуманитарных?
              Вы пишите, что с детства читали книжки о компьютерах, т.е. самостоятельно интересовались данной сферой. А что подтолкнуло Вас выбрать направление в учебе? Самостоятельно? Это было интересно? На протяжении всего периода учебы?


              1. lair
                08.09.2015 16:36
                +1

                Я поэтому и спросил — что такое «технарь/гуманитарий». Мне ответили, что образование, и я, в принципе, с этим согласен, потому что обсуждать «склад ума» существенно сложнее; более того, я считаю, что именно образование формирует основные мыслительные привычки.

                И да, образование я выбирал самостоятельно, мне было интересно все время учебы — не все предметы, конечно, но вы знаете таких людей, которым в нашем образовании нравятся все предметы?


                1. meft
                  08.09.2015 16:54

                  Я больше склонен к тому, что «технарь/гуманитарий» определяется все же складом ума. И то, что обосновать принадлежность к тому или другому типу достаточно сложно, ничуть не отменяет моего мнения.
                  Научиться можно чему угодно. Раньше палку в руках держать не умели, но научились. Вопрос в том, что легче дается. Какой подход к решению задач использует человек.
                  Давно была история, уже не помню, как девушка решала простую задачу с рядами (в примере, кажется людей в ряд ставили). Ее решение было на столько не стандартным, что сложно было само решение уложить в голове (для меня по крайне мере), но ответ был верным, да и само решение пусть и неестественно, но тоже верно.
                  А учеба… ниже уже расписали, что вроде бы музыка и является гуманитарной наукой, но системный подход ей только в пользу.
                  Так же можно сказать и про другие науки. К любой науке можно подойти с разных сторон.

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


                  1. lair
                    08.09.2015 16:59

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

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

                    Я больше склонен к тому, что «технарь/гуманитарий» определяется все же складом ума.

                    Вы знаете, как его определить? Я — нет. А если я не могу определить, является ли человек технарем или гуманитарием, как я отвечу на вопрос, знаю ли я хотя бы одного «переучившегося» гуманитария?


        1. MagisterLudi
          08.09.2015 11:40

          Хотя, музыка на «высшем уровне», скорее всего, покруче программирования будет.


          1. lair
            08.09.2015 11:42

            Ничем не круче, скажем, высшего филологического. Что музыка — знаковая система, что язык. Способность хорошего филолога или лингвиста к систематизации и анализу вызывает у меня искреннюю зависть.


            1. MagisterLudi
              08.09.2015 11:44

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


              1. Dywar
                08.09.2015 14:45
                +3

                1) Отладка приложений для Microsoft .NET Автор: Джон Роббинс

                Если вы прочтете мою биографию в конце книги, то заметите, что я не занимался программированием почти до 30 лет, т. е. в действительности это моя вторая профессия. Моей первой профессий было прыгать с самолетов, преследовать врага, так как я был «зеленым беретом».


                2) CODE COMPLETE Автор: Стив Макконнелл
                Программисты-самоучки
                Если вы не имеете специального образования, вы не одиноки. Ежегодно программистами становятся около 50 000 человек (BLS, 2004, Hecker 2004), однако число дипломов, вручаемых ежегодно в нашей отрасли, составляет лишь около 35 000 (NCES, 2002). Легко прийти к выводу, что многие программисты изучают разработку ПО самостоятельно.


                Я тоже не «компьютерщик» и не «программист» по образованию.


                1. CHEM_Eugene
                  08.09.2015 16:37
                  +1

                  Немало нас однако, сам химфак закончил с красным дипломом, а потом понеслось....)))


        1. andrewsch
          08.09.2015 14:56

          На одной из прошлых работ HR обращала внимание на кандидатов с муз. образованием/способностями и связывала способности к музыке со способностями к математике, и соответственно — плюс для программеров.

          Затрудняюсь сказать, насколько это правдиво :-)

          Мне лично гитара помогает вечером мозги прочищать, после дня за компом.


          1. lair
            08.09.2015 15:04
            +6

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

            Смотреть на знание языков — и то полезнее.


            1. saboteur_kiev
              08.09.2015 17:22
              -3

              Музыка = математика + физика.

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

              Возьмите любого senior музыканта (а senior музыкант полюбому что-нибудь да писал сам), и скажите, что он неспособен на аналитику?

              Для меня вообще деление на гуманитарные и точные науки — отсебятина. Вселенная никакие науки ни на что не делит.
              Под тупыми гуманитариями часто возникает ассоциация ну например с глупой девочкой из HR, которая неспособна правильно связать теплое и мягкое. Но таким платят немного, то есть это что-то на уровне junior программист.

              Посмотреть на мидов и сеньоров HR — те же самые девочки, но знают несколько языков, отлично разбираются в психологии, получают нормальные деньги, умеют переманить к себе лучшие умы, и собственно создают компанию, поскольку «кадры значат все».

              Для меня подкрепление чем-то официальным меньше, чем подкрепление логикой и фактами. Поскольку не знаю что такое «официальное» — я к любому ресурсу отношусть несколько скептически, потому что «даже печатные газеты врут».


              1. lair
                08.09.2015 17:28
                +3

                Музыка = математика + физика.

                Вы это серьезно? Для исполнителя музыка — это мелкая моторика и слух.

                Работа с интервалами и длительностями, вибрация и понимание тембров и звучаний, структуры ритмических рисунков.

                И что вы имели в виду под всем этим потоком слов? Что за «работа с интервалами и длительностями»? Умение читать ноты и слышать? Для этого не нужна ни математика, ни физика.

                Вдобавок сейчас вся обработка звука цифровая.

                Ни один из известных мне академических музыкантов не интересовался обработкой звука.

                Возьмите любого senior музыканта (а senior музыкант полюбому что-нибудь да писал сам)

                Вы ошибаетесь. Чтобы быть хорошим исполнителем, не надо уметь сочинять (хотя все, тем не менее, пишут на соответствующих предметах, но это на уровне сочинений в школе).

                скажите, что он неспособен на аналитику?

                Любой умный человек с хорошим образованием способен на аналитику. И это главный пойнт.

                Для меня вообще деление на гуманитарные и точные науки — отсебятина.

                Это не отсебятина, а удобный инструмент для категоризации (передаем привет анализу, да).

                Вселенная никакие науки ни на что не делит.

                Вселенная и слова «наука» не знает, так что это бессмысленный аргумент.

                Для меня подкрепление чем-то официальным меньше, чем подкрепление логикой и фактами.

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


                1. saboteur_kiev
                  08.09.2015 17:55

                  > Вы это серьезно? Для исполнителя музыка — это мелкая моторика и слух.

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

                  > И что вы имели в виду под всем этим потоком слов? Что за «работа с интервалами и длительностями»? Умение читать ноты и слышать? Для этого не нужна ни математика, ни физика.

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

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

                  > Вы ошибаетесь. Чтобы быть хорошим исполнителем, не надо уметь сочинять (хотя все, тем не менее, пишут на соответствующих предметах, но это на уровне сочинений в школе).
                  Вы ошибаетесь. Чтобы быть хорошим МУЗЫКАНТОМ, нужно уметь делать гораздо больше, чем просто исполнять.

                  > Любой умный человек с хорошим образованием способен на аналитику. И это главный пойнт.
                  Да.

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

                  > Вот я и хочу фактов, подтверждающих связь между способностями к музыке и способностями к математике.
                  Среди моих друзей-программистов, на 100 человек очень много людей, которые так или иначе относятся к музыке. То есть примерно 80% как минимум умеют играть на каком-либо музыкальном инструменте, а около 20% профессиональные музыканты (играют на сцене).


                  1. lair
                    08.09.2015 18:18
                    +1

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

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

                    В музыке, чтобы разобраться «почему так», есть отдельные дисциплины (а именно — история музыки, анализ, гармония, полифония, и несколько более мелких). Ни математика за пределами 9-го класса (а именно — простая арифметика и золотое сечение, данное как константа), ни физика (за исключением понятия резонанса и деления волны) там не используются.

                    Умение понимать почему ноты так звучат.

                    О, правда? А давайте проверим.

                    Почему мажорный и минорный интервал так влияют,

                    Не бывает мажорных и минорных интервалов. Вы имели в виду большую и малую терцию? Или мажорное и минорное трезвучие? И как он влияют?

                    почему октава это кратное половине струны

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

                    почему мы взяли за минимальный интервал полутон

                    Кто «мы»? Я не знаю такого «мы». И почему же?

                    Возможно в те времена, когда они начинали, не было возможности работать со звуком на компьютере, а сейчас они зарабатывают уже просот концертами?

                    Была, только им это низачем не надо. Академическое исполнительство — оно не про это.

                    Но вы действительно считаете их сеньорами в области музыки?

                    Конечно. Люди выступают, конкурсы выигрывают, диски записывают.

                    Чтобы быть хорошим МУЗЫКАНТОМ, нужно уметь делать гораздо больше, чем просто исполнять.

                    Во-первых, я нигде не писал, что надо просто исполнять. Во-вторых, чтобы быть хорошим исполнителем (а в нашей опусной культуре музыкант — это исполнитель) — нужно именно уметь «просто исполнять». Другое дело, что это нифига не «просто», и чтобы это уметь, надо иметь неслабую теоретическую базу… которая все равно не включает в себя сочинительство.

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

                    Среди моих друзей-программистов, на 100 человек очень много людей, которые так или иначе относятся к музыке. То есть примерно 80% как минимум умеют играть на каком-либо музыкальном инструменте, а около 20% профессиональные музыканты (играют на сцене).

                    (Среди моих друзей-программистов нет ни одного музыканта; в «околокомпьютерной сфере» есть парочка, но за пределами ее — намного больше. И я знаю очень много музыкантов, не имеющих никаких математических способностей.)

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

                    Давайте посмотрим с другой стороны: почему вы считаете, что из того, что ваши друзья-программисты что-то умеют в музыкальной сфере, можно делать вывод, что музыкальные способности подразумевают математические? Не может ли быть, скажем, наоборот — что-то в программистской области стимулирует музыкальное творчество? (я понимаю, что это очень громкое допущение, но оно ничем не отличается от предыдущего)

                    Ну и да, неплохо бы сравнивать доли «среди программистов» и «среди поэтов» (например). Или «среди токарей». Или сами впишите нужное.


                  1. 0xd34df00d
                    08.09.2015 18:52
                    +1

                    Одноточечные выборки — это, конечно, дело очень неблагодарное, но вот сужу таки по себе: вроде как программист, и все мои музыкальные навыки ограничиваются умением перебирать пальцами по гитарному грифу как-то там. С музыкальной теорией и подоплёкой того, что я пытаюсь копировать, всё очень плохо.

                    Впрочем, знакомые хорошие музыканты у меня есть, да, которые не очень математики. И хорошие математики-программисты, которые не очень музыканты. И знакомые хорошие математики, программисты, музыканты и ещё с пяток областей деятельности.


                    1. lair
                      08.09.2015 18:58

                      Мне тут смешное подсказали: среди моих друзей-мехматян (в смысле, МГУ) более 60% хорошо шьют (в смысле, одежду). Надо ли сделать из этого соответствующий вывод?


                      1. 0xd34df00d
                        08.09.2015 18:59

                        Да, можно порекомендовать эйчарам требовать приносить на собеседование образцы вышивки.


                        1. lair
                          08.09.2015 19:00

                          BTW, если HR — девочка, можно получить неожиданный бонус.


                          1. 0xd34df00d
                            08.09.2015 19:04
                            -1

                            В очередной раз убеждаюсь, что я совсем не понимаю женщин.


              1. Dywar
                08.09.2015 18:07

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

                Some links between Music and Mathematics
                Music and mathematics
                The Correlation Between Music and Math: A Neurobiology Perspective
                Cindy Zhan


                «У тебя есть борода, я скажу тебе да», супер! :)
                Ради рифмы готовы пожертвовать смыслом.
                Но пост не про музыку.


                1. lair
                  08.09.2015 18:24

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

                  (пишет она про себя, конечно, другое, но никак иначе объяснить используемую литературу и допущенные ошибки мне не удается)


                  1. Dywar
                    08.09.2015 18:35

                    Зачем же так про человека.

                    Благовещенская Екатерина Анатольевна
                    докт. физ.-мат. наук, профессор каф. «Высшая математика» ПГУПС и СПбПУ

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


                    1. lair
                      08.09.2015 18:40
                      +2

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


        1. 0xd34df00d
          08.09.2015 18:39

          О, а посоветуйте, пожалуйста, что-нибудь по теории музыки для всяких там математиков и прочих программистов?


          1. lair
            08.09.2015 18:41
            +1

            Да то же самое, что и для всех остальных: И.В. Способин, «Элементарная теория музыки».


            1. 0xd34df00d
              08.09.2015 18:44

              Мне его уже рекомендовали, да, да что-то как-то с первого наскоку не очень хорошо пошло. Надо попробовать ещё раз, значит. Спасибо.


              1. lair
                08.09.2015 18:46

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


              1. oisee
                09.09.2015 10:37

                Теория музыки «для чайников». «Для чайников» вообще очень хорошая серия.


  1. evilbot
    08.09.2015 11:48
    +1

    Создатель pressfeed.ru — журналист научившийся программировать. Самый яркий пример того как гуманитарий может научиться программировать.


  1. nullptr
    08.09.2015 13:14
    +1

    Зачем взрослым учиться программировать… У меня есть три ответа на этот вопрос.
    Ну просто классика «мотивационных» feel-good статей по «личностному росту». У вас не должно быть ответов на этот вопрос. Ни три, ни два, ни одного. Вопросы «Зачем мне это нужно?», «Какую мою проблему это решит?» каждый задает и отвечает на него сам себе.

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

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

    А пытаться учить программирование (точнее, один конкретный язык) только потому, что на каком-то сайтике написано что это «круто»… ну, личное дело каждого, конечно.


    1. Alexeyslav
      08.09.2015 14:54

      По большому счету, настроить стиральную машинку, микроволновку или установить будильник на определенное время — это УЖЕ навыки программирования.


      1. nullptr
        08.09.2015 15:20

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

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


  1. winniepuuh
    08.09.2015 15:26
    +3

    >>Стив Джобс не написал ни строчки кода, Билл Гейтс — написал.

    как бЭ, стивушка был отличным программистом и перелопатил кучу кода на своем веку. почитайте историю создания nExt (step).


  1. saboteur_kiev
    08.09.2015 15:48
    +3

    Чорт побери, за одни только ссылки большое человеческое спасибо. В закладки.


  1. AlexBin
    08.09.2015 17:21
    +5

    Первая ассоциация «Гуманитарий <---> Бомж» в статье делает меня улыбаться.


  1. pk1
    09.09.2015 11:50
    +3

    Блестяще, я помню тот номер Компьютерры! )

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

    И слава Богу. Честно говоря, IT без программирования — тоска зеленая.


  1. a3r
    09.09.2015 20:43
    -5

    /* выждал пару дней, чтобы не попасть в тренд */
    Для чего?
    Я понимаю, что это, возможно, уже следующая стадия, но для чего?
    // Кому они нужны, люди умеющие --алгоримтизировать--?
    Дальше что? ОК, они понимают _как_, и, не так важно на каком языке/ Дайте им реальное задание, сложное, интересное. Уже плюс. А Дальше || Дальше < — Что, (если нет (следующего шага))
    В большинстве они CTRL-BодиночкиCTRL-B — это никогда и не было (общественно-популистическим деянием). Не дает это ((бонусов)) в школе/институте. Нет окружения, с которым все это возвышается.
    Мне, блядь, просто интересно, а


  1. esher
    10.09.2015 11:03
    +1

    Филологическое образование. Математику забыл как страшный сон в 1996, поступив на филфак. С 2000 г. пишу на perl, начав с гостевой книги. ООП не постиг — видимо, фундаментально не понимаю, пишу в функциональном стиле. В начале 90х писал на бейсике и изучал ассемблер Z80 (спектрум). Начальное музыкальное образование имеется (также успешно забыто в 1992). Несмотря на привязанность к perl, в рамках hackchallenges успешно разбирался и в коде Java, C++, и просто в ollydbg. Мое мнение — для понимания программирования достаточно внимательности и умения логически мыслить.


    1. Alexeyslav
      10.09.2015 13:47
      +1

      Усидчивость еще забыл. С этим у многих проблемы в наш быстрый на изменения век.


    1. 0xd34df00d
      10.09.2015 14:43

      Точно в функциональном, не в процедурном?


      1. esher
        10.09.2015 14:55

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


      1. AlexBin
        10.09.2015 17:52

        Конечно в процедурном. Это очевидно.


  1. ZOXEXIVO
    13.09.2015 13:30
    -2

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


    1. graninas
      14.09.2015 12:22
      +2

      > те, кто реально хорошо умеет программировать не буду заниматься такой фигней, как обучение

      Это очень неверная предпосылка. Менторство и преподавание — это естественное желание разработчиков уровнем Senior и выше.


      1. 0xd34df00d
        14.09.2015 12:54

        Мягко скажем, не всех разработчиков, для этого надо каким-то определённым характером обладать.

        Желание менторствовать и уровень как-то вообще ортогональны, ИМХО.


      1. ZOXEXIVO
        14.09.2015 12:55

        Менторство выглядит нормальным, если ты человек-звезда, который реально сделал что-то стоящее в своей области.
        Пример тому — Скот Гатри и много других и того же OpenSource. Они многое прошли, написали то, чем мы пользуемся сейчас, но когда каждый мало-мальский программист хочет кого-то обучать, то проблема скорее в том, что пора заводить детей.


      1. ZOXEXIVO
        17.09.2015 12:29
        -3

        Не забываем одну прекрасную крылатую фразу — «Кто умеет, тот делает; Кто не умеет — тот учит». Как раз их этой оперы


        1. lair
          17.09.2015 13:03
          +2

          Эта «крылатая фраза» придумана теми, кто не умеет ни учить, ни делать.

          Нет, вы серьезно считаете, что весь институт образования и наставничества построен на ложном основании?


          1. ZOXEXIVO
            17.09.2015 13:36

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


            1. lair
              17.09.2015 13:42

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

              А чтобы не видеть везде статьи о курсах программирования — просто не читайте IT-новости, сразу мир изменится.


          1. ZOXEXIVO
            17.09.2015 13:49
            +1

            Менторы, расскажите пожалуйста, что вами движет. Мне просто для себя, чтобы понять.

            Хороший программист — человек увлеченный. Даже если у него появилось свободное время — он постарается использовать его с максимальной пользой (должны быть какие-то свои проекты).
            Из этого вытекает вопрос: каким образом человек распределяет свободное от работы время между:
            — человеческим отдыхом: нон-программинг хобби, сон, девушка, жена и.т.п
            — программинг-хобби (если у вас его нет — можете ничего больше не говорить)
            — менторством (по выходным после 7 вечера чтоли ?)

            По идее второе должно занимать значительное время, потому что делать какие-то вещи для себя интересно и полезно, и это занимает очень значительное время.
            Может быть вы в таком возрасте, когда уже все надоело? Тогда пойму — иначе — ну никак не верю, что вы, в ущерб своим интересам обучаете людей от хорошей жизни.
            P.S Насмотрелся я на программистов у которых нет 2 пункта в списке интересов: Обычно приходили после университета и тупо отбывали номер без интереса, устаревшие техники и технологии, нет стремления к развитию, список можно продолжать бесконечно.

            Просто своими словами опишите.


            1. lair
              17.09.2015 14:51
              +1

              Вы почему-то считаете, что менторство — это не работа, и поэтому пытаетесь понять, куда человек его впихивает в нерабочее время. Если вы представите, что человек учит в рабочее время (собственно, это его работа), то ответ на ваш вопрос станет очевиден.


            1. 0xd34df00d
              17.09.2015 16:17

              Научите, пожалуйста, сначала распределять свободное время между нон-программинг хобби и программинг-хобби :(


    1. lair
      14.09.2015 12:44
      +1

      А вы правда думаете, что заработок — это единственная мотивация людей что-либо делать?


      1. ZOXEXIVO
        14.09.2015 12:47

        Если человек занят чем-то серьезным, времени на обучение кого-либо чему либо просто не останется


        1. lair
          14.09.2015 12:57

          Вопрос приоритетов (и умения организовать свое время).