Pull to refresh

Comments 229

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

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

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

Учиться самостоятельно, если умеешь это делать (системный подход!),
это эффективно и хорошо.

Но!
Учитель может научить тебя в 10 раз быстрее, тем самым экономя твое время и позволяя узнать много больше. Проблема в том, что такого учителя найти не просто. Особенно для современных технологиях. А так, чтобы в российском ВУЗе почти все учителя были такие — ну это фантастика! В итоге, обучение в ВУЗе может даже замедлить развитие (суммарно).

Что же касается онлайн обучения… На мой взгляд, для самоучки оно очень полезно, т.к. даст системный взгляд на предмет, очертит то, что он потом должен будет выучить сам. Онлайн обучение даст ускорение примерно раза в 2-3. Без личного контакта большей продуктивности добиться сложно.

PS: есть еще совсем трудные темы, которые в принципе самостоятельно выучить скорее всего не получится, нужен наставник, который в первый раз «подтолкнет, чтобы преодолеть планку».

Если заинтересованы в результатах, необходимо использовать обучение в вузе и самостоятельное обучение совместно. Это дополняющие друг друга инструменты, а не взаимоисключающие. Грубо говоря, преподаватель в вузе объясняет, в какую книгу лезть, когда требуется решить ту или иную задачу, подкрепляя эту информацию примерами на пальцах. Ситуаций в жизни разработчика может быть очень много и разных, поэтому месячным курсом тут не обойтись. Но разжевать подробно такие объемы информации преподаватель не сможет. Да и студент не усвоит. Задача студента не забыть то, что ему рассказывал на лекциях преподаватель и, пользуясь этими знаниями, уже копать вглубь в зависимости от ситуации.
Конечно, невозможно отрицать, что уровень преподавателей падает с каждым годом.

Так все и делают. Я это наблюдаю. Студенты уже кладут болт на многие «неинтересные» занятия и смотрят coursera и edx. Собственно, айтишников-студентов российские вузы уже потеряли, они учатся у других людей.

То есть по сути, студенты к предметам наших ВУЗов добирают предметы ВУЗов зарубежных. Удивительно и прискорбно.

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

Согласен. Я взял парнишку на обучение. Бесплатно, просто для души. Решил сразу дать ему нормальную базу и развить кругозор. Он у меня два месяца на Линуксе пилил кластера MySQL, размечал диски (включая LVM и DRBD) и настраивал веб-сервера, сервера мониторинга. Линукс знает теперь как свои пять пальцев.

Потом надрессировал его на Питоне, подробно критикуя каждую строчку. Удостоверялся, что он точно понимает, что я ему объясняю. Причем, давал самые разноплановые задачи, включая 0MQ, PyQT, ncurses… И заставлял писать тесты. И деплоил он все сам себе сначала на Vagrant-->VirtualBox, а теперь уже на Docker.
На это ушло всего лишь три месяца.
Сейчас он проходит свои первые собеседования. Каждое собеседование с каким-нибудь заданием. Я заставляю его делать все, что ему дают на любом собеседовании. Вон, последнее пришло вообще на PHP (YII) + swagger — сидит, пилит как миленький. Это еще одна мысль, к которой я его приучаю: программист пишет на чем подходит, а не на чем умеет.

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

Не собираюсь делать излишних обобщений, поэтому уточню, что примерно 10% преподавателей демонстрировали другой подход и что речь идет только о СПБГЭТУ (ЛЭТИ).

PS
На правах ИМХО: для расширения личного кругозора, как ни странно, лучше всего делать что-то самому. Читать статьи на незнакомые темы, проходить курсы, которых навалом вокруг, общаться с людьми на профильных ресурсах или IRL, etc.
Потому что без этого(что с вузом, что без вузa) кругозор расширяется весьма неохотно.
Привет коллеге по ЛЭТИ. Хотя я поступил туда в далеком 1981, но мой опыт обучения там во многом совпадает с Вашим. Большей частью знаний, что я получил за студенческие годы, я обязан ЛЭТИшной лаборатории Спортивной Радиоэлектроники, работу в которой я совмещал с учебой. От тех же людей, которые ведут занятия со студентами, при совместной работе с ними, узнаешь гораздо больше.
UFO just landed and posted this here
Новые веяния — это упрощение задач новыми инструментами. Вот вам мнение Эдсгера Дейкстры: «программирование в сути своей — чрезвычайно сложная научная и инженерная деятельность, и никакие новые методы и инструменты не смогут кардинально изменить это положение — они лишь освобождают программиста от части рутинной работы».
UFO just landed and posted this here
Применительно к вэбдеву, я не слышал про адекватное профильное образование с современными программами. Я не спорю, что базис нужен и по тем же паттернам можно найти нормальный курс. Но современный вэбдев слишком быстро развивается и слишком многообразен, уж для классических ВУЗов то точно.
А что веб-дев? То, что называется «современным вебом» — это набор API и языков, ничего концептуального, чего в вузике не расскажут, там нет. В принципе высшее образование не про то.
Ну вот только теорию и расскажут. А кулаки набить не на чем там.
UFO just landed and posted this here
Кто-то связывает студенту руки? Бери, да практикуйся. По своему опыту могу сказать, что адекватные преподаватели всегда приветствуют инициативу.
Нет, студентам никто руки не связывает. Но при чем тут тогда «вузик»?
Вузик даёт то, что не даёт практика.
Практика даёт то, что не даёт вузик.
В современном вебдеве не появилось ни одной новой вещи за последние 20 лет (ну то есть за всё то время, что он существует). Всё, что есть — это теория прошлого века.

Человек с профильной («профильной» — имеется в виду «програмистской») базой не испытывает никаких проблем с так называемым «быстрым развитием», он просто смотрит на что-то «новое», и вспоминает, что это уже было в common lisp в 1995 году, ну или там у Танненбаума в книжке примерно в то же время. Не суть важно, в какой именно теории это всё раскрыто было давным давно, главное, что оно было раскрыто, и осталось в голове в виде теоретической базы.

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

ВУЗ даёт именно базу.

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

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

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

Которые гораздо легче и дешевле изучить самому.

Ага, а потом такой вот самоучка не понимает, с какого перепуга его бизнес-логика работает неадекватно. А просто он не слышал о разнице между средним арифметическим и медианой (пример из жизни). Он ведь вебдев учил, а не основы статистики. Или почему его SQL-запросы ставят базу колом (видимо движок плохой, надо срочно модный nosql какой-нибудь всунуть, про который на форумах пишут — вот где мощь-то будет!). Он ведь вебдев учил, а не комбинаторику. Зато легко и дешево, нахватался азов за пару месяцев и смеется над дураками, 6 лет штаны просиживающих.

И говорит — «Нужно больше серверов!» (случай из жизни)
UFO just landed and posted this here
В том случае было хранение числа (которое использовался как индекс) в текстовом поле б.д. без индекса. Поиск по нему тормозил.
Но при этом человек, который это делал, был весьма неплохим креативщиком, много чего мог сделать (и делал) в вебе, т.е. такой самый грустный случай человека без профильного образования.

Это не про профильное образование, а про математиков vs креативщиков.
Креативщики в типы данных могут только если заставить.

UFO just landed and posted this here
А в какой тип данных писать фин. данные?
Double и float может быть проблемным с т.з. округления. Когда вы отбрасываете несколько цифр в расстоянии до Солнца — это норм, но когда вы округлите хотя бы на 1 копейку/цент счет, то есть шанс что вас знатно вы*бут бухи, налоговики и пр. им сочувствующие. Поэтому если у вас нет специального типа или структуры, то только целые числа.
фин данные — они очень уж разные. Вы сейчас о конкретно виде — accounting/money. А вот там всякие расчеты кривых доходностей — там бывает иногда и вышка, и числа вещественные и т.п.
UFO just landed and posted this here
Или почему его SQL-запросы ставят базу колом

Решается обычной практикой.
Кстати, меня оень расстраивает, что комбинаторику не начинали преподвать в шолах. Все же начинается там с простого сложения и умножения. Может быть в математических школах преподают сейчас, но в обычных, нам давали задачи из комбинаторики, маркируя их звездочкой, факультативно, например посчитать то же кол-во слов в языке с 5-буквенным алфавитом, но не объясняли как такие задачи решать и почему.
У нас в более или менее среднестатистическом ФМЛ в 8-9 классах был предмет «логика», куда собрали всю математику, которая не уместилась в традиционные алгебру-геометрию. Там были основы и комбинаторики, и теории вероятностей, и дискретки, и много чего еще.
Могу проиллюстрировать ваш тезис конкретным примером. Предположим, перед пэхапэшником встаёт задача: «закодировать бинарные данные в base32».
Что делает погромист, академиев не кончавший? Гуглит определение base32 — «данные разбиваются на блоки по пять битов, каждый блок кодируется одним символом» — и кодит какой-то кошмар вокруг decbin(ord($string[i])), разбиения строки $binval блоками по пять символов, и потом bindec(substr($binval)). Потребление памяти как минимум восьмикратное, а возня со строками настолько неэффективная, что волосы встают дыбом.
Но на SO это топовый заплюсованный ответ, ещё и с чьим-то комментарием «This is the only correct answer.»
Более того, такие пэхапэ-самоучки облекают свой код в библиотеки [1] [2], которые потом другие программисты на SO советуют [1] [2], не заглядывая внутрь кода. Нуачо, всё работает же!

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

Нет. Самому это всё изучать сложнее и дороже. У меня нет высшего образования, код я пишу с 1991 года, на то, чтобы получить базу, которая даётся в ВУЗе (хорошем), мне понадобилось лет 12 где-то. Это больше чем в два раза больше, чем тратится времени в ВУЗе.
UFO just landed and posted this here
> Проведём маленький эксперимент, если Вы не против — мне любопытно чего такого я не знаю на фундаментальном уровне, из того, что преподают в ВУЗах в качестве базы.

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

Вот примерный список, я надеюсь, он после обкатки скорректируется. Общий объем 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

** При этом стоит учесть что запланированы еще курсы по Теории графов, Дискретной математике, Экстремальным задачам, Машинному обучению, Теории сложности и пр.пр.пр. Т.е. это просто фундаментальный курс по алгоритмам и структурам данных, который является точкой отсчета для всего остального (ну как курс по Математическому анализу).

*** Это несколько больше чем я сам знаю, так что это еще и мой план для себя подтянуть неизвестные/забытые темы. Обсудив его с коллегами, на предмет кто будет читать мы пришли к выводу, что мы все были бы рады и сейчас прослушать такой курс.
UFO just landed and posted this here
UFO just landed and posted this here
Вот не знаю как бы я решал эту задачу не зная нескольких алгоритмов.

А с помощью каких решали? Правда, интересно. У меня нет ТАКОЙ базы, чтобы решить такую задачу без велосипедов
UFO just landed and posted this here

Машинное обучение — это не только дип лирнинг. И NN тоже относится к машинному обучению.
Не знаю за что минусят только.

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

> но что интересно — на практике не припоминаю чтобы хотя бы 5% применялось в бизнесе

Есть разные цели обучения.
Когда я разрабатывал эту образовательную программу (часть относящуюся к компьютерным наукам), я исходил из следующих принципов:

Первый принцип: никаких ограничений по выбору профессии в области CS.
(Машинное обучение, ИИ, базы данных, веб...) Это не значит, что он должен уметь делать все сразу, это значит, что не должно быть фундаментальных препятствий к быстрой прокачке навыков.

Второй принцип: возможность продолжить обучение по направлениям математика или CS.
Например, пойти в магистратуру и развиваться в области криптографии и информационной безопасности; или развиваться в области расчетов движения механических объектов — бпла и пр.; или уйти в область робототехники…

Третий принцип: полученная квалификация не должна устареть за 10 лет.

** Конечно, это не массовое образование (тут набор вообще планируется в 20 человек), но это спецы, которые должны будут решать задачи, составляющие 1-5% от бизнеса (по моему опыту), но без решения которых остальные 95-99% бизнеса лишены смысла.

*** И да, я считаю, что должна быть система институтов или ПТУ, которая будет массово (тысячи в год) и быстро (за 1-2 года) готовить конкретных программистов под конкретные простые задачи, для конкретных бизнес-потребностей — администрирование MySQL; PostgreSQL; настройка Nginx; Python для веба; и т.д. и т.п., т.е. набор небольших, но очень конкретных навыков. Система должна быстро подстраиваться под потребности бизнеса. Впрочем, сейчас эту нишу пытается занять онлайн-образование. Правда статистически эффективность пока не очень.

Ваш комментарий достоин добавления в закладки :)

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

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


Собственно для этого и нужен университет: получить представление о базе и о том, что есть. Реальные навыки в университете получаются в R&D лабораториях.

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

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

Серьёзно? Программа-максимум — чтобы человек мог любой из перечисленных алгоритмов написать из головы? Вы сами-то можете так? И зачем это нужно?

Некоторые мои знакомые — могут. Но это скорее спорт, чем практика…
Но где я написал, что нужно все сходу «написать из головы»?
Цель «максимум» — чтобы человек знал «из головы» основные идеи и схему в общих чертах любого из перечисленных алгоритмов. Это позволяет ему эффективно планировать решение задач, адаптируя базовые алгортитмы под конкретные потребности.
Если ему нужно посмотреть в интернете как что реализуется, то это конечно не очень хорошо, т.к. затормозит написание кода

Я об этом.

«не очень хорошо, т.к. затормозит написание кода, но и не очень плохо (если только ему не приходится постоянно это делать).»

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

Но это часть программы, и его составление и разбивка по семестрам делалась в соответствии с тем, что будет читаться вокруг. Практика программирования это фактически x2 по часам. Курс теории графов — еще +. Курс теории экстремальных задач… Курс теории сложности… Много чего. В итоге этот курс по многим строчкам это не столько теория, сколько связь между хорошей математикой и конкретной практикой — то, чем и является «алгоритм» — это еще не программа, но уже и не теорема.
Да, вижу что много чего. Примерно как учиться читать и одновременно проходить Войну и Мир с Преступлением и наказанием. Или довести количество отжиманий от пола до тысячи за одну неделю. Это и называется разбалансированность. Стандартная беда — перечислить всё что есть в математике и убедить себя что всё это крайне необходимо ибо хорошо и знаний много не бывает и сё такое.
А можно тоже самое, только с ссылкам на почитать?
И это же сколько лет это потребуется узучать?
(сколько лет потребуется чтобы написать учебный материал)
Ссылки? Ну с этим сложно. Стандартный, всеми рекомендуемый, набор книжек про алгоритмы покрывает 80% списка, но покрывает сильно избыточно.
Курс начнется весной 2018 г., соотв. первый раз он закончится осенью 2019 г., соответственно, к концу первого прочтения будет первое приближение по материалу и конспектам… Может удастся некоторое количество лекций отснять.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here

Студент ВУЗа тоже в основном "самообразуется". ВУЗ больше направляет самообучение, чем обучает. Ну и дисциплинирует — студярам это нужно (возраст-с).

UFO just landed and posted this here
Синк эбаут зис, гайс.

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

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

не задавай вопросы коллеге. Задавай их гуглу.

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

если открываете проект, а там сплошной говнокод: время делать ноги. Ищите место где говнокода меньше.

Ахх, где же этот идеальный мир без говнокода...?

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

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

P.S. Извините, не удержался.
Про дебилов… наверное это зависит от объема собственых фундаментальных знаний. Вполне естественно чуствовать дискомфорт если ты вообще ничего не понимаеш.
не задавай вопросы коллеге. Задавай их гуглу.

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

В первый год работы я спрашивал у гугла, что спросить у коллеги, чтобы правильно сформировать вопрос. Примерно в 50% случаев гугл отвечал на первоначальный вопрос.
Когда я только начинал, я думал, что меня будут учить. Я думал задавать вопросы нормально. А мои учителя бурчали и отнекивались… не задавай вопросы коллеге. Задавай их гуглу.


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

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

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

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

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

Видимо, у вас очень много свободного времени. Ну или Вы — воспитательница в детском саду...


Времени как раз постоянно не хватает. Да, раздражает, когда отвлекают, но я стараюсь резко не отвечать. Чаще всего, забавные затыки, которые выявляются минут за пять. Лучше сразу потратить время и научить правильно, чем в будущем исправлять баги, которые полезут из не умело написанного кода. Да и мир it-тесен, ни когда не знаешь, кого встретишь на новой работе и с чьим кодом придется работать…
Сразу видно, вот честное слово, что человек не учился в вузе. Есть у нас, у тех, кто особенно отсидел 6 и более лет за партой, причём не в каком-то шарашном эконом псевдовузе, какое-то отношение критическое к этому всему. Понимание, что всё это бред, ерунда и что нет ничего крутого. прикольного вау и прочего.

Вот, что точно умеет делать вуз, дак это даёт понимание какой-то реальности, учит мыслить более рационально.
Время снова браться за математику.
Вот не напишет такое человек с дипломом, хотите верьте, хотите нет.
UFO just landed and posted this here
Не надо стесняться того, что вы становитесь лучше.… Сразу скажу: если открываете проект, а там сплошной говнокод: время делать ноги. Ищите место где говнокода меньше.

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

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

А сказал бы честно как есть, не было бы конфликта.

Согласен. Но тогда не было бы конфликта)))

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

Нет, не принимал. Мне чет даже не пришло такое в голову тогда.
Теперь буду мучаться спустя 15 лет…

Я подумал, что начальник кафедры не принимал Ваш рапорт на отстранение от обучения на военной кафедре.
В голову не пришло его подать? Ну, Вы, блин, даёте...

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

Не понял, вы конфликтом гордитесь?

Это было на правах юмора вообще-то. Я даже смайлики поставил.
если открываете проект, а там сплошной говнокод: время делать ноги

То есть Вы не умеете читать чужой код.
А поскольку, обычно через год свой собственный код, когда его подзабыли выглядит как чужой
=> то значит Вы пишете WRITE-ONLY-CODE.

Вы так говорите потому что вам еще не встречались проекты целиком состоящие из говнокода?

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


PS и что-то мне подсказывает, что для тебя алгоритм быстрой сортировки, в твоих глазах тоже выглядит "настоящим говнокодом", потому что ты, решив, что "ВУЗ не нужен", гордо забил все на "ненужные предметы", включая и теорию алгоритмов, которая в твоих глазах по причине непонимания выгляди "говнокодом".

UFO just landed and posted this here
Была б возможность — плюсанул бы.

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


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


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


В-четвертых, возвращаясь к говнокоду. Допустим, есть проект на пару миллионов строк говнокода. Способен ли кто-то его исправить? Технически да. Но на практике это потребовало бы довольно внушительных затрат времени, которое а) не очень-то и хочется на это тратить и б) никто не будет оплачивать.

никто не будет оплачивать

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

Если на рефакторинг не было выделено время — то это не "по работе".

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

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

А если не способен исправить говнокод по причине того, что это не обосновано бизнес-задачами? Или вы живете в идеальном мире, где нет бизнес давления?

Я вам вот что скажу:


Понедельник

Во-первых, не знаю как сейчас, а раньше там ещё писать учили грамотно.
Во-вторых, не важно вуз или нет, но нужен наставник. Как минимум на начальном этапе.
Иначе вместо самоучки велика вероятность стать очередной обезъяной-говнокодером.
Знаете сколько веб-макак могут отличить 400 от 405 и знают почему нужно применять POST или GET в конкретном случае? Очень мало, к сожалению. И это только вершина только одного из айсбергов.


Вторник

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


Среда

Норм.


Четверг

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


Пятница

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


Суббота

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


Воскресенье

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

велика вероятность стать очередной обезъяной-говнокодером.

Подозреваю, что она просто велика. Для большинства людей это потолок. Наверно, образование как-то улучшает ситуацию, но вряд ли радикально.

Хороший наставник улучшает ситуацию.
Будет ли он учителем или коллегой или кем ещё — не так важно.
Образование и дисциплина радикально улучшает ситуацию.
Программирование — наука инженерная, тут не надо быть гением, чтобы решать 99% задач, нужна всего лишь дисциплина, база и, иногда, аналитический склад ума.
Вы меня извините, но в комментариях гремучая смесь снобизма, позерства и проявлений однобокого мышления. Те, кто кичится своим высшим образованием, фундаментальной базой и умением системно мыслить — где ваш научный подход к исследованию вопроса? Человек утверждает, что ему образование не нужно — протестируйте его знания и сделайте вывод. Оперируйте фактами, а не домыслами и стереотипами, якобы только вуз способен сформировать правильное мышление. Есть немало людей, что разбираются в алгоритмах на высоком уровне и без образования, как и масса выпускников престижных вузов, не способных отличить linked list от array.

И снова повторю любимую фразу программистов: it depends…
Какой-то конкретной группе людей, пишущих код, образование не нужно для решения их текущих задач, это правда.

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

В своё время ребята, которые выставляли кегли в кегельбане тоже говорили, что для их работы им образование не нужно. Потом их заменили бездушными автоматами.
А без вуза фундаментальные знания получить нельзя?)
Ну и основная масса вакансий по программированию не предполагает наличия глубоких знаний у соискателя (1С и CMS). Нужен просто человек, который сможет обслуживать и сопровождать систему.
Без ВУЗа фундаментал получить можно, но это сложнее и в итоге дороже. Поэтому базу без ВУЗа получают реально единицы.

Низкоквалифицированный труд в АйТи действительно существует, и действительно можно там работать. Только это не инженеры, и говорить о них не особо интересно.

На КодФесте 2017 был неплохой доклад про то, как прогресс убивает профессии, рекомендую ознакомиться.

И да, для нормального 1С-ника именно computer science может быть много и не надо, но вот предметную область (то есть бухучёт) и умение работать с клиентом — нужно. Это тоже фундаментальные знания-навыки, и их тоже дешевле получать в ВУЗе ну или техникуме.

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

Ну правильнее задавать вопрос, что создают выпускники российских ВУЗов, а не что создают в России. Так как не все выпускники остаются в России и не все, кто создает что-то в России — выпускники русских ВУЗов.

Но даже если ставить вопрос так, то вот, наверняка еще не полный, список компаний, имеющих 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
  • Google
  • 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

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

Все вышеперечисленное — как раз они, самоучки. До недавнего времени почти все технические ВУЗы страны в лучшем случае преподавали Паскаль и Бейсик. Ну еще алгоритмы, которые нужны в очень узкой сфере, относительно того, что делают.
А то, как делать ежедневный рутинный программистский труд и выдавать продукт в ВУЗах не учат. По крайней мере не учили, когда это все создавалось и росло.
Что-то я сильно сомневаюсь, что в перечисленные организации берут людей без в/о.
Во-первых, берут еще как. В бизнесе всех интересуют знания, а не бумажки.
Во-вторых, требование в/о не является свидетельством того, что оно дает знания.

Если и берут, то скорее всего людей, у которых УЖЕ есть большой опыт в индустрии, который позволяет закрыть глаза на отсутствие ВО. Но этот опыт надо где-то набрать. А во многих местах резюме даже не будут смотреть, если нет ВО, оно просто не пройдет первый уровень отбора HR и люди, которые смогут оценить уровень знаний, который у кандидата якобы есть, просто его не увидят.


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

Это есть только в России. Например у нас (Израиль) в/о достаточно редкое явление. Это безумно дорого и сложно. При всем при этом регион считается вторым после Кремниевой Долины по размерам ИТ.
Люди не знают алгоритмы, но при этом досконально знают ядро Линукса и стэк TCP и программируют вполне конкурентноспособные продукты (диссекторы протоколов, например).

Но советовать это как нормальный старт карьеры — глупо, как по мне.

Если я утверждаю, что без в/о обойтись можно и хуже не станет, это не значит, что я не советую в/о. Я советую учиться всеми доступными способами. Даже если оно не пригодится.
Например у нас (Израиль) в/о достаточно редкое явление. Это безумно дорого и сложно.
«Капитализм ...» (с) А.Ш. в роли милиционера в фильме «Красная жара»
При всем при этом регион считается вторым после Кремниевой Долины по размерам ИТ.
Т.е. и малодоступность ВО поэтому «плюс»?
Т.е. и малодоступность ВО поэтому «плюс»?

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

Отсев, да не тот:
безумно дорого
Нет, не плюс. Я этого не говорил. Я сказал, что в/о не влияет на развитие ИТ и на уровень профессионализма.

«Капитализм ...»

Наша проблема — не капитализм. Просто из армии приходишь только в 21. А на выходе из армии тебя ждут звериные цены на все (пачка сигарет, например, — 700 рублей) и приходится сразу работать, а не учиться. Курить то что-то надо. Вот и курят маны, они бесплатнее, чем образование.
звериные цены на все

приходится сразу работать, а не учиться

Капитализм в фильм «Красная жара» обозначал и это, и многое другое Ж-)
из армии приходишь
а программистские войска? ( без кавычек)
на развитие ИТ
Недавно ex.начальник из них как раз рассказывал, как и что…
Очень Союз хвалил за подготовку кадров.
Когда поток уменьшился, стали тренировать кадры прямо в качестве срочной службы
из армии приходишь
а программистские войска? ( без кавычек)
Расшифровка тезиса:

«Программирование — не для всех». Бывший киберразведчик учит айтишников на базе военных методик

Журналист, Q:
— В объявлениях о приёме на работу в израильские ИТ-фирмы
в качестве требования к кандидату может быть указана
«служба в технологических подразделениях военной разведки
или МАМRАМ». Как вышло, что в Израиле именно
армия стала кузницей кадров для ИТ?
A:
комплекс из психологических и IQ-тестов
и затем:
погружаются в сверхинтенсивный курс —
6-8 месяцев обучения по 12 часов в день.
Если человек успешно проходит курс,
он может присоединиться к армии
в качестве ИТ-специалиста на следующие 4 года.
В этом случае он уйдёт из армии не в 21 год, а в 25 лет,
уже с большим ИТ-опытом. После чего сможет
начать карьеру в израильском хайтеке.
обучения по 12 часов в день

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

разве человек способен заниматься умственной деятельностью 12 часов в день?
В армии?

Ну, там есть и альтернативы — был по TV сюжет:
барышни ( это же про Израиль, кстати) в экипажах танков.
Будущие инструкторы ( т.е. не на фронт), но всё же…
Тезис N2:
на развитие ИТ
Недавно ex.начальник из них как раз рассказывал, как и что…
Очень Союз хвалил за подготовку кадров.
Там же, Q:
— У нас принято гордиться «старой инженерной школой»
... наследие СССР...
A:
— В СССР образовательная система была действительно
очень хорошая. В 90-е, когда Союз развалился и
в Израиль переехала целая волна советских инженеров,
это дало нам мощный толчок: мы получили
специалистов высочайшего уровня.
Разумно. Но боюсь такой опыт не распространяется на большие страны.
Не убедительно. По себе скажу так — собеседуя людей наличие в/о определяется просто по первым 5 минутам диалога, можно даже в резюме не смотреть. Как вы можете догадаться, относишься к таким кандидатам не с лучшей стороны. Может быть для типовой конвейерной работы наличие в/о и не имеет разницы, но для какого-то роста внутри организации его отсутствие уже проблема. Быть может причиной того, что люди без в/о в ИТ преимущественно работают на фрилансе или мелких конторах «как бы стартапах».

Приведите пример success-story в РФ работы человека > 3 лет в одной организации с реальным карьерным ростом.
По себе скажу так — собеседуя людей наличие в/о определяется просто по первым 5 минутам диалога

А я с этим и не спорю. У вас причино-следственная связь только тут нарушилась. Отсутсвие в/о — следствие какой-то проблемы человека, а не наоборот. Просто еще один из симптомов и не более того. Но сам по себе не является определителем чего-либо, так как в обратную сторону это не работает.
Судя по форумам и тостерам школьники всерьез думают, что лучше сразу на фриланс и нафиг не нужен институт.
Вот как раз потому, что институты себя дискредитировали. Образованию, особенно ИТ-шному, нужен абсолютно новый подход. Не подходит ему медицинский/юридический сценарий.
Давайте просто, ИТ-шному образованию на типовых кодеров необходимы ПТУ и жесткая категоризация профессий (да, специалист 4-го разряда). За все время мне так никто и не смог объяснить, чем отличается фронтэндер-верстальщик от слесаря.
Ну вот намного лучше такая структура. Если, конечно, это не был сарказм.
Приведите пример success-story в РФ работы человека > 3 лет в одной организации с реальным карьерным ростом.


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

Смена должностей (не люблю слово «карьерный рост» — мне не нужен рост, мне нужно чтобы интересно было) вот такая: qa engineer, qa manager, qa automation team lead, software architect, program manager.

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

Плюс такой ресурс, как ВУЗовские связи, у меня неполноценный. Сейчас это уже не так важно, но вот лет 10-15 назад это ещё имело значение.

В общем, дамы и господа, учитесь полноценно, в нормальном ВУЗе. Оно того стоит.
Могу сказать про RnD Huawei, который сидит у нас на м. Владыкино. Можно устроиться консультантом (на временный договор) или стажером еще даже будучи студентом, но получить хорошую должность и з\п без в\о от серьезного вуза, а еще лучше ученой степени (больше половины, на мой взгляд — кандидаты и доктора наук) — просто невозможно. И да, китайцы еще бОльшие формалисты, чем многие наши госучреждения.
Возможно, у них такая специфика продукта, что надо иметь фундаментальные знания по наукам, а не только писать код уметь и знать фреймворки.
Нет. Им надо уметь сравнивать результаты работы китайской прошивки для сетевого оборудования с текническими стандартами RFC/IEEE/3GPP. Для этого требуется усидчивость и внимательность в прочтении реально объемных технических текстов, получения из них инфы именно по такому-то параметру BGP например. Человек без в/о не подойдет
Только это называется QA, а не программист. А тема статьи — программист-самоучка.
Мне кажется, это в любом RnD так. Просто уметь программировать мало.
До недавнего времени почти все технические ВУЗы страны в лучшем случае преподавали Паскаль и Бейсик


Мягко говоря, это неправда. Профильные ВУЗы всегда имели вполне приличные программы обучения.
До недавнего времени почти все технические ВУЗы страны в лучшем случае преподавали Паскаль и Бейсик

Basic — УПК в школе ( и в соседнем учили не на нём, а на Fortran)

Времена — конец прошлого века, политех: Fortran, затем TP ( 1-ый курс), Modula-2, C++,
Prolog аж дважды, базы данных

Но, не как самоцель, а как основа конкретных областей создания ПО

Впрочем, в том же ВУЗ-е:
Quick Basic — после лекций, у физиков была лаборатория с свободным доступом:
надо было только в журнале записаться на конкретный компьютер
Я даже больше скажу. Все выпускники ВУЗов — тоже по сути самоучки. Они все равно что-то сидели и сами разбирали, потому что им интересно. Подойдите к любому разработчику, поймаете его на том, что он делает и спросите, где он этому научился. Весь этот ВУЗ — топор в каше.
Я вот учился строить газо-турбинные двигатели в авиационном. Меня учили от и до. Со 100%-м покрытием теории и практики. Я не сидел по вечерам, чтобы получить что-то, что мне ВУЗ не дал. Нет такого у программистов.

Перенесите отсутствие базовой вузовской подготовки на такие отрасли знаний, как математика, физика, медицина и так далее.
Если профессиональное программирование доступно всем, то оно является недоотраслью знания скорее всего — просто некое ремесло — натаскался и вперед

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

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

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

Г-код — это не код без матриц, деревьев и алгоритмов. Это код нарушающий принципы SOLID, YAGNI, KISS, DRY и многих других. Я видел сотни серьезных качественных приложений без матриц и без деревьев — они там просто неприменимы, потому что в 99% случаев логика приложений намного примитивнее. Код не станет красивее, если к нему сбоку прилепить алгоритм. Это инструменты для достижения целей, а не подходы решения.

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

Явный признак самоучки — путаница в терминах


  1. По специальности — см http://www.dissercat.com/content/urboekologicheskii-podkhod-k-gradostroitelnoi-strukture-goroda
  2. По лаборанту — это должность
  3. доцент или профессор — это ученое звание, а также должность (дается по итогам учебной работе в учебном заведении — требует нужную ученую степень, как правило, или большой педагогический стаж)
  4. Ученая степень дается по защите диссертации
    Поэтому любой специалист может иметь ученую степень, если по его специальности есть защиты диссертаций, и может иметь ученое звание, если работает в учебном заведении.
  5. Дисциплина — это название предмета, который преподают в учебном заведении
  6. С чего вы решили, что физики, а также химики или математики не работают в частных предприятиях — как сказал бы Милюков — Что это? узость или невежество
    Хотя с самоучками спорить бессмысленно — в силу их самоучености
доцент или профессор — это ученое звание, а также должность

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

Это не отменяет того, что доцент — это и учёное звание, и должность. Просто можно например работать на должности доцента, не имея соответствующего звания.

Типа старшина — звание, а ротный старшина — должность?

поясняю для самоучки


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

Причём тут самоучка? Вы полагаете, что выпускник ВУЗа должен знать особенности штатного расписания учебных и научных заведений?

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

Процитируйте "неверное утверждение самоучки", на которое Вы отвечаете.

"Со званиями всё не просто. ..."
Это утверждение подобно — С отцовством не все так просто — отец может быть программистом, а еще пьяницей

О-кей. Я Вас понял. Критика справедлива.

Благодарю за понимание

Похоже, Вас кто-то не любит.

Немного о «самоучке»:
Номер WES (ECA#): «3081241IMM»
Master Degree. Gas Turbine Engines.

Убавилось гонора или продолжим письками меряться?
доцент, профессор
и
кандидат или доктор наук
— как оси X и Y, ортогональны

Просто, как правило, доцент ещё и к.н. ( и т.д.),
и это «сбивает с толку»
Любой человек — самоучка.

Неважно, как он учится, по книжкам ли дома, или в классе сидит с учителем, он учится САМ.

В него знания никак не закачаются автоматом, он должен учиться САМ.
Кстати, да. Менторство/институты всего лишь рационализация подачи знаний. К тому же не всегда удачная.

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

Вы без образования?
Ну-ка, сможете ли Вы решить задачу. В грубой форме она звучит так:
придумать алгоритм для нахождения N-ого числа Фиббоначи, быстрее классического O(N)


Я не буду описывать решение (которое я сам не смогу с ходу написать), напишу только следующее:


спойлер

Нужна линейная алгебра. С помощью матрицы 2х2 и операции перемножения матриц можно вычислить N-ое число Фиббоначи гораздо быстрее линейного алгоритма.
Человек без образования ее вряд ли решит, т.к. маловероятно, что человек будет просто так сидеть и читать про линейную алгебру (есть исключения, ес-но).


Теперь отойдем от данной задачи.
Я могу задать гуглу вопрос: линейная алгебра матрицы перемножение.
Но знание вопроса — это уже половина ответа. Как Вы будете знать, какой вопрос задать?


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

Тезис: образование дает намного более широкий угол зрения.


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


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

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

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

Таким вакансиям и средне-специальное не нужно.


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

Мне больше нравится пример с больши заводом. Среднему технику не нужно во, гайки и без него крутить можно. А проектировщиков и конструкторов надо 50 человек на тысячу техников. Беда в том, что современные сайтоклепатели и верстальщики считают себя проектировщиками и конструкторами.
Вы без образования?
Ну-ка, сможете ли Вы решить задачу. В грубой форме она звучит так:
придумать алгоритм для нахождения N-ого числа Фиббоначи, быстрее классического O(N)
В точности эту задачу я решал школьником, летом после 9 класса. И, кстати, вполне решил и с ходу написал.
Она ни в коей мере не требует высшего образования.
Можно (правда, не через гугл), но это дороже по ресурсам, чем ВУЗ закончить.
У меня нет диплома о высшем образовании, но есть (сейчас) база.

Лучше б я закончил ВУЗ.

Не понравился первый же пункт:


считаю, что программисту ЛУЧШЕ быть самоучкой

Если Вы самоучка, каким образом Вы можете знать, лучше или не лучше?
Я понял, что Вы имели в виду, но все-таки подбирайте слова, пожалуйста;)

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

Значит сортировка методом пузырька и альфа-бета алгоритм устарели и их нужно забыть?
Ура дилетантизму и агрессивному любительству!
Да просто надо скорректировать «науку» на «ремесло». :)
Я каждый день с удовольствием бегу в офис

Везет, я уже лет 8 в офисы не бегаю, разлюбил.
Люблю работать в своем кабинете дома. Тут тихо, приятно и удобно.
Судя по комментам, true-программисты, те, которые заканчивали профильные ВУЗы, плохо воспринимают самоучек. А что в ВУЗах вы были не самоучки? Я закончил достаточно серьезный ВУЗ, и на первом курсе, именитый профессор заявил, что процесс обучения — это процесс самообучения. И что его пара, это лишь 5% от того, что необходимо знать, прочитать, понять в свободное от лекций время.
Далее, из 5 летней ВУЗовской программы, на мой взгляд, приходится выслушивать достаточно много ненужного материала, т.е. время потраченное впустую. Да и чем собственно курсера или edx плохо? Там что, легко получать специализации? Отнюдь.

Если некто собирается делать шаурму (в Питере шаверму), то ему, наверное, невредно закончить кулинарный техникум
С программирование то же самое — в массе шаверма — но бывают все же шедевры типа nginx

Кстати, на редкость удачная аналогия! :) Скажем, взять просто хлеб — его надо уметь печь, пропорции там, ингредиенты, технологии, вот это все. А шаверма — взял, что под рукой было готовое, тяп-ляп, и в продакшон. %)

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

В каждом городе есть шаурмячная, куда ходят толпы народа, в особенности милиция и скорая помощь. Так вот, вы может быть удивитесь, как правило в таких заведениях управляющий имеет в/о например технолога пищевого производства или хотя бы Специальное образование повара. Остальные, действительно, тяп ляп.
Вот не надо жалеть о ненужных знаниях и напрасно потраченном времени. Как правило человек, получивший в/о, просто уже сразу может 5 лет целенаправленно заниматься одним делом, писать грамотный текст, глубоко погружаться в сложную техническую литературу, да и хотя бы просто хотя бы грамотно разговаривать. Опыт подсказывает, что у кандидатов без в/о таких навыков нет
Опыт подсказывает, что у кандидатов без в/о таких навыков нет
но опыт подсказывает, что годится почти любое ВО, а не только профильное?
Опыт подсказывает
И причина имхо в том, что вуз не только развивает, но вуз — скорее фильтрует: в вуз идут именно такие — физически пригодные для подобной интеллектуальной работы. Если человек поступил и его не отчислили на первой сессии (если факультет честно отчисляет тех, кто не годен), то человек вероятнее всего способен «целенаправленно заниматься одним делом, писать грамотный текст, глубоко погружаться в сложную техническую литературу, да и хотя бы просто хотя бы грамотно разговаривать»
скорее фильтрует: в вуз идут именно такие — физически пригодные для подобной интеллектуальной работы
читал лет 10 назад интервью с профессором какого-то знаменитого вуза, вроде MIT. Когда его спросили в чем секрет успеха, он сказал, что дело не в блестящих педагогах или ученых, а в том, что они отбирают для себя только блестящих студентов. Студенты достигнут высот, даже если их ничему не учить и всех преподов уволить, ведь все поступившие по природе своей сами не способны не учиться и не исследовать.
Судя по комментам, true-программисты, те, которые заканчивали профильные ВУЗы, плохо воспринимают самоучек
отнюдь. Самоучки вызывают и могут вызывать только уважение и трепет (Лейбниц или Фарадей, например). Плохо восприниматься могут дилетанты, а дилетанты часто заявляют, что они самоучки, поэтому имхо произошла девальвация термина «самоучка», поэтому самоучку, который говорит, что он самоучка, сегодня по дефолту принято считать дилетантом, увы.

Наглядно:
1)какой-нибудь JavaScript/Ruby/Python/Devops Rockstar не будет заявлять, что он самоучка, т.к. любому, кто в теме понятно, что систематическое образование, даваемое вузом, тут не очень требуется, а с другой стороны закончившие вуз, скорее всего высот в этом (JavaScript/Ruby/Python/Devops) достигли не через вузовскую программу, а самостоятельно. т.е. тут все скорее всего будут фактически самоучками.

2) Если программист из UBS AG или NASA говорит, что он самоучка — это не просто нормально, а великолепно (т.к. человек самостоятельно смог освоить вузовский курс и пойти дальше).

3) Если непонятно кто, говорит, что он самоучка, ему в ответ говорят «самоучки — тут все (типа по логике вашего профессора), устройся без обучения в вузе работать в JPL NASA, тогда будет о чем поговорить. Но раз ты на автодидактике акцент ставишь, значит, скорее всего, у тебя других достижений нет, значит ты дилетант».

С Лейбницем пальцем в небо — он учился в трех университетах и закончил обучение защитой диссертации.
Что касается Фарадея (еще можно добавить Зельдовича, как академика без диплома), то они просто работали с должности лаборанта, набирая знания от старших коллег непосредственно
Думается остальные самоучки лишены такой возможности и варятся (скорее парятся) в собственном соку

С Лейбницем пальцем в небо
емнип учитель маленького Готфрида возмущался, что Лейбниц лез в учебниках вперед заданного и наказывал его за это. Потом какой-то умный муж был у них в гостях, он пообщался с Готфридом, удивился и убедил отца Готфрида: 1) отменить занятия с учителем (которого Готфрид превосходит умом) 2)рарешить пацану пользоваться отцовской библиотекой. Несколько лет паренек учился сам, к 12 годам сам выучил латынь, греческий и т.д., а когда к 14 годам в отцовской библиотеке не осталось непрочитанных книг, Лейбниц в поисках новых знаний поступил в универ.

Что касается Фарадея
Фарадея лаборантом не просто так устроили (а придя в восхищение от его уровня). До лаборантства он дошел своим умом (он был емнип из бедной семьи и с малых лет работал кем-то типа курьера или газетами торговал, но это не мешало ему самостоятельно заниматься).
выяснил: Фарадей с детства работал курьером и преплетчиком в книжном магазине, поэтому имел возможность читать книги (т.е. не парился в собственном соку).
Самоообучение и вышка — это не альтернативы одно другому, а две части одного целого.
«Самоучка после вуза» за пояс заткнёт хоть «самоучку без вуза», хоть дипломированного «специалиста» без самостоятельной практики.
UFO just landed and posted this here
Мне кажется, что автор немного запутался.
— Во-первых. Ни в одном нормальном ВУЗе не учат одно только программирование, как таковое. Это же бесполезно. Учат алгебру, модели, паттерны и всякую другую теорию, которая не когда не устареет и всегда будет помогать в решении задач, потому как универсальна. Ну и немножко учат языки программирования, но это не больше 10% программы ВУЗа.
— Во-вторых. Миф о том, что обучение в ВУЗе лишает Вас способности учиться самостоятельно — это выдумка лентяев, которым после лекций в ВУЗе влом дома дополнительно позаниматься.
— В-третьих. Обучение в ВУЗе даёт Вам не знания и не корочку, а систему. Если не в ВУЗе, то где-то Вы эту систему всё равно должны взять, иначе из Вас не получится специалиста, обладающего законченным циклом знаний и навыков, необходимых для того, что бы доводить решение задач до логического конца.

Хотя с полезностью математики я соглашусь. Сам закончил прикладную математику и по 10 раз в день благодарю всех преподавателей дискретки, алгебры, матана и других дисциплин за ту математическую базу, которая ежедневно упрощает мою жизнь на работе. Должен только заметить, что у чистой математической теории, в отличие от теории ИТ-шной, есть одно существенное ограничение, которое, как раз, и отпугивает многих. Математика часто кажется бесполезной, потому как у неё очень и очень большая критическая масса, то есть для того, что бы математика была полезна программисту, он должен знать её очень и очень много и очень хорошо. И лишь тогда она будет приносить плоды, окупающие время, затраченное на её изучение. Поверхностные знания математики действительно совершенно бесполезны.
Не соглашусь, что поверхностные знания математики бесполезны. Я самостоятельно изучал тервер, теоркат, дискретку (графы, комбинаторика), матстат, ну то есть у меня как раз поверхностные знания, и это ОЧЕНЬ помогает мне даже сейчас, когда я вообще не программист, а програм менеджер.
Похоже я не совсем чётко разъяснил. Под поверхностными знаниями я понимаю именно поверхностные. А если Вы столько всего поизучали и, вдобавок, ещё и что-то поняли, то это точно не поверхностные знания.
Даже если Вы учили всё это самостоятельно.
И тогда я понял одну очень важную вещь в работе программиста-джуна: не задавай вопросы коллеге. Задавай их гуглу.

Ну спорное конечно заявление). Может получится и так, что гораздо выгоднее всё таки посоветоваться с товарищем. Но в общем случае да, гугля ты облегчаешь жизнь и себе и коллеге.
Это лечится ограничением времени на гуглинг. То есть, скажем, если за 2 часа проблема не решена, то стоит обратиться за помощью к старшему товарищу. Ему уже продемонстрировать рассказать о своих попытках, он скорректирует или, если проблема нетривиальная, то поможет.
Поиск специфичной информации — это тоже навык, которому нужно учиться.
Излияния очередного вайтишника-формошлепа, который думает, что стал программистом.
Я даже не знаю, что ярче свидетельствует о том, что хабр скатился на уровень помойки — это или третья за неделю статья для хрюш о том, как же на самом деле надо нанимать погромиздов.
Думаю что программирование это не наука, а ремесло.
А что в нем 'из ряда вон выходящеe' — даже думать боюсь.
А наука — это не ремесло?
Ремесло́ — мелкое ручное производство, основанное на применении ручных орудий труда
Нау́ка — область человеческой деятельности, направленная на выработку и систематизацию объективных знаний о действительности

Нет.
UFO just landed and posted this here
Понедельник — самоучкой быть можно, но преимуществ это не дает. Есть большой шанс научиться не тому. Большой плюс — попасть в команду с хорошую корпоративным стилем.
Четверг аналогично — вопросы более опытным ребятам задавать нужно, чужой опыт экономит кучу времени и сил, если не отвечают — значит сами ни фига не знают
А так все отлично, удачи
В универах программирванию не учат, там учат всякой всячине из предметной области — дискретка, анализу асимптотической сложности, графы, конечные автоматы, реляционная модель данных и т.д.
А если там есть курсы по типу Python, Java, Scala — то 90%, что их по фану ведут либо вчерашние магистры, либо мидлосеньоры из местечковых филиалов DataArt, DSR, NetCracker и тому подобных фирм. Учебного плана ноль, педагогического образования тоже, только мотивированный избытком свободного времени энтузиазм. Итого весь курс травят enterprise-байки, под настроение выносят на обсуждение какую-нибудь фичу языка, но обычно в начале курса просто выдают накодить какую-нибудь баянистую задачку, скомунижженую из лекций Стенфордского университета и на парах появляются только в том случае, если староста кинул в конфу сообщение, что 5-8 человек готовы сдать или никто не понимает, как настроить sbt под виндой.
Е мое то что делал раньше весь день сделал за 10 минут, теперь еще вот это докручу чтобы лучше работало

Я как раз перехожу на эту стадию)

Автору, от сердца.
Был на Вашем месте, главная опасность такой степени увлечённости (в моем случае необходимо было ещё обеспечивать супругу и двоих детей) — это не выгореть эмоционально (иногда освоение профессии боем даётся нервными срывами если быть обязательным человеком), никогда не сдаваться, беречь себя (психологические риски "выгорания" очень серьезны. Тогда Вас ждёт неизбежный успех. Эти качества, эмоции, о которых Вы пишите, все это было свойственно олдскул разработчикам, да простит меня хабр и коллеги за это слово )

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

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

в РБ в ПВТ лично захотел записаться на курсы по PHP так сказать базу подтянуть, т.к сам самоучка, а у самоучек опыт = сделанные задачи + самостоятельное обучение. Пришел посмотрел курс по которому собирались учить, когда препод сказал, ну я в реальных проектах не участвую то хочется сказать, а что ты тут вообще забыл? Естественно там о реальных проблемах с которыми столкнется будущий программист даже речи не велось. Писать свою CMS за месяц на php + mysql и получить те же результаты что и нашумевшие «программисты» после курса Попова.
Мне показалось, что автор путает программирование и т.н. «разрабтку», популярная тенденция.

Понедельник. День тяжелый.
Я считаю, что программисту ЛУЧШЕ быть самоучкой.… Потому что в этой из ряда вон выходящей профессии нужно самосовершенствоваться каждый день хотя бы час-полтора, а лучше всю ночь.

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

старые методы мы смело забываем и осваиваем новые

В программировании (логика и алгоритмика) ни-че-го не изменилось за 50 лет. Сортровка, решение графа и конечный автомат остались точно такими же, какими их описали Дейкстра и Кнут. А у разработчиков — да, каждый год новый фреймворк и новая либа. Программисты консервную банку отправили на Луну и вернули назад в четырех килобайтах памяти. У разработчиков гигабайтом больше, гигабайтом меньше — пофик, юзер новый планшет купит, если потребуется.

Вторник.
Я ничего не понял. Элджернон все еще решает лабиринт лучше меня. Очень умный мыш.

Среда.
Да! Команда разобралась с текущей либой и ей стало легко. Лид счел, что начинает тупеть и занялся домашним проектом. Втянулся. Теперь вся команда следующий проект будет делать на новой либе, чтобы не отупеть, пользуясь проверенной. Разрабатывать нейроны, давая им кардинально новые и отличные от текучки задания вроде написания рассказа в жанре твердой НФ или самостоятельного расчета и изготовления табуретки не нужно и неприятно — мы ж не гуманитарии и не синие воротнички.

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

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

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

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

P.S. Палажите пожалуста нимнога цвитов на магилу русскаго эссэ и асобинна в той части где пра запитые.
UFO just landed and posted this here
Дополню уважаемого 0xd34df00d.
  • Куча Фибоначчи — 1984
  • Динамическое дерево Тарьяна-Слейтора — 1983
  • B-дерево — 1970
  • Skip list — 1989
  • Декартово дерево — 1989
  • Декартово дерево по неявному ключу — явно еще позже, дату не нашел
  • Персистентный подход к структурам данных — 1986
  • Lock-free структуры — 1994
  • Preflow push — 1974
  • Push-relabel — 1986
  • Global relabeling — 1989
  • Алгоритм Бойера-Ватсона — 1981
  • Алгоритм Ахо-Корасик — 1975
  • Алгоритм МакКрейта — 1976
  • Алгоритм Укконена — 1995
  • Алгоритм Фараха-Колтона и Бендера — 2000

Это лишь то, что пришло мне в голову за пять минут. Эти (и многие другие) алгоритмы я изучал в 2005-2010, будучи тогда школьником, так что ничего сложного и дико нового нам не рассказывали, а сейчас там, вполне возможно, рассказывают что-то более новое.
Я работаю программистом (не веб) около 10-12 лет. Отвечу как бывший студент МГТУ Баумана и как удалённый студент Стенфордского университета скажу вам:

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

Про понедельник
В чём вы правы

Развиваться — это и означает увы учиться придётся всю жизнь. Это отмечал и Ленин, и Энштейн, и почти все профессии требуют учиться всю жизнь. И вы правы про программирование, про которое не всё так просто.

Более того как таковой области сейчас нет. Есть масса областей ACM ***.

Вот например Д.Фридмен говорит в начале что программирование сегодня это не glamorous field как было раньше (https://www.youtube.com/watch?v=8hupHmBVvb0&t=74s).

Как вы можете развиваться. Есть бесплатные курсы от Стенфорда (ITunes university), есть курсы МФТИ, есть MIT OpenCourse — смотрите и развивайтесь, есть stackechange и более лёгкая quora — общайтесь и развивайтесь.

В чём вы не правы:
— Вам рано или поздно потребуется консультация профессора или аспиранта. Интернет — это помойка
— Рано или поздно вам потребуется поддержка психологическая чтобы сделать в короткий срок проект в 50K строк
— Вы подумайте про других людей. Вы готовы чтобы вашего кота оперировал ветеринар-самоучка. Нет. Мир сильно забюрократизирован. Я сталкиваюсь, что на ЗАПАДЕ ОТСУТСВИЕ PhD НЕ ДАСТ ВАМ ПРАВО ЗАНИМАТЬСЯ ИССЛЕДОВАНИЯМИ несмотря на наличие проектов.
— Бизнесс для зарабатывания денег, вуз для развития вас в первую очередь.

Про вторник
Я вам советую учить то что от чего вас «качает». Так же есть некоторые зависимости между разделами математики — поэтому если вы будете изучать математику по онлайн курсам вузов — там вы найдёте требование. Если вы хотите читать только книги, что же — хорошие книги пишут в вузах, но они доступны для покупку или там скачивания.
Если вы можете найти хорошую книгу прочитать её (e.g. обычная вузовская книга по дифурами)
А после этого читать более трудные книги (необычные тяжелые книги в.И.Арнольда) — то это просто супер.

В чём вы не правы
Если вы собираетесь просто изучать по книжкам это даёт общую картину, но
— собеседование в какой-нибудь Google заставит вас перефигачить какую-то идею полностью и вы должны понимать области применимости все того о чём вас будут спрашивать.
— жизнь так не работает что решаются типовые примеры. Есть задача — и вы должны соотнести её с разделом математики например.
— если вы изучаете «по википедии» математик — там ошибка почти в каждом предложении. Изучайте математику по вузовским книжкам

Про среду
Вы всё правильно говорите. Есть два режима в жизни и во всяких динамических системах моделирющую жизнь — explore and exploit. Вам надо изучать, но и работать чтобы не потерять навык.
Я вам советую — вы рано или поздно столкнётесь со старым. Каждый раз сталкиваясь с ним — смотрите под новым углом.

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

Если вы задаёте вопрос всем учителям и они отваричваются — проблема в вас, научитесь задавать вопросы. Вопросы вам придётся задавать всю жизнь.

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

Гугл не знает ответы на вопросы — это полнотекствовый поиск по 150 000 000 000 документам. Лучше используйте специализированные форумы типа stackexchange или quora или сайты факультетов вузов.

* суббота*
Если вы что-то не знаете — спрашивайте человека, не будьте вежливыми не молчите, спрашивайте. Вот например что Stephen P.Boyd говорит про то что не стоит быть вежливым:
youtu.be/bf1264iFr-w?t=571

*Воскресенье*
Очень хорошо, что вам нравится что вы делаете. Но не забывайте пока у вас нет хотя бы высшего образования бакалавра — вам придётся доказывать свою компитентность, вы не сможете сослаться на бумажку. У вас риск — что сотрудники отдела кадров не будут рассматривать вас. Я в похожей ситуации — у меня нет PhD и мне каждый раз по исследовательским позициям надо доказывать свою компитентность.

Так что для будушего вашего у вас два больших плана
1. Вам придётся получить высшее образование
2. Вам придётся сделать стартап, провалиться, сделать старап провалиться, и сделать стартап и не провалиться.
Sign up to leave a comment.

Articles