Автор Тема: Обучение программированию (очередной холивар)  (Прочитано 51513 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Хочу высказать свои мысли по поводу обучения программированию.
У меня стойкое впечатление, что в университетах обучают не тому, чему на самом деле нужно.
Я вижу много студентов старшекурсников, которые приходят к нам устраиваться. Они ничего не знают и не умеют.
За последние 3 года к нам пришел только один человек, который смог быстро (1-3 месяца) научиться решать задачи средней сложности за приемлемое время. И этот паренек имеет 11 классов образования и нулевой опыт программирования. Просто варит голова....
По моим наблюдениям талант уделывает высшее образование в сухую.
Также есть еще интересное наблюдение.
Когда выпускник приходит устраиваться, то он совершенно уверен что изучил в университете достаточно. Он уверен в своих знаниях и силах. Он смотрит на бывалых разрабов как на равных. Он привык, что в университете ему все давалось относительно легко. Он думает что сертификат 1С - это не сложнее экзамена по программированию. И вот мы его взяли...
Начинается суровая практика и безжалостные реалии настоящего программирования... с тупыми или вредными заказчиками... со сроками... с задачами, которые не помещаются в голову целиком... с мутными постановками... с отсутствием ТЗ... и т.д. и т.п.
Через пару месяцев он понимает что ему еще учиться и учиться. На опытных товарищей он смотрит как на магов.
Через год он понимает что за 5 лет в универе он не получил никаких практически ценных знаний в программировании. Приходит осознание, что сертификат он пока не в состоянии одолеть... несмотря даже на год практики!

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

Что делать? Я не знаю. От университетов выхлоп практически нулевой.
В итоге мы берем этих студентов, если видим что голова варит. И учим их своими силами... с нуля.
Нужны техникумы, в которых обучают кодеров(именно кодеров). 3 года практики и немного теории при этом...
Такие чуваки должны уметь как минимум грамотно решать легкие задачи по ТЗ за 1-4 часа не дергая своего руководителя при этом.
Причем учить их нужно конкретной технологии и языкам. Т.е. если это СУБД, то он хорошо должен знать реляционную теорию и околосубдшные плюшки типа индексов, транзакций и т.д. И он должен иметь много практики с SQL. Желательно все 3 года практики разной степени сложности.(На деле же SQL народ не знает совсем никак...)
Вот на таких чуваков имхо будет спрос.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Обучение программированию (очередной холивар)
« Ответ #1 : Сентябрь 08, 2013, 08:17:22 pm »
И еще хочу высказать ересь про преподавателей.
Имхо, нельзя допускать к преподаванию программированию людей, которые не имеют как минимум 5 (желательно 10) лет настоящей практики.
Под настоящей практикой я подразумеваю должность сеньера и штук пять крупных, успешно поднятых этим человеком проектов.
Т.е. лет ему должно быть не меньше 30.
Вот такой человек может реально научить ценным вещам.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #2 : Сентябрь 08, 2013, 08:20:21 pm »
И еще хочу высказать ересь про преподавателей.
Имхо, нельзя допускать к преподаванию программированию людей, которые не имеют как минимум 5 (желательно 10) лет настоящей практики.
Под настоящей практикой я подразумеваю должность сеньера и штук пять крупных, успешно поднятых этим человеком проектов.
Т.е. лет ему должно быть не меньше 30.
Вот такой человек может реально научить ценным вещам.
Желательно еще чтобы эта практика была не 20 и не 30 летней давности :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Обучение программированию (очередной холивар)
« Ответ #3 : Сентябрь 08, 2013, 08:23:12 pm »
Угу.  :)

Интересно вот у нас тут опрос провести среди проф. программеров. Кто как научился? Самостоятельно или в универе "по программе"?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Обучение программированию (очередной холивар)
« Ответ #4 : Сентябрь 08, 2013, 08:26:46 pm »
Под настоящей практикой я подразумеваю должность сеньера и штук пять крупных, успешно поднятых этим человеком проектов.

К слову... У меня пока только один крупный проект за плечами.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #5 : Сентябрь 08, 2013, 08:32:26 pm »
Под настоящей практикой я подразумеваю должность сеньера и штук пять крупных, успешно поднятых этим человеком проектов.

К слову... У меня пока только один крупный проект за плечами.
Каковы критерии крупности?
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #6 : Сентябрь 08, 2013, 08:35:52 pm »
Угу.  :)

Интересно вот у нас тут опрос провести среди проф. программеров. Кто как научился? Самостоятельно или в универе "по программе"?
Ну, я то, ясное дело, сам. А в институте было чутка С++ (Borland C - тот что еще под дос, про стандарт он ничего не слышал :-) ) и фортрана. Впрочем, специальность у меня была совсем не программерская.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Обучение программированию (очередной холивар)
« Ответ #7 : Сентябрь 08, 2013, 08:37:27 pm »
Каковы критерии крупности?
Вот с этим сложно...  :) В каждой сфере свои показатели.
У меня - это автоматизация крупного предприятия (завод например) с нуля.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #8 : Сентябрь 08, 2013, 08:43:38 pm »
Правило 10000 часов
Цитировать
Невролог Даниель Левитин пишет: «Из многочисленных исследований вырисовывается следующая картина: о какой бы области ни шла речь, для достижения уровня мастерства, соразмерного со статусом эксперта мирового класса, требуется 10 000 часов практики. Кого ни возьми — композиторов, баскетболистов, писателей, конькобежцев, пианистов, шахматистов, отпетых уголовников и так далее, — это число встречается с удивительной регулярностью. Десять тысяч часов — примерно три часа практики в день, или двадцать часов в неделю на протяжении десяти лет. Это, разумеется, не объясняет, почему одним людям занятия идут на пользу больше, чем другим. Но пока еще никому не встретился случай, когда высочайший уровень мастерства достигался бы за меньшее время. Складывается впечатление, что ровно столько времени требуется мозгу, чтобы усвоить всю необходимую информацию».
Цитировать
«В Мичигане я программировал по восемь-десять часов в день, — признается Билл. — Когда поступил в Беркли, то посвящал этому дни и ночи. Дома у меня стоял терминал, и я не ложился до двух-трех ночи, смотрел старые фильмы и программировал. Иногда так и засыпал за клавиатурой, — он показал, как его голова падала на клавиатуру. — Когда курсор доходит до конца строки, клавиатура издает такой характерный звук: бип-бип-бип. После того как это повторится три раза, нужно идти спать. Даже в Беркли я оставался зеленым новичком. Ко второму курсу я поднялся выше среднего уровня. Именно тогда я стал писать программы, которыми пользуются до сих пор, тридцать лет спустя». Он на секунду задумывается, мысленно производя подсчеты, что у такого человека, как Билл Джой, не отнимает много времени. Мичиганский университет в 1971 году. Активное программирование ко второму курсу. Прибавьте сюда летние месяцы и дни и ночи, уделяемые этому занятию в Беркли. «Пять лет, — подводит итог Джой. — И начал я только в Мичиганском университете. Так что, наверное… десять тысяч часов? Думаю, так и есть».
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #9 : Сентябрь 08, 2013, 08:56:47 pm »
Вообще же, я бы не сказал что ВУЗ вообще, и универ (а не институт) в особенности по специальности ВМК не дает вообще ничего.

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

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

В-третьих работодатели, ну то есть мы. Мы туда (на ВМК) приходим, мы там роимся и ищем таланты. Соответственно если ты учишься на ВМК, у тебя постоянно богатый выбор куда пойти поработать, чтобы и деньгу заработать и опыта практического набраться. Кто-то работает с 3 курса (но их не много), кто-то с 4 или 5.

По совокупности, все это дает следующий эффект - моя сестра (ей 24 года) сейчас знает, умеет (в плане программирования) и имеет опыт бОльший чем имел я в 26-27 лет. Единственное в чем она, 24летняя, проигрывает тому мне, 26 летнему - это в опыте и умении собственных разработок с нуля. Но этот опыт и уменее полезно либо тимлиду, либо архитектору, либо стартаперу. Массе промышленных программистов оно нафиг не нужно (и даже вредно, или увеличивает шанс странных решений и лепления велосипедов по поводу и без).
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #10 : Сентябрь 08, 2013, 09:06:09 pm »
То есть ВМК в правильном университете (типа ННГУ Лобачевского), в правильном городе достаточного размера (хотя бы Нижний Новгород) экономит примерно 3 года.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Обучение программированию (очередной холивар)
« Ответ #11 : Сентябрь 08, 2013, 09:13:53 pm »
К сожалению наша страна гораздо больше чем Москва, Спб, Новосибирск и Нижний Новгород. Иначе получается что все за пределами - это глубинка... не стоящая внимания.
Я бы вообще выкинул МГУ и около из рассмотрения. После МГУ в рядовые программеры как-то стремно идти, имхо.  :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Обучение программированию (очередной холивар)
« Ответ #12 : Сентябрь 08, 2013, 09:18:30 pm »
Правило 10000 часов

Вот еще интересная цитата о разнице между любителем и профессионалом:
Цитировать
Затем Эриксон с коллегами сравнили профессиональных пианистов и пианистов-любителей. Была выявлена та же закономерность. Любители никогда не занимались более трех часов в неделю, поэтому к двадцати годам у них за плечами было не больше 2000 часов практики. Профессионалы, напротив, каждый год играли все больше и больше, и к двадцати годам каждый из них имел в багаже по 10 000 часов упражнений.
Читайте подробнее на Forbes.ru: http://www.forbes.ru/forbes/issue/2009-04/7255-pravilo-10000-chasov

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #13 : Сентябрь 08, 2013, 09:29:40 pm »
К сожалению наша страна гораздо больше чем Москва, Спб, Новосибирск и Нижний Новгород. Иначе получается что все за пределами - это глубинка... не стоящая внимания.
А в основном, в "глубинке" все печально не только в плане ВМК и программирования. Там и физики соответствующие выходят, и математики, и так далее. Более того, в Москве, Питере и прочих - тоже вменяемых вузов на пальцах одной руки пересчитать (а в НН пожалуй и одного-двух пальцев хватит).

Никогда не забуду, как товарищ идущий на красный диплом по специальности "динамика и прочность машин", то есть физик, не смог ответить что такое удельная теплоемкость, зачем оно нужно и как этим пользовться (не смог ответить на вопрос на сколько нагреется кусочек вот этого вещества массой M, если мы туда вкачаем вот столько-то джоулей). А ведь это школьная программа физики далеко не за 11 класс! Да, и самое смешное, что он не смог это ответить на экзамене который был про это самое, про механику сплошных сред (которая развивает все эти "школьные" понятия уже на университетском уровне), причем на экзамене можно было пользоваться всем (конспектами, учебниками - чем угодно).

Да, а красный диплом, по моему, он таки получил.

Я бы вообще выкинул МГУ и около из рассмотрения. После МГУ в рядовые программеры как-то стремно идти, имхо.  :)
Я хз что такое рядовой программер, но таки идут :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Обучение программированию (очередной холивар)
« Ответ #14 : Сентябрь 08, 2013, 09:34:04 pm »
Но вообще, про все это еще Фейнман писал (да, в США та же беда). Точнее он писал про разновидность этой беды - знания то в голове могут и быть, но вот с реальности они никак не сцеплены и применять человек их ну вообще никак не умеет. Чисто абстрактные понятия. Это часто беда краснодипломников практически любого ВУЗа.

Цитировать
Потом я был в Инженерном институте на вступительном экзамене. Экзамен был устный, и мне разрешили послушать. Один абитуриент был просто великолепен. Он отлично отвечал на все вопросы. Его спросили, что такое диамагнетизм. Он ответил совершенно правильно. Потом его спросили: «Что происходит с лучом света, когда он проходит под определенным углом через слой материала определенной толщины и с определенным показателем преломления?»

— Он выходит, сместившись параллельно самому себе, сэр.

— А на сколько он сместится?

— Я не знаю, сэр, но я могу посчитать.

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

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

— Нет.

Тогда я сказал: «Представьте себе, что эта книга стеклянная, и я смотрю сквозь нее на что-нибудь на столе. Что случится с изображением, если наклонить стекло?»

— Изображение повернется, сэр, на угол, в 2 раза превышающий угол наклона.

— А вы не путаете с зеркалом?

— Нет, сэр.

Он только что сказал на экзамене, что луч света сместится параллельно самому себе, и, следовательно, изображение сдвинется в сторону, но не будет поворачиваться ни на какой угол. Он даже вычислил, насколько изображение сдвинется, но он не понимал, что кусок стекла — это и есть материал с показателем преломления и что его вычисления имели самое непосредственное отношение к моему вопросу.
Y = λf.(λx.f (x x)) (λx.f (x x))