Category: Образование

Хороший институт не даёт хорошего образования

Где лучше учат, в Стенфорде или в академии ШАГ а может и вовсе на дешёвых курсах?

Не имеет никакой роли. Вот прям совсем. Как бы тебе не разжёвывали, тебе всё равно придётся самому это «проглотить». Чему бы тебя не учили — почти невозможно придумать идеальную программу которая подходит всем. Как бы хорошо ты не запомнил — ты всё равно забудешь без практики.
Невозможно сказать что факультет плохой или хороший. Может быть хороший преподаватель — но его «хорошовизна» может определятся только его способностью определить что нужно студенту и подогнать обучающую программу под него. Это то что называется «объясняет».
Более того, может быть реально прекрасный преподаватель, но его стиль обучения не совпадает со стилем обучения студента.
Давайте я объясню подробнее что я имею в виду. Например у меня стиль обучения такой: я не читаю никаких книжек и вообще ничего. Я тупо «интуитивно» пытаюсь угадать как должно быть и пытаюсь это сделать.
Я делал довольно сложные программы, и при этом неплохо написанные и удачно декомпозированные при этом вообще не понимая ООП. Более того, у меня даже книжки не было по Делфи.
Но со временем у меня вдруг включается другой режим — и я вдруг вчитываюсь в матчасть и подробно её изучая. При этом когда читаю документацию я её как бы сканирую и пытаюсь найти «потаённые» штуки которые могут мне пригодится.
Я пытаюсь первым делом понять как и для чего использовать эти знания, а потом уже изучаю их глубже только ради того чтобы узнать как можно ещё лучше их использовать. Сами по себе мне эти знания не очень-то интересны.
Т.е. мой стиль обучения мне помогает в моей работе программиста — я так быстро осваиваю технологии и перехожу с одной на другую. Но мне бывает очень тяжело изучить что-то в деталях.
И я прям совсем не могу быть, что называется, учёным. Мой мозг бунтует и отказывается принимать знания если я не понял как конкретно их применять. И я бы никогда бы не смог заниматься наукой ради науки. Люди вроде Буля, который придумал дискретную алгебру, для меня какие-то прям супергерои — они придумали что-то, что нашло применение только столетия спустя.
Теперь смотри, я такой студент, я мотивирован, я что-то там может даже соображаю. Но мой преподаватель даёт информацию подробно разжёвывая с объяснением. Например мы проходим побитовые операции. Мне они не интересны, но мне подробно и очень хорошо рассказывают все эти нюансы. Я начинаю скучать и тупо вырубаюсь на лекции.
С формальной точки зрения — я получил отличное образование. С практической полный ноль.
Я был бы неуспевающим и меня бы отчислили.
Я не очень ковырял эту тему но видел какие-то более менее вменяемые объяснения что такое Стиль обучения в соционике и на Википедии.
В действительности я насколько понимаю эта область граничит с нейробиологией, психологией и педагогикой и довольно слабо изучено.
Поэтому нужно просто признать — сегодня наверное никто не знает как правильно учиться и учить.
Это настолько индивидуально и требует длительного наблюдения что с этим смогут справляться только когда технологии Big Data помогут проанализировать и делать какие-то статистически подтверждённые утверждения как эффективно учить.
А теперь умножьте это на компьютерные науки которые сегодня являются во многом синтетическими а не природными, а значит могут сильно меняться и отличаться. И во много являются «алхимией», «шаманством» или «искусством», т.е. мы признаём что тупо не знаем как оно работает и должно проектироваться.

Как определить что вы учите примерно правильно и примерно оптимально, по крайней мере для определённой категории людей? Очень просто — если вам платят значит вы в правильном направлении. Если вам платят значит ваши студенты всё таки имеют больше шансов на устройство. Если они устраиваются значит они могут справляться с работой.
Рынок, рынок всё решает.

По мотивам обсуждения на форуме Стремительный рост КА ШАГ

Как быстро можно стать Java Junior?

Максим Педич поделился опытом: для того чтобы изучить Джаву с нуля нужно пол года активного вкалывания.

Макс Криворучко дополнил

Чтобы стать программистом (читай освоить Java core) нужно пол года. Чтобы стать интересным для компаний программистом нужно знать кроме Java Core как минимум еще и тулы (maven/gradle, svn/git), jdbc, Servlet API, Spring (IoC). Было бы хорошо знать еще и html, sql, xml на базовом уровне.

В случае знания Java Core светить может интернатура,

во втотом случае — могут взять джуном.

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

чтобы стать джуном нужно год-полтора


Не поленитесь, и почитайте ещё несколько очень важных моих статей для начинающих программистов, студентов и джуниоров.
Также не забудьте вступить в группу IT Juniors куда я пытаюсь собирать ссылки на другие полезные статьи для вас и анонсы курсов и интернатуры в компаниях.

Частые вопросы Java Juniors

Ко мне в последнее время было много вопросов от Джава Джуниоров, запишу по памяти что отвечал:

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

У меня нет, а если бы и были то не дал. Это не честно, это всё равно что на экзамен прийти зная что за билеты.
Каждая компания старается задавать свои вопросы чтобы лучше узнать уровень соискателя. Они их придумывают, они не хотят чтобы эти вопросы другие знали, это их авторские права в конце концов.
Эта информация практически с грифом для служебного пользователя и не распространяется. Точно также как не распространяется информация о том какие грейды разработчиков (уровни Мидл, Синьёр) потому что в каждой компании разный уровень и по этой информации можно определить насколько в целом уровень профессионализма в ней.

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

Есть часть вопросов которые практически стандартные, и их легко найти в интернете.
Например: «Чем отличается абстрактный класс от интерфейса?»
И даже если вы ответите на этот вопрос, то его можно немного перефразировать или усложнить.
Например на вопрос «Чем List отличается от Set?» можно задать следующий вопрос «А почему Set не наследуется от List если он по сути похож, разве что не позволяет сохранять дубликаты?».
Ответ уже на этот вопрос потребует от вас именно полного понимания темы.

Так что заучивать стандартные вопросы можно и нужно, но опытного интервьюера этим вы не обойдёте.

Большинство вопросов идут из сертификации OCJP их легко найти и есть книги для подготовки по теме.

Так что вопросы с реальных собеседований не выпрашивайте, это преступление и они всё равно вам особо не помогут.

А пример проектика?

Опять таки, нельзя. Вам вышлют тестовое задание или вы можете в резюме указать ссылку на свой проект с исходниками. Если интервьюеру будет интересно он сам зайдёт посмотрит какой код вы пишите, оценит уровень и будет спрашивать уже более предметно.

Как правило, если это вакансия для веб разработчика, вас попросят написать простое CRUD приложение, например TODO лист с использованием БД.

а сколько по времени должно примерно уходить на его выполнение?

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

Тут ещё такой момент: бывает что на тестовом задании ты где-то застрял. Например у тебя исключение какое-то и ты не можешь двигаться дальше. Т.е. ты в приницпе понимаешь как это сделать но вот конкретно в этом случае застрял. В таком случае абсолютно нормально спросить помощи у знакомого программиста\ментора.
Ещё это вполне нормально когда ты уже готовое тестовое задание покажешь ментору чтобы он проверил перед отправкой заказчику. Ты его уже написал, так что если кто-то тебе найдёт ошибку или подскажет как лучше и объяснит то от этого ты только умнее станешь а твой необходимый уровень знаний ты итак покажешь.
Это примерно как с курсовым проектом в университете — тебе может и помогли, но рассказывать всё равно придётся тебе самому. Но с курсачём тебе его главное сдать, а тут от твоих знаний будет зависеть реально чья то жизнь и бизнес.

Что учить?

Только то что востребовано на рынке и за что больше платят. Например, может Ruby on Rails или какой нибудь Python и кажутся вам самыми модными, но вакансий намного меньше чем на Java или PHP. А из Java и PHP больше платят за Java. Следовательно её и нужно учить (по крайней мере сегодня).

Походите по сайтам работы, посмотрите вакансии, почитайте в Википедии что за технологии там описаны. Зайдите на сайт indeed.com и посмотрите какие там тренды.

Что сегодня на рынке востребовано я точно не скажу. Что будет востребовано в будущем вообще никто точно сказать не может. Может новую версию PHP доведут до ума, а может все вообще перейдут на MPS.
Всё меняется, елси раньше Хибернет был «маст хэв» то сегодня уже, насколько я могу судить, работодатели уже интересуются знанием NoSQL баз данных, в частности MongoDB. А Hibernate им уже может быть не принципиально.

На сегодняшний день в принципе ещё актуальная моя старая статья. Её может и стоит переписать или дополнить, но в целом там описывается подход по которому вы сможете немного сориентироваться на рынке, а он не меняется.

1) Какими веб технологиями должен обладать хороший программист на Java? Sping, JDBC, Hibernate? Что еще? Есть ли смысл читать книги по этим технологиям или хватает спецификации / туториалов?

Точно нужно вникнуть в базовые технологии. Если с БД то в Java вы не опуститесь ниже JDBC, если делайте веб то ниже уровня JSP и Servlets вы не уйдёте. Поэтому с ними нужно точно разобраться. Поэтому может быть лучше вместо знаний Hibernate и Spring вникнуть в базовые JDBC и Servlets.
Скорее всего вас будут их спрашивать. Но тем не менее Хайбернейт и Спринг нужно тоже как минимум потрогать чтобы знать что это и куда его пихать.
Есть ли смысл читать книги — да. В книгах обычно пишут почему спроектированно именно так, т.е. передают некую инженерную мудрость которая намного ценнее чем даже знание самой технологии. Вы можете прочесть книгу по Спрингу и применить знания если вы нашли работу в ASP.NET где те же самые контроллеры.
Поэтому одна из самых важных книг по Джаве так и называется — Философия Java.

Туториалы нужны для того чтобы быстро и пошагово развернуть у себя проект с их использованием и чтобы вы могли сами прощупать как это делается. Это тоже важно — это мышечная память, без этого знания не зафиксируются в голове.
Вот недавно был выпуск подкаста Разбор полётов где как раз гуру давали рекомендации. И смысл такой: знаний Спринга у тебя может и не быть, это нормально для джуна, даже было бы удивительно если бы они были.
Но фундаментальные знания которые написаны в книгах у тебя должны быть, потому что интервьюверы хотят прежде всего понять насколько ты вообще обучаемый.
Если ты не смог прочесть и понять книжку, то как же ты будешь разбираться с кодом на работе?
Некий мифический параметр «Обучаемость» это то что они хотят вычислить прежде всего. Но это практически только интуитивно можно определить.
Есть и другие параметры, например знание конкретной технологии. Например работа на которую тебя рассматривают требуют чтобы ты занимался больше фронтендом и нужно там разобраться с CSS3 и HTML5. Может даже быть что в той команде никто их не знает толком и ты как джун там будешь их же обучать.
Я знаю такой реальный случай, там даже было неловко тимлиду который собеседовал джуна потому что он не знал что спрашивать по CSS3 (как там анимации делать, например), потому что он сам не знал, но на проект такой человек был нужен.
Ты может даже не очень обучаем и тебе сложнее въезжать в тему, но зато ты очень прилежный и исполнительный. И тебя могут взять вместо другого более «обучаемого» и опытного джуна. Или ты может просто прикольный весельчак и тебя возьмут разбавить команду нердов. Знаю случай когда девочку взяли в команду из девяти пацанов чтобы они хоть бриться начали 🙂

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

2) Посоветуйте литературу по архитектуре / паттернам. По паттернам читал книгу headfirst, но она, видимо, не очень глубоко описывает все. Есть ли альтернатива банде четырех не с кодом на С++?

Тут сразу нужно разделить два понятия: ты либо имеешь опыт программирования на других языках, например ПХП, а теперь учишь Джаву либо ты вообще студент и толкового опыта программирования у тебя нет.
В первом случае, тебе лучше взять книгу по языку программирования который ты лучше знаешь, просто ищешь по запросу, например «Шаблоны проектирования в PHP». И вникаешь на одном языке.
Паттерны практически не зависимы от языка программирования, поэтому главное понять их суть, а там уже на Джаве напишешь и сам. Но опять таки, половина шаблонов проектирования нафиг не не нужны в функциональных языках программирования где всё делается простой кложурой
Functional programming patterns

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

Опять таки, для базовых ООП языков C++, Java, C# и даже PHP реализации шаблонов будут одинаковы. Но в отличии от PHP в Java все вообще представлено объектами и в ней без шаблонов не выжить.

Изначально само понятие «паттерны проектирования» и их классификацию ввели GoF в своей книге. Соответственно те шаблоны которые они в ней описали называют «паттерны по Гофу».
Просто потом всем так понравилось понятие паттернов что каждый поупражнялся в интеллекте и напридумали ещё потом тысячу других паттернов и даже антипаттернов.
Но больше ничем примечательным их книга не отличается — ни доступностью материала, ни даже полнотой. Именно поэтому есть более поздние книги где лучше разжёвано с большим числом примеров и с конкретными особенностями платформы.
Иногда может хватить статьи на Хабре, благо их валом.
Лично мне ещё было проще: мне мой ментор сказал «ну вот помнишь как Xml парсер ты создаёшь? Ну вот, это абстрактная фабрика» или «ну вот тебе нужно получить неизменяемый List, для этого есть метод Collections.unmodifableList(myList) который вернёт тебе декоратор myList с скопироваными элементами который на самом деле будет подклассом UnmodifableArrayList с заглушками на методы add() и remove(). Но это от тебя скрыто за методом unmodifableList() и тебя вообщем и не интересует какой там класс реально будет.».
И всё стало сразу мне понятно: «Тю, так я эти шаблоны постоянно использовал! Просто не знал что у них есть названия».
Вот в том и смысл: шаблоны, точно также как и рефакторинги — это классификация для программистов чтобы им было проще общаться между собой: «Слушай, а давай здесь выделим интерфейс и сделаем фабрику?».
Поэтому вся ценность паттернов — это то знают ли их. А все остальные шаблоны можно смело выкидывать потому что пользы от них нет. Это обычные структурные конструкции которых может быть безграничное количество и смысла им давать свои имена нет.
Поэтому когда говорим паттерн — подразумеваем паттерны ГоФ, и то только ту часть что используем.

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

Поэтому отнеситесь к книге Head First как к комиксу «как сделать коронарное шунтирование сердца».

А вот что намного важнее понять, это когда именно нужно применять и какой именно шаблон. К этому можно только прийти постепенно изменяя код с помощью рефакторинга.
И соответственно самые лучшие книжки про шаблоны проектирования — это книжки не про паттерны, а про рефакторинг.
Я уже повторял неоднократно и не постесняюсь ещё раз повторить, что лучшая книга для того чтобы разобраться как лучше проектировать архитектуру, писать код, писать тесты, и сопровождать его, это бестселлер Матрина Фаулера «Рефакторинг — улучшение существующего кода».
Рефаткоринг

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

Для чуть опытных программистов есть более продвинутая книга Джошуа Кириевски которая так и называется Refactoring to Patterns. Я её сам правда как-то так и не прочёл, но все знакомые кто читал были в восторге.

А вообще я не понимаю почему джуны так сильно зацикливаются на паттернах. И зачем их спрашивают на интервью. Когда я искал себе работу и меня спрашивали по шаблонам то вопрос звучал примерно так «расскажи хоть какой нибудь шаблон». И я просто заучил их и по очереди называл их названия всех 23х шаблонов. И каждый раз интервьюеры офигевали «ого, это их столько? А можешь хоть один объяснить». И я рассказывал про один из трёх которые я реально понял. Интервьюер как правило знал столько же.

Я так понимаю что это связано с тем что вокруг шаблонов некий ореол «проектирования» которое якобы их делает чем то таким научным и теоретическим. Как будто их знание делает тебя умнее тех быдлокодеров унтерменшей.

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

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

3) Как вы относитесь к различным онлайн курсам типа: курсера. юдасити. У меня начинает складываться впечатление, что там знания дают довольно поверхностные и много воды. Что Вы используете в большей степени при самообучении? Возможно посоветуете ресурсы?

У меня тоже впечатление, но это впечатление. Тут довольно сложная и большая тема возникает о самом формате обучения, у меня по этому поводу очень много мыслей но не все ещё сформулировал для себя. Если в двух словах то примерно такие мысли:
* Курсера — это всё таки курсы солидных унверситетов, это уже вызывает доверие. Это годами отработанные обучающие материалы, и они там не зря. Зарплаты преподавателей огромны, и это люди как правило имеющие отношение к реальной индустрии.
* Качество курсов от чуть ниже нормального до хорошего. Отлично сделать практически невозможно, всегда будет какая-то вода, всегда будут недостаточно хорошие примеры. Всегда может быть по теме более интересная книга или туториал на ютубе, всегда можно найти чувака который лучше расскажет, но на курсе всегда будет некая усреднённая доведённая до занудства «академичная» информация.
* Что ещё важно там есть вопросы для самопроверки и определённая сертификация. Это очень важно, а просто книга такого не даст.

Всё. Больше никаких особо преимуществ нет и быть не может. На курсере невозможно получить практическую пользу и интерес большую чем от реального проекта или видео на ютубе.
Это всё равно что сравнивать статью в Википедии и статью на Хабре.
Но если взять статью на хабре и дописать к ней то что в ней опустили, и убрать то что может меняться со временем, попытаться вывести из материала какие-то общие законы и убрать субъективный и упрощённый научно-популярный стиль, то получится та же статья с Википедии.
Например, вот одна из самых первых статьей про Юнит тестирование за 2008й год к тому моменту это уже докатилось до нас и было отхоливорено со всех сторон и эта статья была подведением черты.
А вот какая статья в Википедии на сегодня.
А вот все курсы на Курсере где тебя обучат рефакторингу.

Например я бы мог в сто раз лучше базы данных чем на курсере, но я бы два года составлял курс прорабатывая материал, отбирая что важно что не важно, прийдя к выводу что всё важно, тестируя эффективность на студентах и он бы у меня разросся в пять раз больше и я бы стал его сокращать а на выходе получилось бы почти тоже самое что сейчас на курсе Introduction to Databases.

Нужно чётко осознать важный закон: кто не знает, но умеет — делает, кто знает, но не умеет — учит, кто не знает и не умеет — руководит.

Почти все учёные и преподаватели в вузах себя считают теоретиками и почти вся их суть в этом видео

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

Но где же найти тех кто реально шарит, и рассказать может хорошо и правильно, и самый свежий опыт?
Собственно мы программисты постоянно и много обучаемся, поэтому уже всё сформировали для себя:
* Блоги, правки в документации, меил листы, форумы, StackOverflow, скринкасты, туториалы, и напрямую чтение спецификаций. Написать более менее толковую развёрнутую статью занимает ну просто дофигища времени, сколько точно не знаю, зависит, но четыре часа минимум. А теперь представь что ты синьйор с загруженным графиком, у тебя семья, как ты выдыхаешься и при этом найти время и силы написать статью. А потом ещё переругаться с тролями в каментах.
* Конференции с докладами по часу-два с презентацией или мастер классом с живым кодированием. На подготовку одного часового доклада может уйти почти столько же времени как на статью, но, статью нужно писать и это напрягает, а презентацию к докладу накидывать как-то намного приятнее и там рассказывать можно голосом по ходу подстраиваясь под публику.
* Книги, программисты читают много их.

Итак, наиболее эффективными и ценными являются именно конференции с докладами. Там можно получить самый свежий опыт, и даже зачастую от самих создателей технологии.
Там же разворачиваются самые интересные дискуссии.
Но проблема в том, что как правило новичкам это совсем не подходит, это наиболее ценно для мидлов.
Рассказывать какие-то основы для джунов им не интересно. Это всё равно что если Шекспира попросить стать учителем английского. Да он сам создавал этот английский.

Так что пока вы джуны и вы учитесь, вам просто придётся всё время искать самим хорошую информацию по кускам и смирится что та полная что есть «академическая» скучная и с множеством воды. И постоянно искать себе менторов и спрашивать у них что нужно именно на практике. На примере шаблонов я это показал. Ваша задача — как можно быстрее устроится на работу, а там уже будет точно видно что нужно а что нет.

По своему опыту могу сказать что все «фундаментальные» знания в вузах рассказывают именно технари по конкретным инженерным специальностям.
Можно долго вкуривать воду из курса про Булеву алгебру, а можно прийти на курс по созданию ПЛИС и там тебе на пальцах в двух словах объяснят быстро самое нужное и даже научат за один слайд как вычислять дифференциалы от булевых функций и что это нужно для того чтобы по ним определять нужна ли эта микросхема вообще на плате, если изменения на её входах никак не влияют на её вывод.
Точно также основы статистики тебе в двух словах тебе объяснять на курсе по криптографии. Т.е. лучше всего учить всё в конкретном применении.

Я сам почти не проходил никаких курсов на Курсере (где же взять 8 недель на это?), но из того что видел считаю самым полезным и вменяемым курс основам вычтехники The Hardware/Software Interface. Тут вам расскажут как работает булева алгебра, как устроен компьютер, как считаются и складываются числа внутри, что такое указатели, освоите основы Си и перейдёте к высокоуровневым языкам. При этом это полноценный курс с множеством классных заданий.
Это очень и очень правильный курс который закрывает огромный пробел знаний и почти полностью имеет практическую пользу. Всё остальное что на курсере по компьютерам, имхо можно выкинуть нафиг. Разве что по алгоритмам может адекватный курс, но не смотрел.

4) Хочу начать делать какой-то пет проект, но не очень представляю с чего приступить.

блядь, просто начни

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

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

Могу дополнить только что у вас должна быть личная мотивация и интерес сделать проект. А такое может быть только если вы делаете программу для себя.
Например мой знакомый когда учил английский сделал себе программу под 1С с тестом слов. Потом когда он учил Джаву он себе написал фотовьювер как ему нравился.
Напиши любую программу например свой броузер. Джаст фор фан, пофигу что такое уже есть. А вдруг в твоей программе будет (или не будет) такой функционал который кому-то нужен. Твоя программа может найти своего пользователя и вырасти в полноценный продукт, как это было например с операционной системой Linux которую написал школьник а теперь используется многомиллиардными корпорациями.

Тут я могу ещё посоветовать не зацикливаться на технологиях. Просто некоторые начинают: о блин, мне тут нужно всё делать со Спрингом и Хибернейтом потому что их требуют при устройстве на работу. Забей. Сделай просто для себя программу на чём сможешь. Опять таки, парень который написал себе фотовьювер потом прошёл туториал по спрингу и нашёл себе работу.

Очень часто ещё часто советуют поконтрибьютить в опенсорс. Из моего опыта — идея никакая.
В опен сорс проектах человек который его ведёт всё таки должен разбираться в коде который ему присылают, и все хотят как правило чтобы контрибьютили уже опытные разработчики.
Так что например законтрибьютить в Друпал тебе никто не даст, потому что ты скорее всего напишешь никому не нужную плохо написанную фигню.
Примитивной работы, где много чего-то которое нужно однотипно переписать, на опен сорсе практически мало, потому что хорошие программисты потому и хорошие что пытаются писать код без дублирования.
Можно чисто теоретически найти проект где ребята вашего уровня пишут, но тогда чему вы там научитесь? Хотя если интересы совпадают — делайте.

Но.
Есть очень много софта который поддерживает плагины. И вот тут получается ситуация что ты делаешь свой проект в рамках другого, т.е. разбираешься с их кодом и у тебя есть примеры других плагинов, но при этом то что ты напишешь это твой отдельный проект.
Это такой симбиоз и очень классно работает на практике. Более того, у меня в университете один более менее вменяемый препод прямо так и давал задание написать плагин в Тотал Командеру.
Я например так когда-то написал плагин для Pidgin где мне пришлось изучить Си, программирование под Линукс и много ещё чего.

Ещё советуют брать заказы на фрилансе, но это тоже бред. Никто вам ничего нормального не доверит.

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

Что реально ещё работает: у Гугла есть программа Summer of Code и в её рамках можно поконрибьютить в опенсорс проекте под присмотром менторов. Опенсорс проекты готовят задачи для студентов и вместе их фигачат.
Вот например есть интересная программа для чата и онлайн звонков Jitsi и её страница с идеями для GSoC.
Задачи довольно интересные и в меру сложные.

5) Посоветуйте проекты с открытым кодом на Java, чтобы посмотреть как строиться архитектура и тд.

Опять таки, берите проект с плагинами и пишите свой плагин. А так, я не знаю что посоветовать, но есть например книга The Architecture of Open Source Applications и в ней же есть и описание тай же Jisti.
Вот посмотри исходники проектов из этой книги.

6) Как вы совмещаете изучение теории и практики? Предпочитаете читать только то, что в данный момент необходимо или же изучаете наперед?

Сначала немного наперёд, точнее обзорно по сторонам, потом углубляюсь. В принципе сейчас я знаю что есть что кругом и теперь точно знаю что мне именно нужно. Так что моя теория теперь почти полностью совпадает с практикой.

P.S. Статью написал под эту песню


Не поленитесь, и почитайте ещё несколько очень важных моих статей для начинающих программистов, студентов и джуниоров.
Также не забудьте вступить в группу IT Juniors куда я пытаюсь собирать ссылки на другие полезные статьи для вас и анонсы курсов и интернатуры в компаниях.

[Linkset] Сугата Митра: Учителя — не нужны. А нужны просто добрые бабушки

Это линк сет про учёного который исследует новые возможности обучения.

Главный вывод всех его исследований:

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

Sugata Mitra at Wikipedia

Сугата Митра: «Дыра в стене» на peoples.ru

Используя результаты проведенного им эксперимента «Дыра в стене», профессор образовательных технологий Сугата Митра доходчиво объясняет основные ошибки, допускаемые при попытках улучшить системы начального образования как в Индии, так и по всему миру.

Сугата Митра рассказывает, как дети обучают самих себя

Индийский ученый и просветитель, Сугата Митра, берётся разрешить одну из величайших проблем образования: дело в том, что лучшие учителя и школы не всегда находятся там, где они больше всего нужны. В ходе серии практических экспериментов, прокатившейся от Дели до Южной Африки и Италии, Сугата Митра давал детям возможность самостоятельно работать в Интернете. Полученные результаты превзошли все ожидания и могут перевернуть наши представления о педагогике: дети самостоятельно добывали себе знания и осваивали очень непростые курсы.

Сугата Митра: Построим «Школу в Облаках»

Выступая на TED2013, Сугата Митра рассказывает о своём смелом желании при получении премии TED Prize: Помогите мне создать «Школу в облаках», лабораторию в Индии, где дети смогут проводить исследования и обучаться друг у друга, используя ресурсы из «облаков». Слушайте о его вдохновляющей идее Самоорганизующихся Учебных Пространств (СОУП).

Технологии образования — блог Интела на Хабре

Презентация «Самоупорядочивающиеся процессы в образовании»

Подкаст «Философия программирования» с фритоником о важности высшего образования для программиста

Первый выпуск дочернего подкаста Хекслета. В данном подкасте будем поднимать темы, которые являются очень важными для инженера (возможно самыми важными), но в то же время на прямую не влияют на работу. О чем это мы? Об этом и попробуем поведать в первом выпуске, а если подробнее то вот наши темы:

  • о чем подкаст и кто его ведущие;
  • важность высшего образования для программиста и откуда появилось мнение, что “высшее образование программисту не нежуно”;
  • типы программистов (различие между инженером и кодером) и три уровня работы инженера: обобщенный, прикладной и маргинальный;
  • что значит для инженера выполненная работа(в контексте программирования)? О значимости тестирования.

Прослушать

 

 

Используй на практике или не учи вовсе

Продолжаю серию статей про образование.
Я уже упоминал, что в начале этого года я попробовал себя в роли тренера на курсах Java интенсива у Виктора Кучина.
Одним из важных моментов является что в скайпе по прежнему существует чат где мы продолжаем общатся не смотря на то что уже пол года как закончились курсы.
И уже на двух ребят которым я помогал повторилась почти одинаковая ситуация: они всё забыли.
Вот реально почти всё. Тогда они научились делать контроллеры и мапинги на хиберней, но прошло пол года и они не могут уже вспомнить как открывать поток чтобы файл записать.
Память человека работает таким образом что то что не повторяется — стирается. Это очень важный аспект. На самом деле есть ещё процедурная память, которая лучше сохраняется, но не очень помогла эт им ребятам.
Тут нужно чётко понимать что есть Кривая забывания
Кривая забывания
Интересным моментом в ней является то, что если вы повторите урок пять раз то помнить вы будете уже чуть ли не десятилетия!
Также у памяти есть другие интересные законы:
Закон интереса Интересное запоминается легче.
Закон осмысления Чем глубже осознать запоминаемую информацию, тем лучше она запомнится.
Закон установки Если человек сам себе дал установку запомнить информацию, то запоминание произойдёт легче.
Закон действия Информация, участвующая в деятельности (т.е. если происходит применение знаний на практике) запоминается лучше.
Закон контекста При ассоциативном связывании информации с уже знакомыми понятиями новое усваивается лучше.
Закон торможения При изучении похожих понятий наблюдается эффект «перекрытия» старой информации новой.
Закон оптимальной длины ряда Длина запоминаемого ряда для лучшего запоминания не должна намного превышать объём кратковременной памяти.
Закон края Лучше всего запоминается информация, представленная в начале и в конце.
Закон повторения Лучше всего запоминается информация, которую повторили несколько раз.
Закон незавершённости Лучше всего запоминаются незавершённые действия, задачи, недосказанные фразы и т.д.

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

Не бойтесь сжигать университеты!

Гори, гориииии, Моя Москва....

Цикл моих статей про образование вызвал много критики и возражений в онлайне. И зачастую очень здравой и конструктивной. Я поневоле даже засомневался в своих суждениях 🙂 Но потом глянул на проблему снова и только больше убедился что только такие меры нужны нам.

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

Первый комментарий к статье где я утверждаю что можно обойтись без самих зданий университетов:

Блин, опять все очень поверхностно. Есть куча служебных помещений, компьютерные классы, спецаудитории, физкультурный зал и площадки. На моем факультете учится одновременно больше 300 человек на одном курсе. За 6 курсов параллельно имеем почти 2000 человек. Куда их всех деть??? Снимать помещения? В разных частях города? Это смешно!

По поводу онлайн обучения – у нас даже технологически страна не готова к этому. Не все так хорошо с провайдерами интернета в некоторых городах, а речь даже не идет о технике для проведения профессионально лекций. Или ты думаешь покатит просто в дешевый микрофон за $10 вещать с перебоями? Для лекций на тысячи человек нужно профессиональное ПО, которое тоже стоит денег. А при таком формате некоторые родители не согласятся платить за образование (мол ребенок видео просто смотрит, за что платить). Так что не все так просто…

К сожалению да, у меня получается очень поверхностно, хотя я бы заметил что для статьи-заметки в блоге я пытаюсь всё таки раскрывать довольно глубоко. Но главные тезисы очень простые и я повторял во всех статьях. Всё остальное — это моя попытка представить к чему мы придём. То что мы, сами того не зная, идём к такой форме обучения это очевидно.
Проблема в том как быстро это случится. Всё о чём я говорю уже в той или иной степени есть сейчас. Как и электрические автомобили были ещё век назад но только сейчас они становятся массовыми.
Остальной текст в статьях — это, пускай и унылая, но попытка развенчивать мифы о текущей системе образования. И вполне нормально что не сразу у меня получается это делать.

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

Есть куча служебных помещений, компьютерные классы, спецаудитории, физкультурный зал и площадки.

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

2000 человек. Куда их всех деть?

2000 студентов это много, я бы даже сказал запредельно много. Это сразу наводит на вопрос: как много из них собирается работать по специальности или потом устроится? А сколько из них окажутся за лотками на рынке?
Не секрет что очень много студентов-бездельников которые всё равно как-то тянут учёбу и кстати из-за них такое массовое взяточничество.

А ещё очень многие студенты поняли что ошиблись с выбором специальности, но чтобы не расстраивать родителей продолжают тратить лучшие драгоценные годы своей молодости.

Если отчислить лишних людей то 2000 студентов может очень и очень растаять. Может до 1500, а может и до 200, это смотря какой универ. Если столичный — то может остаться и все 2000, потому что туда приехали в основном не бездельники, или по крайней мере не дураки.
Именно в таком, насколько я знаю, ты и учился, поэтому тебе он показался очень полезным.

Более того, если построить процесс так чтобы по максимуму выжимать возможности онлайн, то ещё большая часть студентов смогут получать образование в своих городах а не отрываться и ехать в столицу. И несколько раз в год сами преподаватели приедут к ним.
Тебе ведь не западло колесить по Украине с тренингами? Особенно если за это ещё и хорошо платят.

С другой стороны, когда высшее образование станет более доступным и не требующим таких больших жертв, то студентов станет даже ёщё больше.

Вот я бы сейчас пошёл бы на курс по русскому языку. Мне надоело что во время беседы все начинают приставать к моим ошибкам, а не говорить по делу.
Я конечно плевал на них всех, но это уже просто надоело и всё больше людей с которыми я общаюсь требовательны к этому. Я готов пойти на уступки, и потратить часть своей жизни на изучение неинтересного и глупого языка. Просто потому что сейчас мне это больше сэкономит времени и нервов. Вот например месяц назад прочёл правило тся/ться, но всё равно зависаю на некоторых неочевидных случаях.
Теперь могу ли я прийти в универ чтобы прослушать ровно один курс? А было бы здорово.
Точно также я когда учил английский в универе, то хоть и сильно старался учить, но когда устроился работать в реальным кастомером то из университетских знаний у меня осталось только знание чем «I have to» отличается от «I must».
И сейчас, бы мне английская грамматика зашла бы в разы легче и не забылась бы. Но опять таки в универ я не могу вернутся.
И тут спасают отдельные коммерческие курсы. И у меня есть выбор их, чего нет в университете. И я себе задал вопрос: «Зачем мне такой универ, если почти всё чему меня учили забылось?».

Вот об этом я и говорю: проблема в самом формате и в том что его нужно просто облегчить и сделать более доступным и гибким. Для этого нужно отказаться от догмы и понятия «высшего» образования. Нету высшего, есть то образование что полезно и кормит тебя, остальное — лишнее. Поэтому старые догмы родителей калечат жизнь своим детям.
«Ребенок видео просто смотрит, за что платить» — вот такого не должно быть. В идеале он сам, а не родители должны платить за обучение.
Если курс короткий и недорогой то это реально. Ну или можно пойти взять кредит в банке. Главное чётко ощущать что деньги платишь именно ТЫ и тебе потом нужно будет их вернуть.

Так что не бойтесь — всё будет OK. Местами станет лучше, местами хуже но главное будет регулироваться и приспосабливаться самостоятельно.

Но нужно поддать панка в эти старпёники

Единственная польза оффлайн вузов — это теоретически эффективный нетворкинг

Ещё один аргумент который приводят в защиту вузов это нетворкинг, т.е. связи.
Это так, это работает. Особенно хорошо это работает на заочном обучении: в твоей группе полюбому окажется несколько людей которые где-то по специальности работают. А может даже окажется начальник. И он увидит что ты толковый и пригласит к себе работать.
В моей группе был Сергей Ладыга — руководитель отдела разработки предприятия Резонанс.
Сергей был самоучкой и настоящим Инженером. Он очень круто разбирался прямо вот во всём: и в электронике и в тонкостях C++.
Он прекрасно знал всё из высшей математики и ТАУ что было связано с электроникой.
Всё это он выучил сам. Насколько я понял, он пошёл учится чтобы подстраховаться к пенсии — если что пойти в вуз преподавать. По крайней мере он закончил с рекомендацией для аспирантуры.
Так вот Серёга забрал к себе в отдел двоих одногруппников.
Я и сам получил первую айтишную работу по рекомендации одногруппника.

Вообщем я не буду врать — это работает. Тогда почему я всё таки даже этот жирный такой факт отрицаю как ценность вузов?

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

А если вам ещё как и мне посчастливится побывать на тренинге Ваче Давтяна про нетворкинг, то связи для вас вообще не будет проблемой.
Жаль, что нашёл только кусочек видео:

Вообщем связи в современном мире уже не проблема. Даже с людьми из высшего общества относительно легко устанавливать связи — если им выгодно они готовы идти на контакт.

Но если бы только связи… Есть ещё один вааажный момент: находится среди людей с другим менталитетом.
Я очень чётко ощущал разницу между дневниками и заочниками даже между разными группами заочников. У меня была отличная группа: в ней были только инженеры. Я конечно понимаю что очень много моих оппонентов очень круты в математике: и десять алгоритмов сортировки назовут, и докажут как выжны лямбда исчисления. Но всё таки, понимаете ли вы что такое когда ты например главный по котельным на комбинате? Когда у тебя аварийное оборудование а ты отвечаешь за жизни своих людей, а они травмируются и гибнут!?
Это приучает к очень холодному и рациональному мышлению. И к манере общения которая со стороны кажется очень грубой и решительной. Чем то похоже на боевых офицеров.
Никто там не распыляется на «мне кажется», «по моему скромному мнению», «все это верно, я с тобой полностью согласен и всё же», «у нас с тобой просто разные точки зрения» — оставьте эти сопли для интернета.
Знаешь точно — говори. Ошибся? Не учёл чего-то? Скажи мне, я сразу скажу «ок» и пойдём дальше.
«Этот предмет не серый, он состоит из комбинации чёрных и белых ниток издалека дающих серый оттенок».
«Гавно — это гавно. Причём тут о вкусах не спорят?».
«Нет, давай всё таки разберёмся».
«А оно нам надо?».
У меня не получилось, но я постарался передать примерно одну из частей манеры мышления.

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

И инженеров абсолютная настроенность на результат и на пользу. Абсолютно чётко изучали всё что только может быть полезным а сразу без лишних вопросов решали бессмысленные предметы.
Это было потрясающее окружение: во многом благодаря тому что я всё таки стал к ним прислушиваться и оказался одним из шести студентов которые дошли до последнего курса. А было изначально нас две группы по 33 человека.

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

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

Вы можете сказать «Ой да ладно а вот я вчонный! Я тут наукой занимаюсь!». Идите в жопу. Просто покажите ваши дипломные работы или кандидатские. Нету там никакой науки. Во всей информатики вообще только одна формула.
Здесь нет ни учённых ни какой нибудь науки! Мы страна третьего мира. Мы продаём только сырьё и рабов, в том числе айти рабов.
Мы ничего не производим — только продаём метал и ворованный газ. Даже все наши заводы были построены американцами во время индустриализации.
Вся наша экономика была создана просто «для труда». Чтобы люди были чем то заняты. Склады были завалены никому не нужной продукцией.
Что мы создали? Устаревшие морально автоматы Калашникова нужные только папуасам? Никому не нужные ракеты?
Забудьте об этом.

У меня есть знакомый работающий в одной успешной компании где реально применяются нейронные сети и всякие там матаны. Работники этой компании постоянно где-то выступают, все сплошь кандидаты. Так вот он мне рассказал про код который там написан — он хуже индийского. Из всех возможных вариантов эти гении находили ещё один невозможный сделать через задницу и с помощью него делали.
Я был в шоке и терял дар речи когда слушал его.
Я был в шоке когда мои знакомые из Самсунга рассказывали что у них происходит на проектах которые по тесту Джоела ни одного бала не набирают.
Я был в шоке когда мне ракетный инженер с Южмаша рассказывал про мрак который у них происходит. Даже если и есть какие нибудь успехи в космосе быстро становится ясно что деньги и силы вбуханные туда никогда не окупятся.

Зачастую все эти высокие технологии внутри совсем не высокие.

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

Помните, сначала ваша задача — заработать денег. А потом уже можете заниматься тем что вам нравится.
Если кто-то думает что у нас программисты много получают то он очень ошибается.
Я не видел программистов на Феррари.
Зато я видел съёмные квартирки в которых большинство из них живёт.
Я видел как они влезают в кредиты и адски пашут на неинтересных работах.
«Много денег не бывает. Бывают только камни в почках и бедные родственники у жены»
Если ты получаешь две тысячи долларов ты по прежнему нищий потому что у тебя есть ещё жена, дети, и старые родители которые не получают вообще ничего.
Для большинства наших программистов деньги по прежнему остаются главной проблемой.
Им наплевать чем заниматься, они готовы работать хоть в сарае (я так и работал когда-то).
Главное заработать денег и прокачать опыт чтобы заработать больше.

И я конечно понимаю что знание математических крякозяблов тешит ваше самолюбие, но пацаны — лучше заработайте денег пока ещё есть возможность.
Азиаты заполняют Силиконовой долину. Скорее всего весь центр разработке вообще перейдёт в Китай.
Мы, украинцы, очень шатко держимся на рынке — никто не гарантирует что через год вы не потеряете работу.
Даже самых матёрых девелоперов увольняют только так. И джунам и студентам не так просто устроится как кажется.
Всех их спрашивают только две вещи: 1) у тебя есть опыт коммерческой разработки 2) как у тебя с английским?
Знаешь ты, или нет, что такое двусвязные списки — это будет интересно только техническому интервьюеру для того чтобы примерно нащупать что там у тебя за опыт и как быстро ты сможешь справляться с работой. Их больше интересует сработаешься ли ты с командой или нет.
А что такое двусвязный список тебе любой синьёр за минуту объяснит.

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

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

Вывод: Когда вам говорят что вуз это же не только учёба а и платформа для встречи людей по интересам это иногда и отчасти правда. И вам повезёт если вы там встретите людей близких по духу и ещё сможете вместе что-то сделать.
Но абсолютно точно вуз это не единственное место для этого.
Например наверняка у вас не все друзья были вашими одноклассниками. Они могут быть даже из других дворов, районов, стран. Тем не менее как-то же вы их нашли?

Всё таки есть хоть какая нибудь польза от вузов?

Хочу ответить на статью Николая Алименкова Высшее образование не нужно? Да вы шутите?.
Начал это делать прям там в комментариях но опять всё выросло в отдельную статью.

Эти мнения в большинстве своем очень поверхностные и редко исходят от людей, успешно закончивших хороший ВУЗ и на данный момент занимающихся интересной работой

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

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

К сожалению это не так всегда. Они вообще ничему не учат по сути и ничего на дают. Даже банальных навыков.

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

Это действительно очень сильно и хорошо улучшит ситуацию. Мне очень нравится что в Таллине и Питере так и делается.
Но тут опять возникает проблемы бюрократического толка: во первых не каждый вуз может себе держать ещё одного преподавателя. Например в Кривом Роге на факультете кибернетики преподавал 1С директор компании франчайзи. Очень толковый, хорошо рассказывал.
Попал под сокращение. И вообще как все кто хоть чему-то обучал их всех уволили чтобы сохранить места для всяких старёпров.
Я несколько раз натыкался на истории когда компания приходила в институт с предложением сотрудничества в деканат а там им в ответ «а что нам за это будет?».
Т.е. этим гнидам мало что их балбесов заберут на работу или обучат делу, они ещё имеют наглость что-то требовать сверх.
Система вузов выжимает из себя таланты оставляя только бездельников. Это классический пример из иерархологии.

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

Это старый холивар нужно ли программисту математика.
Спору нет, математика царица наук и всё такое.
Но опять таки вокруг неё есть несколько заблуждений.
Например что она сложная. По крайней мере то что дают в обычных вузах реально легкотня.
Но её преподают самые самые кочанные мудаки. И их роль – просто вышибать вышкой откровенных даунов и балбесов.
Наш препод так сразу и сказал на первой лекции. Провёл рукой по переполненному залу, где собрался весь поток и даже некоторым места не хватило, и сказал «вот после первого семестра половины это зала не будет». Ну прям как в воду глядел гад 🙂
На его лекции он пересказывал свой учебник причём бубнил себе под нос. Рисовал что-то непонятное. Нарисовал большую формулу а потом сказал «ну отсюда следует что икс равен трём».
Слава богу что после этих недолекций у нас было что-то вроде практики. На неё пришла отличная преподавательница интеллигентного вида, с питерским акцентом – как я понял жена какого-то декана. Очень спокойная и адекватная, она прям как учительница с первоклашками открыла контрольную работу которую нам дали и стала показывать как решать её на доске. Только тогда все врубились.
Моя одногруппница, сорокалетняя крановщица с завода, постоянно переживала что всё, не сдаст вышку. Она и таблицу умножения мучительно вспоминала. Ничего – где то списала что-то решила сама и сдала! А потом сразу перевелась на факультет защиты труда забросив мечту устроится диспетчером.
Пускай не сразу но я полюбил высшую математику и даже подработал делая контрольные другим и написал программу которая решала полностью все задачи контрольной и расписывала решения.
А теперь что из этого мне пригодилось в жизни? Единственный раздел вышки который используется на практике это теорвер и статистика. Но если честно я вообще не понял почему это считается вышкой а не преподаётся в школе.
Всё остальное мне понадобилось только для того чтобы понять комикс «f(x) и ее друзья»

и эту шутку

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

Большинство программистов занимаются тем что пишут код сохранения форм в базу и всё, никакой вышки им особо и не нужно. Ну может ещё края кнопки скруглить. Давайте будем всё таки реалистами – вышка на практике чаще всего не нужна.
Может быть кому то из студентов она действительно интересна, или нужна по работе, но пускай это будет предметом по выбору а не «обязательным студенто-отчислятельным».
А если ты ещё и платишь за своё обучение и тебе навязывают ненужное и нелюбимое то возникает желание бросить такую учёбу.
По поводу мнения что вуз даёт техническое мышление – тогда выходит что мне техническое мышление дал детский сад.
Я уже в садике знал как выделить железо из руды, как работают паровозы и двигатели внутреннего сгорания. А в третьем классе благодаря Энциклопедии Фортрана знал как работает компьютер ещё ни разу не увидев его в жизни.
У меня оно всегда было, и у тебя Николай. Насколько я помню в интервью ты говорил что учился в физмат лицее? Ну вот, значит способности были ещё до университета.

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

Про задачи уже тоже сто раз отхоливаренно. Вице-президент компании Google по работе с персоналом Ласло Бок:

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

очень маловероятно, что разработчик самостоятельно нашел бы время и взглянул на историю Беларуси (ну или Украины), философию, психологию, педагогику и прочие обязательные нетехнические предметы.

Хм… Можно было бы подумать что я исключение, но что-то я знаю очень много таких же как и я.
Позавчера я час читал в интернете про тридцатилетнюю войну. Последняя прочитанная мною книжка это «Новостная интернет журналистика» и я просто не мог оторваться от неё.
Наличие пытливого ума заставляет тебя не ограничиваться на чём то одном. Кем был Леонардо?

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

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

Вообще внимательный читатель заметит что я не отрицаю что в вузах иногда обучают чему-то интересному и полезное.
Вон в Гарварде даже мой любимый Grails преподаёт один из его разработчиков.
Я утверждаю что всё равно суммарно вуз ничего не даёт: ни толковых знаний, ни денег, ни работы — вообще ничего.
Я утверждаю что в современном мире система высшего обучения только губительна.
Я утверждаю что за пять лет любой предмет забудется практически полностью.
Я утверждаю что студент сам должен выбирать что ему учить. Что ему нужно а что нет. Причём полностью сам — никаких специальностей которые согласовывают в министерства. Если я хочу выучить только криптографию, реляционную алгебру и основы кулинарии — я учу только это. Я определяю глубину изучения — хочу ли я заучивать все команды git или мне достаточно знать только где находится кнопка комита в IntelliJ.
Я утверждаю что в любой момент я должен иметь возможность прийти и доучить что мне понабилось. Захочу выучить философию — прийду и пройду курс. Причём курс можно вести по вечерам и по интернету — так что даже отпуска на работе не придётся брать.

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

Всё о чём я говорю уже в той или иной степени есть и работает! Осталась только главная проблема: само порочное понятие высшего обучения.

После классического обучения что-то конечно же останется в голове, и когда ты столкнёшься с проблемой конечно же быстрей найдёшь её решение.
Но чтобы столкнутся с этой самой проблемой нужно ещё нужно саму эту работу получить.