Понедельник
Самоучкой программистом быть можно. Тех, кто говорит вам, что сам ничему не научишься, а нужно образование… игнорируйте. Будь вы хоть художником по образованию — программистом можно научиться быть самостоятельно. Я скажу Вам больше. Я считаю, что программисту ЛУЧШЕ быть самоучкой. Почему спросите Вы? Потому что в этой из ряда вон выходящей профессии нужно самосовершенствоваться каждый день хотя бы час-полтора, а лучше всю ночь. Дело в том, что наука программирования постоянно развивается и итерируется, а значит старые методы мы смело забываем и осваиваем новые. Поэтому если вы думаете, что, получив 5 лет образования можно будет всю жизнь пожинать плоды — нет. Нельзя и не будет.
Вторник
Есть лишь один тип людей, которым я завидую белой завистью — прикладные математики. Но вернувшись к первому пункту я решил, что учить математику самостоятельно не только интересно, но и зашибись как полезно. Начав с дискретной математики обнаружил удивительную вещь — если не только учить, но еще и напрягать мозг над интересными задачками он О ЧУДО начинает соображать в разы быстрее. Как где-то было написано, если ты любишь, то что делаешь, рано или поздно ты попадаешь в поток и то, что ты делаешь становится очень простым и интуитивно понятным. Тебе. Хотя год назад ты был бы в ужасе при виде всего этого. Но легкость — это следующий барьер.
Среда
Если становится совсем легко — значит ты вырос и стоишь на месте. Если остановишься — остановится и твой рост. Если стало легко, голова как бы говорит тебе что ты можешь немного дружок отдохнуть и снова нырнуть в тот омут психологического дискомфорта где тебе ничего не понятно, но так интересно и хочется освоить, понять, осилить, победить эту железку, которая снова и снова ставит тебе новые задачи. Работу я бы поделил на такие этапы: Ничего не понятно и ужас как сложно. Ой, кажется у меня что то получается и Е мое то что делал раньше весь день сделал за 10 минут, теперь еще вот это докручу чтобы лучше работало.
Четверг
Когда я только начинал, я думал, что меня будут учить. Я думал задавать вопросы нормально. А мои учителя бурчали и отнекивались. И тогда я понял одну очень важную вещь в работе программиста-джуна: не задавай вопросы коллеге. Задавай их гуглу. У человека нужно черпать опыт ненавязчиво, в беседе, когда вы в рабочем кругу что-либо обсуждаете. Но когда вопрос прямой, да к тому же касается решения вашей задачи… гугл действительно лучший собеседник. К тому же если вы еще не поняли люди в наше время получили самую большую суперсилу. Вдумайтесь. Вам стоит только задать вопрос, и ответ лежит у вас перед глазами на мониторной плоскости. Синк эбаут зис, гайс.
Пятница
Все мы так или иначе говнокодим. Будь то по лени или по незнанию. Говнокодим, потому что, просыпаясь завтра я буду умнее чем вчера, а написанный код останется позавчерашним. Не надо стесняться того, что вы становитесь лучше. Но и код свой не оставляй плохим, если знаешь, что он таков. Сразу скажу: если открываете проект, а там сплошной говнокод: время делать ноги. Ищите место где говнокода меньше. Мне довелось резко сравнить код разных людей и это как читать Оскара Уайлда и желтую газетную статью. Сложно полюбить прекрасное, когда твой мозг и глаза насилуют. А главнее всего понимайте, что все говнокодят — даже самые опытные люди. Но писать надо так, чтобы как можно меньше специалистов приняли вашу работу за уделанную вермешель.
Суббота
Читайте признанные книги, учите паттерны и хотя бы старайтесь работать по ним. Если коллега рассказывает о чем-то, а вы ловите себя на мысли что не знаете этого… поздравляю! Это значит, что вечером мы с задором маньяка сядем гуглить о чем он говорил и в следующий раз ситуаций где вы почувствуете себя дебилом будет на одну меньше. Общайтесь с коллегами. Шутите, спорьте. Самый жирный плюс работы офисного программиста — это та самая коммуникация, которой навсегда лишен фрилаенсер.
Воскресенье
Я влюблен в свою работу. Я каждый день с удовольствием бегу в офис и прокручиваю в голове то, что надо сделать. Мечтаю, чтобы когда то весь мир гордился тем, что я сделал и чего кривить душой каждый должен хотеть быть лучшим и это наверное самое важное, что я бы вам посоветовал в этой замечательнейшей профессии.
Да. Год прошел не зря. В этот раз я явно не ошибся с выбором профессии. В замечательном настроении. Фух. Отдохнул. Время снова браться за математику.
Комментарии (189)
DimaKurb
13.10.2017 17:28+1я так и не понял почему самоучкой быть лучше, если вы потом просто в свободное время учите все сами. при этом тратится время на подбор материала и фильтрацию. В то время как в универе уже есть программы и учителя.
croupier
13.10.2017 17:38+1Применительно к вэбдеву, я не слышал про адекватное профильное образование с современными программами. Я не спорю, что базис нужен и по тем же паттернам можно найти нормальный курс. Но современный вэбдев слишком быстро развивается и слишком многообразен, уж для классических ВУЗов то точно.
Free_ze
13.10.2017 18:46-1А что веб-дев? То, что называется «современным вебом» — это набор API и языков, ничего концептуального, чего в вузике не расскажут, там нет. В принципе высшее образование не про то.
Singaporian
13.10.2017 23:48Ну вот только теорию и расскажут. А кулаки набить не на чем там.
sentyaev
14.10.2017 00:16Эй! Да я в далеком 2000 набивал кулаки на PHP+MySQL, хотя этого в универе даже в планах не было. Да и вообще о веб-разработке тогда в универе даже не говорили.
Универ дает вам базу, а для практики есть… летняя практика.
Free_ze
14.10.2017 01:24Кто-то связывает студенту руки? Бери, да практикуйся. По своему опыту могу сказать, что адекватные преподаватели всегда приветствуют инициативу.
rkosolapov
16.10.2017 12:35В современном вебдеве не появилось ни одной новой вещи за последние 20 лет (ну то есть за всё то время, что он существует). Всё, что есть — это теория прошлого века.
Человек с профильной («профильной» — имеется в виду «програмистской») базой не испытывает никаких проблем с так называемым «быстрым развитием», он просто смотрит на что-то «новое», и вспоминает, что это уже было в common lisp в 1995 году, ну или там у Танненбаума в книжке примерно в то же время. Не суть важно, в какой именно теории это всё раскрыто было давным давно, главное, что оно было раскрыто, и осталось в голове в виде теоретической базы.
Естественно, такие вещи, как «детали имплементации» и «опыт» существуют, и они важны, но при наличии базы эти вещи набираются на пару порядков дешевле (мозг наш так устроен, что ему надо систематизировать, чтобы хорошо работать. База позволяет это делать, а полурандомный набор преходящих навыков — нет).
ВУЗ даёт именно базу.
В нормальном ВУЗе практические занятия ведутся на достаточно современных технологиях, просто потому что это удобнее всем.
Если хочется получать промышленный опыт и промышленные навыки, учась в ВУЗе, то никто не запрещает идти работать на частичную занятость. Курса с четвёртого это просто обязательно.
ВУЗ принципиально не может дать промышленной практики. А промышленная практика принципиально не может дать теории, базы. Поэтому для хорошего программиста нужно и то, и другое.
Rastishka
13.10.2017 17:41+1В то время как в универе уже есть программы и учителя.
Это где вы видели нормальные программы и учителей?a4k
13.10.2017 17:54Да, о последних тенденциях в вузах не рассказывают
Но если вуз нормальный там можно получить вполне хорошую базу
Для веб разработчика, как минимум, это — протоколы, работа браузера, основы баз данных
Fedcomp
13.10.2017 19:02Которые гораздо легче и дешевле изучить самому.
madfly
13.10.2017 19:17+1Ага, а потом такой вот самоучка не понимает, с какого перепуга его бизнес-логика работает неадекватно. А просто он не слышал о разнице между средним арифметическим и медианой (пример из жизни). Он ведь вебдев учил, а не основы статистики. Или почему его SQL-запросы ставят базу колом (видимо движок плохой, надо срочно модный nosql какой-нибудь всунуть, про который на форумах пишут — вот где мощь-то будет!). Он ведь вебдев учил, а не комбинаторику. Зато легко и дешево, нахватался азов за пару месяцев и смеется над дураками, 6 лет штаны просиживающих.
soomrack
13.10.2017 19:54И говорит — «Нужно больше серверов!» (случай из жизни)
struvv
13.10.2017 21:15А тут уже считать бабки надо. Может там оптимизация за 10 тыщ баксов, которая сможет сэкономить на серверах на 50 баксов в мес. А может и наоборот.
soomrack
13.10.2017 21:50В том случае было хранение числа (которое использовался как индекс) в текстовом поле б.д. без индекса. Поиск по нему тормозил.
Но при этом человек, который это делал, был весьма неплохим креативщиком, много чего мог сделать (и делал) в вебе, т.е. такой самый грустный случай человека без профильного образования.Zenitchik
13.10.2017 23:41Это не про профильное образование, а про математиков vs креативщиков.
Креативщики в типы данных могут только если заставить.
struvv
14.10.2017 00:44Интересно что за база была. В postgres — очень далеко не факт, что индекс ускорит поиск.
База(postgres) запросто может предпочитать sec scan даже если индекс есть и индекс только замедляет поиск, вставку и обновление в ряде случаев. Тут, конечно, у каждой базы множество своих особенностей.
Тормоза это ещё ладно, веселей когда фин данные пишут в double или floatls18
14.10.2017 08:02А в какой тип данных писать фин. данные?
soomrack
14.10.2017 12:11Double и float может быть проблемным с т.з. округления. Когда вы отбрасываете несколько цифр в расстоянии до Солнца — это норм, но когда вы округлите хотя бы на 1 копейку/цент счет, то есть шанс что вас знатно вы*бут бухи, налоговики и пр. им сочувствующие. Поэтому если у вас нет специального типа или структуры, то только целые числа.
aleks_raiden
14.10.2017 19:37фин данные — они очень уж разные. Вы сейчас о конкретно виде — accounting/money. А вот там всякие расчеты кривых доходностей — там бывает иногда и вышка, и числа вещественные и т.п.
struvv
13.10.2017 21:12Забавно, но видел обратное — профильные программисты (благо хоть из головных региональных ВУЗов, а не из топовых в РФ) не знали что такое медиана, корячились со средним арифметическим, потом не знали как его вычислить, потом не могли найти середину у списка через SQL. Может постсоветская версия ВУЗов и выпускала ещё по инерции спецов, сейчас я в цирке уже смеяться не буду от того, что видел.
Впрочем вебдев, естественно тоже не будет знать этих инструментов, хотя джуниоры от вебдева мне показались не сильно вредней, чем профильные.
p.s.
Как по мне, так начинать учить надо ещё в школе на основе собственного интереса, а не по программе обучения.
Neftedollar
14.10.2017 15:59Кстати, меня оень расстраивает, что комбинаторику не начинали преподвать в шолах. Все же начинается там с простого сложения и умножения. Может быть в математических школах преподают сейчас, но в обычных, нам давали задачи из комбинаторики, маркируя их звездочкой, факультативно, например посчитать то же кол-во слов в языке с 5-буквенным алфавитом, но не объясняли как такие задачи решать и почему.
tyomitch
15.10.2017 17:26Могу проиллюстрировать ваш тезис конкретным примером. Предположим, перед пэхапэшником встаёт задача: «закодировать бинарные данные в base32».
Что делает погромист, академиев не кончавший? Гуглит определение base32 — «данные разбиваются на блоки по пять битов, каждый блок кодируется одним символом» — и кодит какой-то кошмар вокругdecbin(ord($string[i]))
, разбиения строки$binval
блоками по пять символов, и потомbindec(substr($binval))
. Потребление памяти как минимум восьмикратное, а возня со строками настолько неэффективная, что волосы встают дыбом.
Но на SO это топовый заплюсованный ответ, ещё и с чьим-то комментарием «This is the only correct answer.»
Более того, такие пэхапэ-самоучки облекают свой код в библиотеки [1] [2], которые потом другие программисты на SO советуют [1] [2], не заглядывая внутрь кода. Нуачо, всё работает же!
rkosolapov
16.10.2017 12:38Нет. Самому это всё изучать сложнее и дороже. У меня нет высшего образования, код я пишу с 1991 года, на то, чтобы получить базу, которая даётся в ВУЗе (хорошем), мне понадобилось лет 12 где-то. Это больше чем в два раза больше, чем тратится времени в ВУЗе.
struvv
13.10.2017 20:53А что имеется в виду под базой?
Проведём маленький эксперимент, если Вы не против — мне любопытно чего такого я не знаю на фундаментальном уровне, из того, что преподают в ВУЗах в качестве базыsoomrack
13.10.2017 22:02> Проведём маленький эксперимент, если Вы не против — мне любопытно чего такого я не знаю на фундаментальном уровне, из того, что преподают в ВУЗах в качестве базы.
Ну я вот писал программу по нескольким курсам, один из основных — «Алгоритмы и структуры данных», вот база (не все, особенно и последнего семестра, нужно знать и доказывать, но основные свойства полезно знать).
Вот примерный список, я надеюсь, он после обкатки скорректируется. Общий объем 225 часов (чисто лекции, практика Python-C-C++ идет отдельными часами).
Поиск в массиве
1.1 Линейный поиск
1.2 Двоичный поиск
1.3 Троичный поиск
1.4 Интерполяционный поиск
Структуры данных
1.5 Массив
1.6 Стек
1.7 Очередь, двусторонняя очередь
1.8 Словарь
1.9 Хеш-таблица
Сортировки, анализ алгоритмов
2.1 Bubble sort (пузырьковая сортировка)
2.2 Merge sort (сортировка слиянием)
2.3 Quick sort (быстрая сортировка)
2.4 Bucket sort (блочная сортировка)
2.5 Heap sort (пирамидальная сортировка)
2.6 Insertion sort (сортировка вставками)
2.7 Counting sort (сортировка подсчетом)
2.8 Radix sort (порязрядная сортировка)
2.9 Timsort и другие гибридные алгоритмы сортировки
Рекурсия, математическая индукция
3.1 Хвостовая рекурсия
3.2 Обратная польская запись
3.3 Числа Каталана
3.4 Вычисление биномиальных коэффициентов
3.5 Метод градиентного спуска
3.6 Метод сопряженных градиентов
3.7 Принцип динамического программирования
3.8 Метод ветвей и границ
3.9 Методы Gradient boosting
3.10 Алгоритм Кадана
3.11 Поиск методом золотого сечения
3.12 Производящие функции
3.13 Запаздывающие генераторы Фибоначчи
3.14 Memoization
3.15 Корекурсия
3.16 Задача 3-SAT
3.17 Алгоритм фрактального сжатия
Структуры данных (рекурсивные)
3.18 Список
3.19 Дерево
3.20 Граф
Строки
4.1 Z-функция
4.2 Алгоритм Кнута-Морриса-Пратта
4.3 Алгоритм Ахо-Корасик
4.4 Алгоритм Бойера-Мура
4.5 Алгоритм Бойера-Мура-Хорспула
4.6 Сходство Джаро-Винклера
4.7 Расстояние Левенштейна, алгоритм Укконена
4.8 Расстояние Дамерау-Левенштейна
4.9 Алгоритм Карпа-Миллера-Розенберга
4.10 Алгоритм Каркайнена-Сандерса
4.11 Алгоритм Арикавы-Аримуты-Касаи-Ли-Парка
4.12 Алгоритм Ву-Менбера
4.13 Алгоритм Ландау-Вишкена
4.14 Алгоритм Майерса
Структуры
4.15 Префиксное дерево
4.16 Суффиксный массив
4.17 Суффиксное дерево
Порядковые статистики, потоковые алгоритмы
5.1 Алгоритм BFPRT
5.2 Алгоритм Манро-Патерсона
5.3 Алгоритм Канна-Гринвальда
5.4 Алгоритм большинства голосов Бойера-Мура
5.5 Алгоритм Lossy Count
Деревья
6.1 Эйлеров обход дерева, DFS, BFS
6.2 Двоичное дерево поиска
6.3 Декартово дерево
6.4 Красно-черное дерево
6.5 АВЛ-дерево, дерево Фибоначчи
6.6 Splay tree (расширяющееся дерево)
6.7 B, B+, B* дерево, 2-3 дерево
6.8 PQ-дерево
6.9 Дерево отрезков
6.10 Дерево Фенвика
6.11 Алгоритм двоичного подъема (задача LCA)
6.12 Алгоритм Фарах-Колтона и Бендера (RMQ, LCA)
6.13 Sqrt-декомпозиция
6.14 Центроидная декомпозиция
6.15 Heavy-light декомпозиция
6.16 Фибоначчиева куча
6.17 Куча, 2-3 куча
6.18 Очередь с приоритетами
6.19 Множество
6.20 Система непересекающихся множеств
6.21 Лес непересекающихся множеств
6.20 Ассоциативный массив
Графы
7.1 Обход в ширину (BFS)
7.2 Обход в глубину (DFS)
7.3 Топологическая сортировка
7.4 Алгоритм Munagala-Ranade
7.5 Алгоритм Mehlhorn-Meyer
7.6 Задача о динамической связности
7.7 Алгоритм поиска точек сочленения графа
7.8 Алгоритм поиска мостов графа
7.9 Алгоритм Косараю
7.10 Алгоритм Тарьяна
7.11 Задача 2-SAT
7.11 Алгоритм Брона-Кербоша
7.12 Конденсация графа
7.13 Раскраска графа
7.14 Задача о назначениях
7.15 Венгерский алгоритм
7.16 Алгоритм Ульмана
Структуры
7.17 Матрица смежности
7.18 Матрица достижимости
7.19 Матрица сильной связности
7.20 Матрица Лапласа
7.21 Матрица Инцидентности
7.22 Список смежности
7.23 Список ребер
Графы: циклы
8.1 Алгоритм поиска Эйлерова цикла
8.2 Алгоритм поиска Эйлерова пути
8.3 Алгоритм поиска Гамильтонова цикла
8.3 Алгоритм поиска Гамильтонова пути
8.4 Задача Коммивояжера
Графы: остовное дерево
9.1 Теорема Кирхгофа
9.2 Теорема Кэли о числе деревьев, код Прюфера
9.3 Лемма о безопасном (минимальном) ребре
9.4 Алгоритм Краскала
9.5 Алгоритм Примы
9.6 Алгоритм Борувки
9.7 Задача устранения петель в сети Ethernet (STP)
9.8 Задача Штейнера
Графы: кратчайший путь
10.1 Алгоритм Дейкстры
10.2 Алгоритм Best-First
10.3 Алгоритм A*
10.4 Алгоритм Левита
10.5 Алгоритм Беллмана-Форда
10.6 Алгоритм Флойда-Уоршелла
10.7 Алгоритм ALT
10.8 Алгоритм Reach-based pruning
Графы: потоки в сетях
11.1 Алгоритм Форда-Фалкерсона
11.2 Алгоритм Эдмонса-Карпа (алгоритм Диница)
11.3 Алгоритм поиска потока минимальной стоимости
11.4 Сети Петри
11.5 Алгоритм проверки графа на двудольность
11.6 Алгоритм раскраски двудольного графа
11.7 Алгоритм Хопкрофта-Карпа
11.8 Венгерский алгоритм
11.9 Blossom алгоритм (алгоритм Эдмондса)
11.10 Алгоритм Штор-Вагнера
Геометрия
12.1 Метод Гаусса
12.2 Поиск точек в прямоугольнике
12.3 Алгоритм Бентли-Оттмана
12.4 Алгоритм Грэхема
12.5 Алгоритм Джарвиса
12.6 Алгоритм Чана
12.7 Алгоритм Киркпатрика
12.8 Метод трассировки луча
12.9 Метод суммирования углов
12.10 Диаграмма Вороного и триангуляция Делоне
12.11 Алгоритм Форчуна
12.12 Рекурсивное построение диаграммы Вороного
12.13 SLERP
Структуры
12.13 R, R+, R* дерево
12.14 K-мерное дерево
12.15 BSP, VP дерево
12.16 Дерево покрытий
Персистентные структуры
13.1 Метод копирования пути
13.2 Метод толстых узлов
Структуры
13.3 Персистентный стек
13.4 Персистентная очередь
13.5 Персистентное дерево
Консенсус в сетях
14.1 Алгоритм Paxos
14.2 Задача Византийских генералов
14.3 Кворум
14.4 CAP-теорема
14.5 PACELC-теорема
14.6 Королевский алгоритм
14.7 Алгоритм Zyzzyva
Структуры
14.8 Blockchain
Целочисленное программирование
15.1 Каноническая форма, сложность решения
15.2 Алгоритмы полного перебора
15.3 Алгоритм Нарайаны
15.4 Задача о ранце
15.5 Алгоритм Meet-in-the-Middle
15.6 Задача раскроя
15.7 Метод обратного поиска
15.8 Задача планирования производства
15.9 Задача оптимизации телекоммуникационных сетей
15.10 Метод секущих плоскостей, алгоритм Гомори
15.11 Алгоритм Альфа-Бета отсечений
15.12 Жадные алгоритмы
15.13 Матроиды, алгоритм Радо-Эдмонса
Быстрые вычисления
16.1 Умножение Карацубы
16.2 Алгоритм Шенхаге-Штрассена
16.3 Алгоритмы возведения числа в степень
16.4 Алгоритмы возведения в степень числа по модулю
16.5 Алгоритм Кули-Тьюки
16.6 Алгоритм Штрассена
Факторизация
17.1 Алгоритм Евклида (НОД)
17.2 Алгоритм факторизации Ферма
17.3 Метод квадратичных форм Шенкса
17.4 Ро-алгоритм Полларда
17.5 Метод квадратичного решета
17.6 Общий метод решета числового поля
17.7 Факторизация с помощью эллиптических кривых
17.8 Тест Агравала-Каяла-Саксены
17.9 Алгоритм Берлекэмпа
Дискретное логарифмирование
18.1 Алгоритм Гельфонда-Шенкса
18.2 Алгоритм COS
Обработка очередей
18.1 Семейство алгоритмов Round-robin
18.2 Алгоритм EDF
18.3 Алгоритм SRTF
18.4 Алгоритм Fixed-priority pre-emptive scheduling
18.5 Задача составления расписания (JSP, OSSP)
18.6 CFS планировщик
18.7 BFS планировщик
Кеширование
19.1 T-дерево
19.2 Алгоритм Белади
19.3 FIFO, LIFO кеширование
19.4 LRU, PLRU кеширование
19.5 MRU кеширование
19.6 RR кеширование
19.7 LFU кеширование
19.8 MQ кеширование
19.9 ARC кеширование
Рандомизированные алгоритмы
20.1 Метод Монте-Карло
20.2 Поиск наименьшего набора ребер, разрезающего циклы
20.3 Муравьиный алгоритм
20.4 Алгоритм Каргера
20.5 Изоморфизм графов (алгоритм Blum-Kanan)
20.6 Rapidly exploring random tree
20.7 Тасование Фишера-Йетса
20.8 Алгоритм Karloff–Zwick
Вероятностные тесты на простоту
21.1 Тест Ферма
21.2 Тест Миллера-Рабина
21.1 Тест Бейли-Померанца-Селфриджа-Уогстаффа
Вебграфы
22.1 Модель Болобаша-Альберта
22.2 Модель Болобаша-Риордана
22.3 Модель Бакли-Остгус
22.4 Модель копирования
22.5 PageRank, Google matrix
Структуры
22.1 MapReduce
22.2 Apache GiGraph
22.3 Pregel
Хеширование
23.1 Двойное хеширование
23.2 Фильтр Блума
23.3 Count-min sketch
23.4 Универсальное хеширование
23.5 SWIFFT
23.6 MD5
23.7 SHA-2
23.8 SHA-3 (Keccak)
23.9 Дерево Меркла
23.10 Подпись Меркла
23.11 Хеш-функции, учитывающие близость (LSH)
23.12 Хеширование на основе расстояния Хэмминга
23.13 MinHash
23.14 SimHash
23.15 Поиск ближайшего соседа c помощью LSH
** При этом стоит учесть что запланированы еще курсы по Теории графов, Дискретной математике, Экстремальным задачам, Машинному обучению, Теории сложности и пр.пр.пр. Т.е. это просто фундаментальный курс по алгоритмам и структурам данных, который является точкой отсчета для всего остального (ну как курс по Математическому анализу).
*** Это несколько больше чем я сам знаю, так что это еще и мой план для себя подтянуть неизвестные/забытые темы. Обсудив его с коллегами, на предмет кто будет читать мы пришли к выводу, что мы все были бы рады и сейчас прослушать такой курс.struvv
14.10.2017 00:18Спасибо за разьяснение.
Проверил построчно(смысл алгоритмов) 80% пока не надоело — где-то четверть из этого не знаю, четверть последний раз использовал на олимпиадах по информатики ещё в школе и забыл из-за их ненужности(В основном как устроены альтернативные реализации алгоритмов, а также не помню названия).
Основные пробелы в алгоритмах где данные идут потоком(реализацию не знаю), некоторые виды графов, алгоритмы хэшей, геометрия — всё это никогда не было нужно.
Тем не менее сам список очень полезен и для освежения памяти и изучения, и для разминки. Премного благодарен.
Согласен с тем, что это полезно знать(для мышления), но что интересно — на практике не припоминаю чтобы хотя бы 5% применялось в бизнесе. Те же задачи поиска оптимального пути сильно сложней в промышленной эксплуатации. Плюс обычно для бизнеса требуются совершенно другие знания, никак не связанные с производительностью/хранением данных и поиском в них, о чём подавляющее большинство структур и алгоритмов и этих бизнес-специфических знаний сильно больше, чем несколько таких курсов вместе взятых.
Предполагаю, что скорее польза всего возникает чисто из-за улучшения системности мышления из-за чего базис и нахваливаютsentyaev
14.10.2017 11:14… некоторые виды графов, алгоритмы хэшей, геометрия — всё это никогда не было нужно.
…
Согласен с тем, что это полезно знать(для мышления), но что интересно — на практике не припоминаю чтобы хотя бы 5% применялось в бизнесе.
Когда я изучал алгоритмы, то думал — да зачем это все это же не используется почти, да и основные алгоритмы уже реализованы в библиотеках.
Когда я изучал паттерны, то думал — зачем их столько, из них же максимум 2-3 используются, остальные не нужны.
Когда только начинал читать про SOLID, то думал — опять что-то намудрили, а на практике все делают не так.
Ну и так далее, это можно практически про любую тему сказать.
Это к тому, что, по моему мнению, вы совершаете классическую ошибку говоря о том, что большинство алгоритмов не применяются. Они ведь не используются потому что о них просто не знают.
Плюс обычно для бизнеса требуются совершенно другие знания, никак не связанные с производительностью/хранением данных и поиском в них, о чём подавляющее большинство структур и алгоритмов и этих бизнес-специфических знаний сильно больше, чем несколько таких курсов вместе взятых.
Вот пример, у меня не сильно сложный проект, бизнес специфика — баскетбол и бейсбол. Ни в одном университете такому не научат, да и не нужно такому учить.
Бизнес специфика изучается самостоятельно в процессе работы.
А вот пример недавней задачи:
Есть два набора данных формата
[{ Number, String }]
,
где Number — это unix time,
a String — это строка такого вида: «A -> B -> C»,
A, B, C — это произвольные слова, их кол-во произвольно, но обычно не больше 20.
Что-то вроде:
[
{ 1234123, "A -> B -> C"},
{ 5324534, "X -> B -> C"},
{ 4234234, "A -> B" }
]
Первый набор данных — эталонные данные.
Второй набор — пользовательские данные. Порядок в этом наборе может не совпадать с эталонным. Могут быть пропуски или лишние данные.
Задача: Сравнить и отобразить «красиво» эти наборы чтобы найти насколько пользовательские данные отличаются от эталонных.
Вот не знаю как бы я решал эту задачу не зная нескольких алгоритмов.ashumkin
14.10.2017 15:17Вот не знаю как бы я решал эту задачу не зная нескольких алгоритмов.
А с помощью каких решали? Правда, интересно. У меня нет ТАКОЙ базы, чтобы решить такую задачу без велосипедовsentyaev
14.10.2017 19:39Mehdzor вот говорит что можно использовать машинное обучение, а у меня нет знаний в этой области, возможно он прав, возможно нет. Было бы интересно через эту призму попробовать решить эту задачу. Это как раз подтверждает то о чем я говорил — если не знаешь например машинное обучение, то даже не подумаешь о таком решении.
А я использовал LCS (longest common sequence) для поиска разницы в последовательностях типа «A -> B -> C», а дальше NN (Nearest neighbor search) чтобы найти ближайшие. Ну и немного велосипедов, т.к. дальше мои познания закончились.
soomrack
14.10.2017 13:10> но что интересно — на практике не припоминаю чтобы хотя бы 5% применялось в бизнесе
Есть разные цели обучения.
Когда я разрабатывал эту образовательную программу (часть относящуюся к компьютерным наукам), я исходил из следующих принципов:
Первый принцип: никаких ограничений по выбору профессии в области CS.
(Машинное обучение, ИИ, базы данных, веб...) Это не значит, что он должен уметь делать все сразу, это значит, что не должно быть фундаментальных препятствий к быстрой прокачке навыков.
Второй принцип: возможность продолжить обучение по направлениям математика или CS.
Например, пойти в магистратуру и развиваться в области криптографии и информационной безопасности; или развиваться в области расчетов движения механических объектов — бпла и пр.; или уйти в область робототехники…
Третий принцип: полученная квалификация не должна устареть за 10 лет.
** Конечно, это не массовое образование (тут набор вообще планируется в 20 человек), но это спецы, которые должны будут решать задачи, составляющие 1-5% от бизнеса (по моему опыту), но без решения которых остальные 95-99% бизнеса лишены смысла.
*** И да, я считаю, что должна быть система институтов или ПТУ, которая будет массово (тысячи в год) и быстро (за 1-2 года) готовить конкретных программистов под конкретные простые задачи, для конкретных бизнес-потребностей — администрирование MySQL; PostgreSQL; настройка Nginx; Python для веба; и т.д. и т.п., т.е. набор небольших, но очень конкретных навыков. Система должна быстро подстраиваться под потребности бизнеса. Впрочем, сейчас эту нишу пытается занять онлайн-образование. Правда статистически эффективность пока не очень.
San_tit
14.10.2017 07:47Не хочу вас расстраивать, но большинство студентов из такого насыщенного курса вынесут только представленный вами список и может быть общее представление об этих вещах… (Хотя на мой взгляд этого более чем достаточно, учитывая доступность информации сейчас)
Собственно для этого и нужен университет: получить представление о базе и о том, что есть. Реальные навыки в университете получаются в R&D лабораториях.
soomrack
14.10.2017 10:19Задача минимум обучения, — чтобы специалист мог выбирать оптимальный метод решения из существующих, и знать какими свойствами он обладает (сложность и пр.), чтобы он мог спрогнозировать качество решения своей задачи в целом.
Если ему нужно посмотреть в интернете как что реализуется, то это конечно не очень хорошо, т.к. затормозит написание кода, но и не очень плохо (если только ему не приходится постоянно это делать).
Steamus
15.10.2017 17:09Несомненно, что это правильно, когда программист имеет хорошую математическую подготовку. Но ваш список не выглядит сбалансированным. Он выглядит как список, который должен выглядеть крутым. Большая половина из перечисленного практически никем не будет освоена ибо у вас количество пунктов больше количества отведённых часов. То есть — меньше часа на каждый. И будет лишь пустая трата времени с полным отбиванием охоты учить всю эту смесь. Осмыслить даже половину перечисленного за отпущенные часы невозможно.
soomrack
15.10.2017 17:43Если рассматривать его как «сферического коня в вакууме» — то да, учить по списку с примерно часом на каждый пункт — довольно глупо.
Но это часть программы, и его составление и разбивка по семестрам делалась в соответствии с тем, что будет читаться вокруг. Практика программирования это фактически x2 по часам. Курс теории графов — еще +. Курс теории экстремальных задач… Курс теории сложности… Много чего. В итоге этот курс по многим строчкам это не столько теория, сколько связь между хорошей математикой и конкретной практикой — то, чем и является «алгоритм» — это еще не программа, но уже и не теорема.Steamus
15.10.2017 19:38Да, вижу что много чего. Примерно как учиться читать и одновременно проходить Войну и Мир с Преступлением и наказанием. Или довести количество отжиманий от пола до тысячи за одну неделю. Это и называется разбалансированность. Стандартная беда — перечислить всё что есть в математике и убедить себя что всё это крайне необходимо ибо хорошо и знаний много не бывает и сё такое.
DimaKurb
13.10.2017 23:16Я могу назвать и преподователей и ВУЗы, но у каждого свой опыт. То что кто-то не видел отличных программ, не значит что их нет. Вы просто подумайте, что когда вы обучаетесь по книгам, то автор книги скорее всего где-то читает лекции. Утверждать что нет программ сопоставимо с тем, что утвержать что нет материала по которому Вы учитесь. Но так как материал есть, то значит и есть универы и курсы. не так ли?
struvv
13.10.2017 20:50Лучше, но когда интересно. Конечно не могу говорить за такую сложную вещь, как психика, что у всех так, но лично я сильно лучше изучаю как что-то устроено или работает, если мне интересно, чем через силу на курсах или лекциях.
DimaKurb
13.10.2017 23:32вы утверждаете что лучше лишь потому что вас не заставляют. но так то никто не заставляет Вас поступать на конкретный факультет в университет? тем не менее по сути для того чтоы стать хорошим специалистом в сфере ИТ нужно знать и математику, и устройство системы, те же алгоритмы и структуры. Я не верю что выучив ангуляр и начав делать сайты, можно скзать что этот человек разработчик. Это как научившись рисовать круг, Вы не становитесь художником.
struvv
14.10.2017 00:36я научился прогать ещё классе в 7-8 и математику/физику тогда же учил сам, устройство компьютера знаю достаточно подробно, мне вообще легко даётся понимание того, как что-то работает, хоть самолёт, хоть подводная лодка, хоть компьютер с хорошей детализацией
Чтобы стать хорошим специалистом нужны тысячи часов пота и крови, 3х месячные курсы ангуляра их не дают, тут дело скорее не в ВУЗе, а в времени, влитом в работу.
И при этом я не считаю способность писать софт тем, чего достаточно для работы и карьеры. Софт это только инструмент, а для работы нужно уметь осуществлять основную цель бизнеса — создавать прибыльDimaKurb
14.10.2017 11:57ну я ведь так и написал в посте выше, что сомнительное утверждение «самоучка лусше» если по сути вы просто в свободное время тратите все тоже время что и студент универа на изучение материала, только еще уходит время на сортировку материала. я ведь не говорю что самоучка это что-то плохое или невозможное. самоучка или выпускник вуза по сути все равно, с точки зрения бизнесса.
Zenitchik
14.10.2017 13:05Студент ВУЗа тоже в основном "самообразуется". ВУЗ больше направляет самообучение, чем обучает. Ну и дисциплинирует — студярам это нужно (возраст-с).
DimaKurb
14.10.2017 16:14не совсем так. самообразование это Вы сами выбераете и Вы сами учите, и Вы сами оцениваете свои знания. В то время как в университете проверка знаний производится не Вами, и материал предоставляется. Студент имеет возможность и сам выберать материал, но задается некоторый сегмент по котому оценивается знания. Дисциплина нужна и в самообразовании и в универе.
theWaR_13
13.10.2017 19:03+4Тех, кто говорит вам, что сам ничему не научишься, а нужно образование…
Лично я такого не слышал практически нигде. Все только и твердят про самообразование, книги, курсы. Даже вот целый хайп про образование прошел недавно на хабре.
не задавай вопросы коллеге. Задавай их гуглу.
Отнюдь. В иной раз коллега гораздо лучше сможет объяснить какой-то непонятный момент. Это не значит, что нужно спрашивать вопросы почему функция не работает, но, например, «почему в коде написано так, а не иначе», или «почему мы используем именно эту библиотеку, а не другую» имеет смысл спрашивать именно у коллеги.
если открываете проект, а там сплошной говнокод: время делать ноги. Ищите место где говнокода меньше.
Ахх, где же этот идеальный мир без говнокода...?
Если коллега рассказывает о чем-то, а вы ловите себя на мысли что не знаете этого… поздравляю! Это значит, что вечером мы с задором маньяка сядем гуглить о чем он говорил и в следующий раз ситуаций где вы почувствуете себя дебилом будет на одну меньше.
Вы серьезно чувствуете себя дебилом каждый раз, когда кто-то из коллег рассказывает вам то, чего вы еще не знаете..?
P.S. Извините, не удержался.Jamdaze
14.10.2017 14:50Про дебилов… наверное это зависит от объема собственых фундаментальных знаний. Вполне естественно чуствовать дискомфорт если ты вообще ничего не понимаеш.
anton1234
15.10.2017 01:29не задавай вопросы коллеге. Задавай их гуглу.
Еще есть компромиссный вариант, спросить коллегу, что спросить у гугла.
Нередко проблема начинается уже на этапе постановки вопроса.
Неверно заданный гуглу вопрос, может завести сильно в лес.
ameli_anna_kate
13.10.2017 19:33Когда я только начинал, я думал, что меня будут учить. Я думал задавать вопросы нормально. А мои учителя бурчали и отнекивались… не задавай вопросы коллеге. Задавай их гуглу.
Не совсем согласна с вашим утверждением. Всегда приветствовала, когда мне задавали вопросы, говорила, что если не понятно, то лучше спросить еще раз. Охотно объясняла, почему так лучше написать или сверстать своим джунам. Другое дело, когда рассказала один раз реализацию, затем второй, а когда спрашивали уже в третий, то меня это расстраивало. Получить ответ от более опытного коллеги зачастую быстрее, чем долго ковыряться самому в и-нете. К тому же еще не факт, что найденное верно или подойдет в вашем проекте, в силу специфики оного.
Конечно, есть разница в вопросах: «Почему у меня все не работает?» и «Плохо ли использовать позиционирование sticky?».
К примеру, если мой джун вставала в тупик при написание какого-то куска кода, то я садилась, находила в чем проблема и как ее решить. Давала подсказки, говорила где поставить брек поинт, советовала: «Смотри что тебе приходит, есть в аргументах нужные тебе данные. Если нет, то ты наверно передаешь что-то не то, ставь брек поинт выше, смотри что действительно надо отправить в метод»
Меня наоборот, настораживало бы, если бы джун сидел и молча ковырялся все время.
Если вспомнить свое джунство, то не могу сказать, что бы на меня все забивали, тоже старались рассказать полезные вещи, чему-то научить.i360u
13.10.2017 20:06+1Видимо, у вас очень много свободного времени. Ну или Вы — воспитательница в детском саду. Когда решаешь задачи "вселенского масштаба", обычно, бываешь готов убить любого, кто прервет ход твоих мыслей, даже будучи человеком абсолютно незлобным и позитивным в обычной гражданской жизни. А "ковыряться в инете" — это вообще должен быть базовый навык в нашем деле.
ameli_anna_kate
13.10.2017 21:27Видимо, у вас очень много свободного времени. Ну или Вы — воспитательница в детском саду...
Времени как раз постоянно не хватает. Да, раздражает, когда отвлекают, но я стараюсь резко не отвечать. Чаще всего, забавные затыки, которые выявляются минут за пять. Лучше сразу потратить время и научить правильно, чем в будущем исправлять баги, которые полезут из не умело написанного кода. Да и мир it-тесен, ни когда не знаешь, кого встретишь на новой работе и с чьим кодом придется работать…
Mugik
13.10.2017 20:33Сразу видно, вот честное слово, что человек не учился в вузе. Есть у нас, у тех, кто особенно отсидел 6 и более лет за партой, причём не в каком-то шарашном эконом псевдовузе, какое-то отношение критическое к этому всему. Понимание, что всё это бред, ерунда и что нет ничего крутого. прикольного вау и прочего.
Вот, что точно умеет делать вуз, дак это даёт понимание какой-то реальности, учит мыслить более рационально.
Время снова браться за математику.
Вот не напишет такое человек с дипломом, хотите верьте, хотите нет.
onyxmaster
13.10.2017 20:59Не надо стесняться того, что вы становитесь лучше.… Сразу скажу: если открываете проект, а там сплошной говнокод: время делать ноги. Ищите место где говнокода меньше.
То есть в любом случае вместо того чтобы решать неизбежные (по вашим же словам) проблемы старения кода, от них надо сбегать, желательно на другое место работы?
Пожалуй, хороший вопрос для интервью, надо только его подать немного не в такой форме, и никогда не брать на работу людей, которые согласны с тем, что "пора делать ноги".
iwram
13.10.2017 21:05Вспомнил случай из студенческих лет. Во время лекций один студент стал спорить с преподавателем, суть спора что методы про которые говорит лектор устарели, но в ответ «Не спорь, я опытный, а ты совсем молодой». Ответ не оставил себя долго ждать «Умные гордятся знаниями, а дураки опытом» (я раньше таких фраз не слышал, возможно уже крылатое выражение). После этого предмет всем было сдавать тяжело. Удачи в получении новых знаний и опыта!
Singaporian
13.10.2017 23:54Вы мне напомнили мой последний день на военной кафедре, где я пришел в грязных ботинках. Подполковник вызвал меня на шаг вперед и спросил:
— Ты к своей девушке в таких же ботинках ходишь?
Я не совсем понял, о ком он — никакой девушки у меня не было на тот момент. Но решил подыграть:
— Нет, к ней хожу в чистых. Я же ее уважаю.
— Вон с кафедры! Вон! Ты не будешь чинить реактивные двигатели! Ты будешь собакам хвосты крутить!Idot
14.10.2017 09:09-1А сказал бы честно как есть, не было бы конфликта.
Singaporian
14.10.2017 09:44+1Согласен. Но тогда не было бы конфликта)))
Zenitchik
14.10.2017 13:13Рапорт не принимали? Знакомо. Те, с кем я учился, отстранялись от обучения на военной кафедре сходным образом.
Idot
13.10.2017 22:03если открываете проект, а там сплошной говнокод: время делать ноги
То есть Вы не умеете читать чужой код.
А поскольку, обычно через год свой собственный код, когда его подзабыли выглядит как чужой
=> то значит Вы пишете WRITE-ONLY-CODE.slonopotamus
14.10.2017 15:11Вы так говорите потому что вам еще не встречались проекты целиком состоящие из говнокода?
Idot
14.10.2017 17:01Если ты не способен исправить чужой говнокод (разобравшись и оптимально переписав), то ты не программист, а говнокодер.
PS и что-то мне подсказывает, что для тебя алгоритм быстрой сортировки, в твоих глазах тоже выглядит "настоящим говнокодом", потому что ты, решив, что "ВУЗ не нужен", гордо забил все на "ненужные предметы", включая и теорию алгоритмов, которая в твоих глазах по причине непонимания выгляди "говнокодом".
slonopotamus
14.10.2017 21:15Во-первых, не надо додумывать за других мысли и слова которые они не говорили, у вас это хреново получается.
Во-вторых, моя позиция относительно ВУЗов такова: я не вижу убедительный доказательств тому что в современном мире классическая форма вузовского (и школьного тоже) обучения является наиболее эффективной.
В-третьих, метод обучения и изучаемый материал есть вещи ортогональные. Можно проспать лекции по алгоритмам в институте, а можно самостоятельно изучить трехтомник Кнута.
В-четвертых, возвращаясь к говнокоду. Допустим, есть проект на пару миллионов строк говнокода. Способен ли кто-то его исправить? Технически да. Но на практике это потребовало бы довольно внушительных затрат времени, которое а) не очень-то и хочется на это тратить и б) никто не будет оплачивать.
Idot
15.10.2017 00:15никто не будет оплачивать
Странный у Вас трудовой контракт… если, что-то сделанное по работе может не оплачиваться.
Goury
13.10.2017 22:54Я вам вот что скажу:
Понедельник
Во-первых, не знаю как сейчас, а раньше там ещё писать учили грамотно.
Во-вторых, не важно вуз или нет, но нужен наставник. Как минимум на начальном этапе.
Иначе вместо самоучки велика вероятность стать очередной обезъяной-говнокодером.
Знаете сколько веб-макак могут отличить 400 от 405 и знают почему нужно применять POST или GET в конкретном случае? Очень мало, к сожалению. И это только вершина только одного из айсбергов.
Вторник
А ещё можно аниме-дорамы смотреть, тоже тренирует мозги.
А кому-то головоломки или кроссворды помогают.
Это индивидуально.
А математику лучше тоже с наставником начинать.
Попробуйте курсы хорошие какие-нибудь — разница будет на несколько порядков.
Среда
Норм.
Четверг
Знания — это не ум. Знания получить из интернета можно, ума набраться — нет.
Если ваши опытные коллеги не желают быть наставниками — надо бежать из такой конторы, она явно не заинтересована в вашем росте.
Черпать решения из гугла можно только если ты уже эксперт в технологии и нужно просто готовое решение для частного случая. Такое, которое ты можешь осмыслить и понять полностью, через все абстракции.
Пятница
Сомнительно.
Есть культ самолётников, есть антипаттерны, есть популярные методы написания хренового кода (в основном индусский и китайский). Их, конечно же, лучше обходить за сто вёрст.
А ещё есть красивый код.
К красоте, конечно же, стоит стремиться, но это, в некоторой мере, ещё и вопрос вкуса и стиля.
Суббота
Не совсем. Эта коммуникация говорит о факте вашей потребности в наставнике ввиду недостаточного уровня. Быть фрилансером на таком уровне просто нельзя (да, говнофрилансеры на это "нельзя" клали, отсюда и общий уровень качества работы фрилансеров). На более крутом уровне такой потребности нет.
Но социализация, конечно же, тоже к добру.
Воскресенье
Рассказать это работодателю — отличный способ для СНГ (и некоторых других мест) чтобы остановить повышение зарплаты себе на очень долгий период.
Zenitchik
13.10.2017 23:48велика вероятность стать очередной обезъяной-говнокодером.
Подозреваю, что она просто велика. Для большинства людей это потолок. Наверно, образование как-то улучшает ситуацию, но вряд ли радикально.
Goury
14.10.2017 05:52Хороший наставник улучшает ситуацию.
Будет ли он учителем или коллегой или кем ещё — не так важно.
rkosolapov
16.10.2017 12:45Образование и дисциплина радикально улучшает ситуацию.
Программирование — наука инженерная, тут не надо быть гением, чтобы решать 99% задач, нужна всего лишь дисциплина, база и, иногда, аналитический склад ума.
pm_wanderer
14.10.2017 03:17Вы меня извините, но в комментариях гремучая смесь снобизма, позерства и проявлений однобокого мышления. Те, кто кичится своим высшим образованием, фундаментальной базой и умением системно мыслить — где ваш научный подход к исследованию вопроса? Человек утверждает, что ему образование не нужно — протестируйте его знания и сделайте вывод. Оперируйте фактами, а не домыслами и стереотипами, якобы только вуз способен сформировать правильное мышление. Есть немало людей, что разбираются в алгоритмах на высоком уровне и без образования, как и масса выпускников престижных вузов, не способных отличить linked list от array.
И снова повторю любимую фразу программистов: it depends…rkosolapov
16.10.2017 12:49Какой-то конкретной группе людей, пишущих код, образование не нужно для решения их текущих задач, это правда.
Но мы-то не про конкретно этих людей и их конкретные задачи, а про стратегическую роль фундаментальных знаний в личности инженера. Инженера, а не низкоквалифицированного конвейерного рабочего (ничего не имею против рабочих, они тоже нужны и я их тоже уважаю).
В своё время ребята, которые выставляли кегли в кегельбане тоже говорили, что для их работы им образование не нужно. Потом их заменили бездушными автоматами.pm_wanderer
17.10.2017 17:27А без вуза фундаментальные знания получить нельзя?)
Ну и основная масса вакансий по программированию не предполагает наличия глубоких знаний у соискателя (1С и CMS). Нужен просто человек, который сможет обслуживать и сопровождать систему.
sbnur
14.10.2017 04:44Видно это такой тренд — кичится необразованностью — типа стать программистом самостоятельно — без должной образовательной базы.
Но высшее образование (типа университетского) прежде всего дает возможность создавать новые знания.
Поэтому возникает вопрос — какие информационные технологии или продукты созданы в России и получили международное признание.Singaporian
14.10.2017 06:46Ну правильнее задавать вопрос, что создают выпускники российских ВУЗов, а не что создают в России. Так как не все выпускники остаются в России и не все, кто создает что-то в России — выпускники русских ВУЗов.
Но даже если ставить вопрос так, то вот, наверняка еще не полный, список компаний, имеющих R&D в России:
- Alcatel-Lucent
- Allied Testing
- AVIcode
- Cadence
- Design Systems
- Chrysler
- Cisco Systems
- Columbus IT
- Dell
- Deutsche Bank (the bank’s 2nd largest development center in the world is in Moscow)
- Digia
- EGAR Technology
- EMC
- EMS
- Ericsson
- Hewlett-Packard
- Huawei
- IBM
- Intel
- InterSystems
- Jensen Technologies
- LG Softlab
- Motorola
- NEC
- NetCracker
- Nival Interactive
- Microsoft
- Nokia
- Nokia Siemens
- Quest Software
- RD-Software
- Samsung Research Center
- SAP
- Scala CIS
- SmartPhoneLabs
- Oracle (former Sun Microsystems)
- Tagrem Studio
- Teleca
- T-Systems
sbnur
14.10.2017 08:05Исключим выпускников российских вузов — речь идет о самоучках, как они себя сами и позиционируют — вот их примеры в области информационных технологий и ожидаются
Singaporian
14.10.2017 08:13-1Все вышеперечисленное — как раз они, самоучки. До недавнего времени почти все технические ВУЗы страны в лучшем случае преподавали Паскаль и Бейсик. Ну еще алгоритмы, которые нужны в очень узкой сфере, относительно того, что делают.
А то, как делать ежедневный рутинный программистский труд и выдавать продукт в ВУЗах не учат. По крайней мере не учили, когда это все создавалось и росло.vvpoloskin
14.10.2017 11:39Что-то я сильно сомневаюсь, что в перечисленные организации берут людей без в/о.
Singaporian
14.10.2017 11:57Во-первых, берут еще как. В бизнесе всех интересуют знания, а не бумажки.
Во-вторых, требование в/о не является свидетельством того, что оно дает знания.m52
14.10.2017 12:10Если и берут, то скорее всего людей, у которых УЖЕ есть большой опыт в индустрии, который позволяет закрыть глаза на отсутствие ВО. Но этот опыт надо где-то набрать. А во многих местах резюме даже не будут смотреть, если нет ВО, оно просто не пройдет первый уровень отбора HR и люди, которые смогут оценить уровень знаний, который у кандидата якобы есть, просто его не увидят.
Странный вообще какой-то вопрос, нужно ли ВО? Конечно нужно, но нужно именно по специальности. Плюс это свободные несколько лет, которые вы можете потратить на самообучение в т.ч. Если у кого-то нет возможности получить ВО, ну что поделать, надо пытаться без него. Но советовать это как нормальный старт карьеры — глупо, как по мне.
Singaporian
14.10.2017 16:15Это есть только в России. Например у нас (Израиль) в/о достаточно редкое явление. Это безумно дорого и сложно. При всем при этом регион считается вторым после Кремниевой Долины по размерам ИТ.
Люди не знают алгоритмы, но при этом досконально знают ядро Линукса и стэк TCP и программируют вполне конкурентноспособные продукты (диссекторы протоколов, например).
Но советовать это как нормальный старт карьеры — глупо, как по мне.
Если я утверждаю, что без в/о обойтись можно и хуже не станет, это не значит, что я не советую в/о. Я советую учиться всеми доступными способами. Даже если оно не пригодится.vvmtutby
16.10.2017 17:07Например у нас (Израиль) в/о достаточно редкое явление. Это безумно дорого и сложно.
«Капитализм ...» (с) А.Ш. в роли милиционера в фильме «Красная жара»
При всем при этом регион считается вторым после Кремниевой Долины по размерам ИТ.
Т.е. и малодоступность ВО поэтому «плюс»?Singaporian
16.10.2017 21:57Нет, не плюс. Я этого не говорил. Я сказал, что в/о не влияет на развитие ИТ и на уровень профессионализма.
«Капитализм ...»
Наша проблема — не капитализм. Просто из армии приходишь только в 21. А на выходе из армии тебя ждут звериные цены на все (пачка сигарет, например, — 700 рублей) и приходится сразу работать, а не учиться. Курить то что-то надо. Вот и курят маны, они бесплатнее, чем образование.vvmtutby
17.10.2017 08:53звериные цены на все
приходится сразу работать, а не учиться
Капитализм в фильм «Красная жара» обозначал и это, и многое другое Ж-)
vvmtutby
17.10.2017 09:01из армии приходишь
а программистские войска? ( без кавычек)
на развитие ИТ
Недавно ex.начальник из них как раз рассказывал, как и что…
Очень Союз хвалил за подготовку кадров.
Когда поток уменьшился, стали тренировать кадры прямо в качестве срочной службыvvmtutby
17.10.2017 09:54
Расшифровка тезиса:из армии приходишь
а программистские войска? ( без кавычек)
«Программирование — не для всех». Бывший киберразведчик учит айтишников на базе военных методик
Журналист, Q:
— В объявлениях о приёме на работу в израильские ИТ-фирмы
A:
в качестве требования к кандидату может быть указана
«служба в технологических подразделениях военной разведки
или МАМRАМ». Как вышло, что в Израиле именно
армия стала кузницей кадров для ИТ?
комплекс из психологических и IQ-тестов
и затем:
погружаются в сверхинтенсивный курс —
6-8 месяцев обучения по 12 часов в день.
Если человек успешно проходит курс,
он может присоединиться к армии
в качестве ИТ-специалиста на следующие 4 года.
В этом случае он уйдёт из армии не в 21 год, а в 25 лет,
уже с большим ИТ-опытом. После чего сможет
начать карьеру в израильском хайтеке.m52
17.10.2017 10:01обучения по 12 часов в день
И что, разве человек способен заниматься умственной деятельностью 12 часов в день?
vvmtutby
17.10.2017 10:07разве человек способен заниматься умственной деятельностью 12 часов в день?
В армии?
Ну, там есть и альтернативы — был по TV сюжет:
барышни ( это же про Израиль, кстати) в экипажах танков.
Будущие инструкторы ( т.е. не на фронт), но всё же…
vvmtutby
17.10.2017 10:02Тезис N2:
Там же, Q:на развитие ИТ
Недавно ex.начальник из них как раз рассказывал, как и что…
Очень Союз хвалил за подготовку кадров.
— У нас принято гордиться «старой инженерной школой»
A:
... наследие СССР...
— В СССР образовательная система была действительно
очень хорошая. В 90-е, когда Союз развалился и
в Израиль переехала целая волна советских инженеров,
это дало нам мощный толчок: мы получили
специалистов высочайшего уровня.
vvpoloskin
14.10.2017 13:43Не убедительно. По себе скажу так — собеседуя людей наличие в/о определяется просто по первым 5 минутам диалога, можно даже в резюме не смотреть. Как вы можете догадаться, относишься к таким кандидатам не с лучшей стороны. Может быть для типовой конвейерной работы наличие в/о и не имеет разницы, но для какого-то роста внутри организации его отсутствие уже проблема. Быть может причиной того, что люди без в/о в ИТ преимущественно работают на фрилансе или мелких конторах «как бы стартапах».
Приведите пример success-story в РФ работы человека > 3 лет в одной организации с реальным карьерным ростом.Singaporian
14.10.2017 16:08По себе скажу так — собеседуя людей наличие в/о определяется просто по первым 5 минутам диалога
А я с этим и не спорю. У вас причино-следственная связь только тут нарушилась. Отсутсвие в/о — следствие какой-то проблемы человека, а не наоборот. Просто еще один из симптомов и не более того. Но сам по себе не является определителем чего-либо, так как в обратную сторону это не работает.vvpoloskin
14.10.2017 16:15Судя по форумам и тостерам школьники всерьез думают, что лучше сразу на фриланс и нафиг не нужен институт.
Singaporian
14.10.2017 16:19Вот как раз потому, что институты себя дискредитировали. Образованию, особенно ИТ-шному, нужен абсолютно новый подход. Не подходит ему медицинский/юридический сценарий.
vvpoloskin
14.10.2017 16:38Давайте просто, ИТ-шному образованию на типовых кодеров необходимы ПТУ и жесткая категоризация профессий (да, специалист 4-го разряда). За все время мне так никто и не смог объяснить, чем отличается фронтэндер-верстальщик от слесаря.
Singaporian
14.10.2017 16:16Приведите пример success-story в РФ работы человека > 3 лет в одной организации с реальным карьерным ростом.
Я вам и с в/о не приведу таких примеров. Нужно быть очень немотивированным сотрудником, чтобы годами сидеть в одной компании. Со скуки же умереть можно.rkosolapov
16.10.2017 13:3914 лет работаю в одной конторе (правда, на разных должностях и в разных отделах/проектах), не скучно до сих пор :)
rkosolapov
16.10.2017 13:37Я 14 лет работаю в одной организации, у меня нет высшего образования.
Смена должностей (не люблю слово «карьерный рост» — мне не нужен рост, мне нужно чтобы интересно было) вот такая: qa engineer, qa manager, qa automation team lead, software architect, program manager.
Но. Я считаю, что высшее профильное образование нужно. Вполне может быть, что с моими мозгами да с высшим образованием я б достиг гораздо большего к этому моменту. А так много ресурсов ушло на то, чтобы восполнить недостаток образования.
Плюс такой ресурс, как ВУЗовские связи, у меня неполноценный. Сейчас это уже не так важно, но вот лет 10-15 назад это ещё имело значение.
В общем, дамы и господа, учитесь полноценно, в нормальном ВУЗе. Оно того стоит.
AlexPet
14.10.2017 15:50Могу сказать про RnD Huawei, который сидит у нас на м. Владыкино. Можно устроиться консультантом (на временный договор) или стажером еще даже будучи студентом, но получить хорошую должность и з\п без в\о от серьезного вуза, а еще лучше ученой степени (больше половины, на мой взгляд — кандидаты и доктора наук) — просто невозможно. И да, китайцы еще бОльшие формалисты, чем многие наши госучреждения.
Singaporian
14.10.2017 16:10Возможно, у них такая специфика продукта, что надо иметь фундаментальные знания по наукам, а не только писать код уметь и знать фреймворки.
vvpoloskin
14.10.2017 16:33Нет. Им надо уметь сравнивать результаты работы китайской прошивки для сетевого оборудования с текническими стандартами RFC/IEEE/3GPP. Для этого требуется усидчивость и внимательность в прочтении реально объемных технических текстов, получения из них инфы именно по такому-то параметру BGP например. Человек без в/о не подойдет
Singaporian
14.10.2017 17:07Только это называется QA, а не программист. А тема статьи — программист-самоучка.
rkosolapov
16.10.2017 12:52До недавнего времени почти все технические ВУЗы страны в лучшем случае преподавали Паскаль и Бейсик
Мягко говоря, это неправда. Профильные ВУЗы всегда имели вполне приличные программы обучения.
vvmtutby
16.10.2017 21:26До недавнего времени почти все технические ВУЗы страны в лучшем случае преподавали Паскаль и Бейсик
Basic — УПК в школе ( и в соседнем учили не на нём, а на Fortran)
Времена — конец прошлого века, политех: Fortran, затем TP ( 1-ый курс), Modula-2, C++,
Prolog аж дважды, базы данных
Но, не как самоцель, а как основа конкретных областей создания ПО
Впрочем, в том же ВУЗ-е:
Quick Basic — после лекций, у физиков была лаборатория с свободным доступом:
надо было только в журнале записаться на конкретный компьютер
Singaporian
14.10.2017 08:17Я даже больше скажу. Все выпускники ВУЗов — тоже по сути самоучки. Они все равно что-то сидели и сами разбирали, потому что им интересно. Подойдите к любому разработчику, поймаете его на том, что он делает и спросите, где он этому научился. Весь этот ВУЗ — топор в каше.
Я вот учился строить газо-турбинные двигатели в авиационном. Меня учили от и до. Со 100%-м покрытием теории и практики. Я не сидел по вечерам, чтобы получить что-то, что мне ВУЗ не дал. Нет такого у программистов.sbnur
14.10.2017 09:51Перенесите отсутствие базовой вузовской подготовки на такие отрасли знаний, как математика, физика, медицина и так далее.
Если профессиональное программирование доступно всем, то оно является недоотраслью знания скорее всего — просто некое ремесло — натаскался и впередSingaporian
14.10.2017 10:07В медицине пока не закончите 7 лет (включая ординатуру), стартовать нельзя. В юриспруденции тоже самое. В инженерии. В архитектуре.
(математика и физика — не профессии, а науки, поэтому про них не говорю)
А в программировании можно начать почти сразу и почти без знаний. Ну… получается да, ремесло.
Ну серьезно, ну какой процент вакансий программистов требует знание алгоритмов, матриц и деревьев? Да днем с огнем не сыщешь. А больше ничего особо институт не дает.sbnur
14.10.2017 10:57именно из-за отсутствия указанных знаний и пишется г-код
и поэтому такого кода много
Что касается физики и математики — это профессии и науки, как и другие отрасли знаний — на всякий случай напомню по этим специальностям защищаются диссертации.
Кстати, как и по программированию — подумайте об этом — - хотя можно всю жизнь прожить подмастерьем, питающимся крошками знанийSingaporian
14.10.2017 11:09Г-код — это не код без матриц, деревьев и алгоритмов. Это код нарушающий принципы SOLID, YAGNI, KISS, DRY и многих других. Я видел сотни серьезных качественных приложений без матриц и без деревьев — они там просто неприменимы, потому что в 99% случаев логика приложений намного примитивнее. Код не станет красивее, если к нему сбоку прилепить алгоритм. Это инструменты для достижения целей, а не подходы решения.
По поводу физики и математики: диссертации защищаются не по специальностям, а по дисциплинам. Профессия человека, который занимается чистой физикой, называется лаборант, доцент или профессор. А не физик.
В частном секторе такой профессии вообще нет. В лучшем случае инженер.sbnur
14.10.2017 12:15Явный признак самоучки — путаница в терминах
- По специальности — см http://www.dissercat.com/content/urboekologicheskii-podkhod-k-gradostroitelnoi-strukture-goroda
- По лаборанту — это должность
- доцент или профессор — это ученое звание, а также должность (дается по итогам учебной работе в учебном заведении — требует нужную ученую степень, как правило, или большой педагогический стаж)
- Ученая степень дается по защите диссертации
Поэтому любой специалист может иметь ученую степень, если по его специальности есть защиты диссертаций, и может иметь ученое звание, если работает в учебном заведении. - Дисциплина — это название предмета, который преподают в учебном заведении
- С чего вы решили, что физики, а также химики или математики не работают в частных предприятиях — как сказал бы Милюков — Что это? узость или невежество
Хотя с самоучками спорить бессмысленно — в силу их самоучености
Zenitchik
14.10.2017 13:32доцент или профессор — это ученое звание, а также должность
Со званиями всё не просто. Я знаю человека должность — доцент, звание — старший научный сотрудник, степень — кандидат технических наук.
sbnur
14.10.2017 14:05поясняю для самоучки
- в учебных заведениях — ученое звание доцент, профессор (также должность)
- в научных заведениях — были ученое звание младший научный сотрудник и старший научный сотрудник (в настоящее время упразднены), как должности сохранились
Singaporian
16.10.2017 22:08Немного о «самоучке»:
Номер WES (ECA#): «3081241IMM»
Master Degree. Gas Turbine Engines.
Убавилось гонора или продолжим письками меряться?vvmtutby
17.10.2017 09:08доцент, профессор
и
кандидат или доктор наук
— как оси X и Y, ортогональны
Просто, как правило, доцент ещё и к.н. ( и т.д.),
и это «сбивает с толку»
Methos
14.10.2017 09:43+1Любой человек — самоучка.
Неважно, как он учится, по книжкам ли дома, или в классе сидит с учителем, он учится САМ.
В него знания никак не закачаются автоматом, он должен учиться САМ.Singaporian
14.10.2017 10:08Кстати, да. Менторство/институты всего лишь рационализация подачи знаний. К тому же не всегда удачная.
djsv
14.10.2017 13:20Согласен со статьёй, а некоторые скептики в коментах не понимают, что фундаментальные знания можно получить и будучи самоучкой, умея правильно задавать вопросы гуглу.
Nondv
14.10.2017 13:54Вы без образования?
Ну-ка, сможете ли Вы решить задачу. В грубой форме она звучит так:
придумать алгоритм для нахождения N-ого числа Фиббоначи, быстрее классического O(N)
Я не буду описывать решение (которое я сам не смогу с ходу написать), напишу только следующее:
спойлерНужна линейная алгебра. С помощью матрицы 2х2 и операции перемножения матриц можно вычислить N-ое число Фиббоначи гораздо быстрее линейного алгоритма.
Человек без образования ее вряд ли решит, т.к. маловероятно, что человек будет просто так сидеть и читать про линейную алгебру (есть исключения, ес-но).
Теперь отойдем от данной задачи.
Я могу задать гуглу вопрос: линейная алгебра матрицы перемножение.
Но знание вопроса — это уже половина ответа. Как Вы будете знать, какой вопрос задать?Nondv
14.10.2017 14:02Тезис: образование дает намного более широкий угол зрения.
Современная тенденция, говорящая, что образование не нужно, просто основана на том, что разработка превратилась в ремесленную работу: возьми это — сделай то.
Большинство текущих вакансий на рынке — полнейший шлак, не требующий большого ума, но требующий знания технологий, которые в вузе не преподают.
Zenitchik
14.10.2017 14:30Большинство текущих вакансий на рынке — полнейший шлак, не требующий большого ума, но требующий знания технологий, которые в вузе не преподают.
Логично, что таким вакансиям соответствует среднее-специальное образование.
Nondv
14.10.2017 14:35Таким вакансиям и средне-специальное не нужно.
Просто все эти разговоры про "программисту не нужно образование" имеют смысл лишь в плоскости шлаковых вакансий.
С таким же успехом можно сказать, что среднему педиатру образование не нужно, т.к. он может с коллегой посидеть и основные симптомы, методы лечения, направления запомнить на практике.
(возможно, неудачный пример)vvpoloskin
14.10.2017 16:11Мне больше нравится пример с больши заводом. Среднему технику не нужно во, гайки и без него крутить можно. А проектировщиков и конструкторов надо 50 человек на тысячу техников. Беда в том, что современные сайтоклепатели и верстальщики считают себя проектировщиками и конструкторами.
rkosolapov
16.10.2017 13:42Можно (правда, не через гугл), но это дороже по ресурсам, чем ВУЗ закончить.
У меня нет диплома о высшем образовании, но есть (сейчас) база.
Лучше б я закончил ВУЗ.
Nondv
14.10.2017 13:44Не понравился первый же пункт:
считаю, что программисту ЛУЧШЕ быть самоучкой
Если Вы самоучка, каким образом Вы можете знать, лучше или не лучше?
Я понял, что Вы имели в виду, но все-таки подбирайте слова, пожалуйста;)
third112
14.10.2017 14:59Дело в том, что наука программирования постоянно развивается и итерируется, а значит старые методы мы смело забываем и осваиваем новые.
Значит сортировка методом пузырька и альфа-бета алгоритм устарели и их нужно забыть?
Ура дилетантизму и агрессивному любительству!
sayber
14.10.2017 17:40Я каждый день с удовольствием бегу в офис
Везет, я уже лет 8 в офисы не бегаю, разлюбил.
Люблю работать в своем кабинете дома. Тут тихо, приятно и удобно.
LangovoyAndrey
15.10.2017 11:46Судя по комментам, true-программисты, те, которые заканчивали профильные ВУЗы, плохо воспринимают самоучек. А что в ВУЗах вы были не самоучки? Я закончил достаточно серьезный ВУЗ, и на первом курсе, именитый профессор заявил, что процесс обучения — это процесс самообучения. И что его пара, это лишь 5% от того, что необходимо знать, прочитать, понять в свободное от лекций время.
Далее, из 5 летней ВУЗовской программы, на мой взгляд, приходится выслушивать достаточно много ненужного материала, т.е. время потраченное впустую. Да и чем собственно курсера или edx плохо? Там что, легко получать специализации? Отнюдь.sbnur
15.10.2017 13:10Если некто собирается делать шаурму (в Питере шаверму), то ему, наверное, невредно закончить кулинарный техникум
С программирование то же самое — в массе шаверма — но бывают все же шедевры типа nginxTallefer
15.10.2017 15:17Кстати, на редкость удачная аналогия! :) Скажем, взять просто хлеб — его надо уметь печь, пропорции там, ингредиенты, технологии, вот это все. А шаверма — взял, что под рукой было готовое, тяп-ляп, и в продакшон. %)
Idot
15.10.2017 17:46… а затем продавец шаурмы возмущается, что его не хотят без диплома брать шеф-поваром в ресторан, хотя он шаурму начал делать, когда обладатель диплома ещё на первый курс ходил.
vvpoloskin
15.10.2017 18:24В каждом городе есть шаурмячная, куда ходят толпы народа, в особенности милиция и скорая помощь. Так вот, вы может быть удивитесь, как правило в таких заведениях управляющий имеет в/о например технолога пищевого производства или хотя бы Специальное образование повара. Остальные, действительно, тяп ляп.
vvpoloskin
15.10.2017 15:11+1Вот не надо жалеть о ненужных знаниях и напрасно потраченном времени. Как правило человек, получивший в/о, просто уже сразу может 5 лет целенаправленно заниматься одним делом, писать грамотный текст, глубоко погружаться в сложную техническую литературу, да и хотя бы просто хотя бы грамотно разговаривать. Опыт подсказывает, что у кандидатов без в/о таких навыков нет
Posigrade
15.10.2017 15:20Опыт подсказывает, что у кандидатов без в/о таких навыков нет
но опыт подсказывает, что годится почти любое ВО, а не только профильное?
Опыт подсказывает
И причина имхо в том, что вуз не только развивает, но вуз — скорее фильтрует: в вуз идут именно такие — физически пригодные для подобной интеллектуальной работы. Если человек поступил и его не отчислили на первой сессии (если факультет честно отчисляет тех, кто не годен), то человек вероятнее всего способен «целенаправленно заниматься одним делом, писать грамотный текст, глубоко погружаться в сложную техническую литературу, да и хотя бы просто хотя бы грамотно разговаривать»Posigrade
15.10.2017 15:27скорее фильтрует: в вуз идут именно такие — физически пригодные для подобной интеллектуальной работы
читал лет 10 назад интервью с профессором какого-то знаменитого вуза, вроде MIT. Когда его спросили в чем секрет успеха, он сказал, что дело не в блестящих педагогах или ученых, а в том, что они отбирают для себя только блестящих студентов. Студенты достигнут высот, даже если их ничему не учить и всех преподов уволить, ведь все поступившие по природе своей сами не способны не учиться и не исследовать.
Posigrade
15.10.2017 15:13Судя по комментам, true-программисты, те, которые заканчивали профильные ВУЗы, плохо воспринимают самоучек
отнюдь. Самоучки вызывают и могут вызывать только уважение и трепет (Лейбниц или Фарадей, например). Плохо восприниматься могут дилетанты, а дилетанты часто заявляют, что они самоучки, поэтому имхо произошла девальвация термина «самоучка», поэтому самоучку, который говорит, что он самоучка, сегодня по дефолту принято считать дилетантом, увы.
Наглядно:
1)какой-нибудь JavaScript/Ruby/Python/Devops Rockstar не будет заявлять, что он самоучка, т.к. любому, кто в теме понятно, что систематическое образование, даваемое вузом, тут не очень требуется, а с другой стороны закончившие вуз, скорее всего высот в этом (JavaScript/Ruby/Python/Devops) достигли не через вузовскую программу, а самостоятельно. т.е. тут все скорее всего будут фактически самоучками.
2) Если программист из UBS AG или NASA говорит, что он самоучка — это не просто нормально, а великолепно (т.к. человек самостоятельно смог освоить вузовский курс и пойти дальше).
3) Если непонятно кто, говорит, что он самоучка, ему в ответ говорят «самоучки — тут все (типа по логике вашего профессора), устройся без обучения в вузе работать в JPL NASA, тогда будет о чем поговорить. Но раз ты на автодидактике акцент ставишь, значит, скорее всего, у тебя других достижений нет, значит ты дилетант».sbnur
15.10.2017 15:30С Лейбницем пальцем в небо — он учился в трех университетах и закончил обучение защитой диссертации.
Что касается Фарадея (еще можно добавить Зельдовича, как академика без диплома), то они просто работали с должности лаборанта, набирая знания от старших коллег непосредственно
Думается остальные самоучки лишены такой возможности и варятся (скорее парятся) в собственном сокуPosigrade
15.10.2017 15:52С Лейбницем пальцем в небо
емнип учитель маленького Готфрида возмущался, что Лейбниц лез в учебниках вперед заданного и наказывал его за это. Потом какой-то умный муж был у них в гостях, он пообщался с Готфридом, удивился и убедил отца Готфрида: 1) отменить занятия с учителем (которого Готфрид превосходит умом) 2)рарешить пацану пользоваться отцовской библиотекой. Несколько лет паренек учился сам, к 12 годам сам выучил латынь, греческий и т.д., а когда к 14 годам в отцовской библиотеке не осталось непрочитанных книг, Лейбниц в поисках новых знаний поступил в универ.
Что касается Фарадея
Фарадея лаборантом не просто так устроили (а придя в восхищение от его уровня). До лаборантства он дошел своим умом (он был емнип из бедной семьи и с малых лет работал кем-то типа курьера или газетами торговал, но это не мешало ему самостоятельно заниматься).Posigrade
15.10.2017 16:02выяснил: Фарадей с детства работал курьером и преплетчиком в книжном магазине, поэтому имел возможность читать книги (т.е. не парился в собственном соку).
tyomitch
15.10.2017 15:58Самоообучение и вышка — это не альтернативы одно другому, а две части одного целого.
«Самоучка после вуза» за пояс заткнёт хоть «самоучку без вуза», хоть дипломированного «специалиста» без самостоятельной практики.hexploy
16.10.2017 14:44Возражу. «Вышка» и самообучние — есть одно и то же. Получение знаний из какого-то источника, путём самостоятельного их осмысления.
Эффективность обучения с живым наставником (когорого, в случае российского ВУЗа, ещё и нельзя выбрать) и «наставником-книгой» у разных людей разная.
А кто кого заткнёт, зависит исключительно от знания людьми конкретной темы.
JBMurloc
16.10.2017 09:36Мне кажется, что автор немного запутался.
— Во-первых. Ни в одном нормальном ВУЗе не учат одно только программирование, как таковое. Это же бесполезно. Учат алгебру, модели, паттерны и всякую другую теорию, которая не когда не устареет и всегда будет помогать в решении задач, потому как универсальна. Ну и немножко учат языки программирования, но это не больше 10% программы ВУЗа.
— Во-вторых. Миф о том, что обучение в ВУЗе лишает Вас способности учиться самостоятельно — это выдумка лентяев, которым после лекций в ВУЗе влом дома дополнительно позаниматься.
— В-третьих. Обучение в ВУЗе даёт Вам не знания и не корочку, а систему. Если не в ВУЗе, то где-то Вы эту систему всё равно должны взять, иначе из Вас не получится специалиста, обладающего законченным циклом знаний и навыков, необходимых для того, что бы доводить решение задач до логического конца.
Хотя с полезностью математики я соглашусь. Сам закончил прикладную математику и по 10 раз в день благодарю всех преподавателей дискретки, алгебры, матана и других дисциплин за ту математическую базу, которая ежедневно упрощает мою жизнь на работе. Должен только заметить, что у чистой математической теории, в отличие от теории ИТ-шной, есть одно существенное ограничение, которое, как раз, и отпугивает многих. Математика часто кажется бесполезной, потому как у неё очень и очень большая критическая масса, то есть для того, что бы математика была полезна программисту, он должен знать её очень и очень много и очень хорошо. И лишь тогда она будет приносить плоды, окупающие время, затраченное на её изучение. Поверхностные знания математики действительно совершенно бесполезны.rkosolapov
16.10.2017 13:48Не соглашусь, что поверхностные знания математики бесполезны. Я самостоятельно изучал тервер, теоркат, дискретку (графы, комбинаторика), матстат, ну то есть у меня как раз поверхностные знания, и это ОЧЕНЬ помогает мне даже сейчас, когда я вообще не программист, а програм менеджер.
JBMurloc
16.10.2017 21:14Похоже я не совсем чётко разъяснил. Под поверхностными знаниями я понимаю именно поверхностные. А если Вы столько всего поизучали и, вдобавок, ещё и что-то поняли, то это точно не поверхностные знания.
a4k
Имхо лучше поизучать написанное давным давно Фаулером, Макконнеллом, бандой четырех и писать нормальный код чем говнокодить в соответствии с новыми веяниями.
dom1n1k
Да, по статье видно, что автор пишет о том, в чём разбирается, мягко говоря, поверхностно.
madfly
Это удел самоучек. Обучение в вузе полезно не тем, что там научат чему-то конкретному, что можно вот так вот взять и сразу применять в работе (блаженны студенты, считающие, что для овладения специальностью достаточно успешно сдавать экзамены в сессию). Обучение в вузе полезно тем, что дает именно базу, представление, пусть и на пальцах, о существующих методах решения задач, областях науки, занимающимися теми или иными направлениями. Это не дает каких-то глубоких знаний, но здорово расширяет кругозор, задает направления для самостоятельного поиска. С самоучкой же часто бывает ситуация, когда он в какой-то области может, шутя, заткнуть вузовского профессора за пояс, а уже в смежной не знает базовых вещей и пытается изобретать велосипед с треугольными колесами. Нет, осилить вузовскую программу конечно можно и самостоятельно. Но в вузе это делается на порядок проще.
soomrack
Учиться самостоятельно, если умеешь это делать (системный подход!),
это эффективно и хорошо.
Но!
Учитель может научить тебя в 10 раз быстрее, тем самым экономя твое время и позволяя узнать много больше. Проблема в том, что такого учителя найти не просто. Особенно для современных технологиях. А так, чтобы в российском ВУЗе почти все учителя были такие — ну это фантастика! В итоге, обучение в ВУЗе может даже замедлить развитие (суммарно).
Что же касается онлайн обучения… На мой взгляд, для самоучки оно очень полезно, т.к. даст системный взгляд на предмет, очертит то, что он потом должен будет выучить сам. Онлайн обучение даст ускорение примерно раза в 2-3. Без личного контакта большей продуктивности добиться сложно.
PS: есть еще совсем трудные темы, которые в принципе самостоятельно выучить скорее всего не получится, нужен наставник, который в первый раз «подтолкнет, чтобы преодолеть планку».
madfly
Если заинтересованы в результатах, необходимо использовать обучение в вузе и самостоятельное обучение совместно. Это дополняющие друг друга инструменты, а не взаимоисключающие. Грубо говоря, преподаватель в вузе объясняет, в какую книгу лезть, когда требуется решить ту или иную задачу, подкрепляя эту информацию примерами на пальцах. Ситуаций в жизни разработчика может быть очень много и разных, поэтому месячным курсом тут не обойтись. Но разжевать подробно такие объемы информации преподаватель не сможет. Да и студент не усвоит. Задача студента не забыть то, что ему рассказывал на лекциях преподаватель и, пользуясь этими знаниями, уже копать вглубь в зависимости от ситуации.
Конечно, невозможно отрицать, что уровень преподавателей падает с каждым годом.
soomrack
Так все и делают. Я это наблюдаю. Студенты уже кладут болт на многие «неинтересные» занятия и смотрят coursera и edx. Собственно, айтишников-студентов российские вузы уже потеряли, они учатся у других людей.
JekaMas
То есть по сути, студенты к предметам наших ВУЗов добирают предметы ВУЗов зарубежных. Удивительно и прискорбно.
chersanya
На курсере достаточно и курсов наших вузов — www.coursera.org/about/partners/ru
Слышал вполне позитивные отзывы о качестве.
soomrack
Это скорее хорошо. Плохо другое, что есть области в которых мы были лидерами, и есть результаты наших ученых, которые сейчас переоткрываются западными (это вообще общая проблема, характерна не только для России), а преподавателей, которые бы этому качественно научили бы — нет. Преемственность знаний давно потеряна. И вот когда студент слушает иностранные курсы, овладевает методами, которые являются просто частным случаем более общих методов, носящих имя наших ученых, но студент их не знает. Вот это действительно прискорбно.
Singaporian
Согласен. Я взял парнишку на обучение. Бесплатно, просто для души. Решил сразу дать ему нормальную базу и развить кругозор. Он у меня два месяца на Линуксе пилил кластера MySQL, размечал диски (включая LVM и DRBD) и настраивал веб-сервера, сервера мониторинга. Линукс знает теперь как свои пять пальцев.
Потом надрессировал его на Питоне, подробно критикуя каждую строчку. Удостоверялся, что он точно понимает, что я ему объясняю. Причем, давал самые разноплановые задачи, включая 0MQ, PyQT, ncurses… И заставлял писать тесты. И деплоил он все сам себе сначала на Vagrant-->VirtualBox, а теперь уже на Docker.
На это ушло всего лишь три месяца.
Сейчас он проходит свои первые собеседования. Каждое собеседование с каким-нибудь заданием. Я заставляю его делать все, что ему дают на любом собеседовании. Вон, последнее пришло вообще на PHP (YII) + swagger — сидит, пилит как миленький. Это еще одна мысль, к которой я его приучаю: программист пишет на чем подходит, а не на чем умеет.
Вот уж не думаю, что за столько короткий срок самоучка может получить такой кругозор и обширный набор знаний. Причем плотно утрамбованных знаний.
claygod
Вспомнился старый рассказ (или книга, не помню) под названием «Настоящие программисты не используют Паскаль». Там описывалась в одном месте похожая ситуация с новичком, и то, как он обрадовался, когда ему дали в конце концов учебник ))
Плюсую за энтузиазм и бескорыстие.
Singaporian
Спасибо. Сейчас загуглю, что за рассказ такой. Не читал еще.
LonelyDeveloper97
Видимо у всех разный опыт.
За пару лет в вузе, на большинстве дисциплин я только и делал, что собирал треугольные колеса.
Более того, попытки возразить, что колеса бывают и круглыми, или, о боже, собрать велосипед с ними — приводят к санкциям со стороны преподавательского состава.
Не собираюсь делать излишних обобщений, поэтому уточню, что примерно 10% преподавателей демонстрировали другой подход и что речь идет только о СПБГЭТУ (ЛЭТИ).
PS
На правах ИМХО: для расширения личного кругозора, как ни странно, лучше всего делать что-то самому. Читать статьи на незнакомые темы, проходить курсы, которых навалом вокруг, общаться с людьми на профильных ресурсах или IRL, etc.
Потому что без этого(что с вузом, что без вузa) кругозор расширяется весьма неохотно.
Serge78rus
Привет коллеге по ЛЭТИ. Хотя я поступил туда в далеком 1981, но мой опыт обучения там во многом совпадает с Вашим. Большей частью знаний, что я получил за студенческие годы, я обязан ЛЭТИшной лаборатории Спортивной Радиоэлектроники, работу в которой я совмещал с учебой. От тех же людей, которые ведут занятия со студентами, при совместной работе с ними, узнаешь гораздо больше.
struvv
На самом деле очень сложный вопрос, чтобы с места в карьер выдавать резюме без какого либо исследования, плюс по таким упрощённым категориям, как самоучка vs окончил ВУЗ
dcc0
Новые веяния — это упрощение задач новыми инструментами. Вот вам мнение Эдсгера Дейкстры: «программирование в сути своей — чрезвычайно сложная научная и инженерная деятельность, и никакие новые методы и инструменты не смогут кардинально изменить это положение — они лишь освобождают программиста от части рутинной работы».