четвер, 23 липня 2015 р.

Чи потрібна вища освіта програмісту?

Ця публікація є реакцією на інтерв'ю із Сашею Шевчуком (http://itvdn.com/ru/channel/video/pps-good) про те, навіщо програмеру вища освіта. Саша за своєю манерою такий категоричний у тому, що вища освіта абсолютно необхідна. Я після універу уже майже 4 роки сиджу у реальних траншеях і... от нутром відчуваю, що насправді зовсім ні, не потрібна. Правда, я хотів би сказати що потрібна, і що усім слід сумлінно навчатися в університетах, отримувати гарні оцінки, тішити своїх професорів, і навіть писати круті дисертації. Але не можу, тому що сам озираючись у своє минуле, ніяк не второпаю нащо я добивався усіх своїх золотих медалей, червоних дипломів і наукових ступенів. У траншеях (ні, я не в АТО, це так називають реальну брудну програмерську роботу) ці знання майже не потрібні, а якихось вмінь наша освіта давати не може. 

ІТ - це передова галузь і у ній дуже помітні нові тенденції. А тенденція сьогодні така, що знання мають мізерну цінність. Майже нікого не цікавить що ти знаєш, тому що будь яку інформацію можна майже миттєво нагуглити. Вона лежить на поверхні. Цінністю сьогодні є уміння. Не те щоб раніше уміння не були потрібні, просто знаючі люди могли просто на своїх знаннях заробляти на життя. Кожен, хто намагався бодай раз програмером влаштуватися підтвердить, що якщо ти не маєш досвіду, тобто скіла, то хоч доктор наук - ти не цікавий, бо ти не можеш принести компанії нічого цінного. А тому тепер студенти першочерговим своїм завданням мають ставити отримання досвіду а не гарної оцінки, чисто з таких прагматичних міркувань.

Ну ок, можна заперечити, що мовляв все одно має бути фундамент спочатку. Так, згоден. Але принаймні наші університети дати його не можуть. Думаю закордонні теж. І не тому що погані чи не надто розумні. Ні. Просто наша галузь надто молода і ніхто толком не знає що є фундаментом у ній. А тому, наприклад вчать, основам програмування на С++. Це фундамент? Правда? А студент вийде і муситиме писати на JavaScript і як прототипним наслідуванням чи замиканнями він не вмітиме. Який же це тоді фундамент. Далі ООП на C#, де казатимуть що private - це інкапсуляція і це має якийсь стосунок до ООП. А на роботі - Ruby, і уся освоєна об'єктна модель - коту під хвіст.

На заняттях з проектування вчитимуть UML до запаморочення в усіх деталях. Хоча до проектування він має стільки ж стосунку скільки будь яка інша мова програмування, просто UML - графічна мова от і все. А на робочому місці - студент не знайде UML. А якщо і знайде - то неправильний і усі його знання - коту під хвіст. А ще вчитимуть патерни, більшість з яких просто хакають систему типів статично типізованих мов, а частина їх уже вбудовані в самі мови програмування і платформи (С# events - observer, lambda expressions - strategy).
Інші предмети і згадувати страшно, знання їх взагалі ніяк не допоможе ні в чому (фізика, 90% дискретки і вишки, соціологія, релігія, філософія, археологія...).

Гаразд, є фундаментальні теми, Саша їх згадує. Кінцеві автомати. граматики, графи, дерева. Але ці усі теми потрібні виключно для розробників мов програмування і операційних систем. Багато з нас цим займаються? Ті хто хотять, або відчувають у цьому потребу на проекті - йдемо на Coursera і проходимо курси з компіляторів, структур даних і алгоритмів. Я проходив. Пререквізити - шкільна освіта. Це абсолютно все що потрібно в найекзотичніших проектах.

На мою думку за відсутності фундаментальних знань в сфері інженерії програм (не комп'ютерні науки! це як електроніка і фізика) в університетах майже нічого навчитися не можна крім комп'ютерних наук, які програмному інженеру тільки інколи трохи релевантні. А тому навчання там - марнування часу. Фундамент можна отримати тільки шляхом узагальнення практичних знань після того як побачив десятки мов програмування, парадигм, платформ і фреймворків. Онлайн курси дадуть необхідну стартову базу.


John Sonmez (http://simpleprogrammer.com/) рекомендує починати кожному свій бізнес, робити продукт і отримувати в процесі досвід. Так, студент скоріш за все того продукту не продасть, і доходу не матиме, але так само студент не матиме доходу від вищої освіти. Але від цього маленького софтверного бізнесу буде досвід і запис в резюме, що так необхідні для отримання першої роботи. 

P.S. Дорогий читачу, якщо ти студент, це не означає що слід негайно покинути університет. У кожного свій шлях. Я, наприклад, коли навчався більшість часу займався веб програмування а на навчання так би мовити "підзабивав". Все ця "корочка"... І все ж таки аналоги універських курсів по спеціальності варто пройти на Coursera. Хоча б тому що це страшенно цікаво. ))

Немає коментарів:

Дописати коментар