Как стать автором
Обновить

Комментарии 35

не знаю как у других, мне в жизни пригодилось ВСЕ что я когда-то учил в школе/универе/вне. И еще больше необходимо то, что не учил. Схема проста, чем больше знаешь, тем проще писать)
Спорное утверждение. Модель универсальности и узкой специализации в разной степени эффективны. В задачах криптографии человек математической практики будет эффективней опытного многопрофильного программиста. Нужно учить не все подряд, а то что нужно\интересно. Говоря про университеты, не раз умные люди говорили что система образования не идеальна. Сейчас делаются шаги вперед, когда первые два курса, общеобразовательные базовые знания, которые нужно изучить чтоб определиться какое направление в дальнейшем тебе будет интересно, а 3+ уже идет более узкая специализация по выбору студента.
Модель универсальности и узкой специализации в разной степени эффективны

Согласен. Я ведь и не говорил что мне пригодилось все именно в профессиональной деятельности, я утверждал, что мне пригодилось все в жизни. Это те самые 2/3 суток вне работы ;-)
Но ведь согласитесь, всегда здорово, когда человек делает крутые математические выкладки, к примеру, показывая атаку на RSA при близких p и q, и не спрашивает как установить openssl в винду или как поставить SSL сертификат в nginx && postfix ?


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


Я считаю, что программеру должно быть до лампочки на чем кодить, а вот предметную область изучать приходится под каждый проект. Пишете софт связанный с кораблями? Извольте понимать что такое дедвейт и валовая вместимость, ИМО и MMSI. Пишете САПР? Извольте понимать чем отличается PDIP от SOIC и почему к реле дорожки разной ширины.


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


ЗЫ: Я думаю, Вы и сами понимаете это. Предлагаю сильно воду не лить ;-)

и не спрашивает как установить openssl в винду или как поставить SSL сертификат в nginx && postfix ?

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

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

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

В целом я с вами согласен.
Я что хотел сказать то
Схема проста, чем больше знаешь, тем проще писать
это справедливо только для последнего примера что я написал. А когда задача серьезная там базовые знания не спасают всё равно приходится много курить, осваивать…
Нужно изучать мать-часть
Можно начать с изучения того, что означает слово «матчасть»
Матан-часть, вот чего часто нехватает )
Универские знания бывают полезны, если они а фундаментальном уровне. Мне в универе рассказывали и про всякие мьютексы, прерывания, регэкспы, процессы, и многое другое, но полезность всего этого я осознал только когда началось более-менее активное использование всех этих примитивов. Вот тогда я и стал резко перечитывать всякие книжки вроде «Современных операционных систем» Таненбаума. До того момента они висели где-то далеко, в виде некоторой магии, которая непонятно кому нужна.
Просто преподать знания и не об'яснить как они могут быть использованы. Что может быть бесполезнее?
НЛО прилетело и опубликовало эту надпись здесь
> После знакомства с регэкспами можно увидеть, что они нужны и для парсинга файлов,
> и для проверки корректности данных (тот же IP-адрес проверить).
Это как раз два типичнейших примера когда _ни в коем случае не нужно использовать регулярки_.
Поясните почему
Возможно вопрос и дурацкий, но таки почему? ИМХО как раз для этих задач регулярки подходят почти идеально.
Потому что нечитаемо, неподдерживаемо, и вам повезёт, если файл описывается регулярной грамматикой.

Комбинаторами парсить получше.
Ну и файлы имеют свойство меняться в самый неподходящий момент. Лексер тут же вскочит на защиту с сообщением: «вот тут поломалось», а регулярка в лучшем случае просто отдаст пустой результат.
Ок, согласен, в случае с файлами действительно лучше работать не регулярками. Но IP-то чем не провинились? Идеально описываются регуляркой, как впрочем и номера телефонов или любые другие жестко стандартизированные данные.
Идеально ли? ping 127.1 работает, не смотря на его непохожесть на IP. И это не единственный способ задать валидный IP. Впрочем, та же фигня и с номерами телефонов (стандартов там больше одного, не считая региональных особенностей). Единственное в чём вы можете быть уверены — в нём должны быть цифры.
> или любые другие жестко стандартизированные данные
В реальном мире жестко стандартизированных данных не существует. Точка. Ну, если вы хоть как-то привязаны к бизнесу, а не пилите какой-нибудь эмулятор восьмимерного марсохода в вакууме.

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

Вот вам ссылка прикольная на закуску: https://regexcrossword.com/
Ну тогда проверка почты, телефона, адресов и тому подобного. Скрапинг. Файлы норм, если скорость написания кода важнее и необходимо обработать небольшой набор данных, вытащить нужное — вполне нормальный способ.
В универе мы учим computer science, а работаем как software engineer. Отсюда и впечатление, что в универе дают много ненужного. Дают нужное, просто немного для другой сферы.

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

По-моему, идеальный вариант обучения для программиста — пару лет азов + обзорные курсы, и идти работать, по ходу работы проходить специализированные курсы по тому, куда занесло, с отдельными сертификатами, так и работодателям будет намного проще понять, на что подходит человек.
Но у нас железобетонная система высшего образования, с обязательными учебными планами, да еще привязана к отсрочке от армии, без капитальных реформ ничего не изменишь.
НЛО прилетело и опубликовало эту надпись здесь
>> Ведь если бы я занимался языком 5 лет, к примеру, сейчас я был бы хорошим программистом

Вы были бы неплохим джуниром (стажером по-русски). Без практического опыта в продакшене не стать хорошим программистом.
Самое скучное в университетской программе — это теория разработки компиляторов. В отношении неё сильнее всего ощущение, что уж это мне точно никогда не понадобится, поскольку компиляторы я уж точно разрабатывать не буду. А в результате оказывается, что умение правильно писать парсеры — это наиболее ценный и практически полезный навык. Всё остальное можно относительно легко нагуглить, а вот настолько фундаментальные знания за десять минут не нагуглишь… нужно читать толстые книги… а времени на это всегда не хватает. И это при том, что парсеры приходится делать постоянно. Есть даже такая присказка: какую бы программу программист не разрабатывал, при достижении определённого уровня сложности его программа превращается в парсер, вокруг которого уже выстраивается всё остальное.
Согласен, это справедливо для программирования, сколько потрачено ненужного времени в институте — самому можно научиться большему, востребованному и актуальному в n'ое количество раз. Преподаватели зачастую не могут внятно объяснить, а преподаваемые дисциплины уже неактуальны.
На первых двух курсах мои программы представляли из себя, не побоюсь слова, говнокод (когда я открывала старые программы на более старших курсах, то я сама была в шоке от оформления кода).

Если бы «говнокод» был «говнокодом» только из-за плохого оформления, жизнь была бы намного проще…
ну да, + изобретенные велосипеды, вместо которых можно было сделать всё намного проще.
Но поскольку на первых курсах особо серьезных программ не пишешь, то оформление бросается больше всего
Хорошая статья, благодарю.
Можно поинтересоваться, где вы учились?
Московский Авиационный Институт
На опыте не могу согласиться со всеми утверждениями. Несомненно польза есть, но лично у меня эффективность образования вызывает сомнения. Считаю, что материал «по теме» пройденный за 3 года обучения, при большом желании мог бы быть изучен гораздо быстрее.
Когда осознаешь необходимость в конкретных знаниях, то изучение действительно нужного материала происходит намного быстрее.
У одной знакомой брат вообще не имеет диплома, но спустя многих лет самообучения, большого опыта фриланса, он работает в очень достойной компании.
Всё написанное мной не претендует на «абсолютную истину». Все зависит от человека, его жизненной позиции и других факторов.
Мог бы быть изучен гораздо быстрее? Мог бы, если толь знать что и как изучать. Вообще в институте/университете учат только тому как всю осташуюся жизнь учиться, учиться и трудиться. Что касается программистов, то когда я общаюсь с претендентами, я задаю классические вопросы:
— что такое fork, pipe, pid?
— какаю и когда купил последнюю книгу?
— какую книгу сейчас читаешь?
И от получаемых ответов понимаешь, что за программист стоит/сидит перед тобой.
Я думал умению учиться учат в школе, по крайней мере так говорили в школьные годы. Я обозначил, что мнение основывается на личном опыте.
моя история
Работать по специальности я начал на 2 курсе (уровень знаний после школы был на уровне «умею переустановить виндовс»), пропуская большинство занятий (индивидуальное посещение), я закончил университет на отлично (коррупции в университете не было), и к выпуску уже сменил две работы (потому как поступали более интересные предложения). Я успешно прошел все собеседования на которых был, но не потому что все знал, а потому как дал понять, что знаю где искать. Во время учебы нередко приходилось спорить с профессорами, которые преподавали не совсем актуальную информацию и никогда в глаза не видели реальных условий ведения проекта.

Извините, но я считаю, что ваши вопросы не оценивают компетенции претендента, как программиста. Программист не википедия, а средство для решения задач.

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

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