company_banner

Важно ли фундаментальное образование в CS и взгляд из Яндекса на профессии в мире информационных технологий

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

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





    Выбор профессии


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

    Попробуем ответить на вопрос, почему профессии, связанные с информационными технологиями настолько востребованы на сегодняшний день? В значительной степени это связано с экспоненциально возрастающей сложностью областей, применяющих вычисления. Если бы программист мог самостоятельно протестировать все возможные пути выполнения и все возможные состояния написанной им программы, жить стало бы гораздо легче, профессия тестировщика стала бы не нужна, да и программистов нужно было бы значительно меньше. Во-вторых, сама IT-отрасль настолько разрастается, появляется такое разнообразие технологий и нюансов, что владеть всем уже невозможно, необходима специализация. Уже нельзя просто решить работать в области IT и учиться этому, нужно выбирать более узкую специальность.

    Проблемы образования в IT


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

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

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

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

    Как выбрать профессию?


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

    Как осваивать профессию


    Очень важно за время обучения как можно лучше освоить английский язык. Без этого у вас могут возникнуть трудности с чтением документации, а также общением с коллегами и партнерами, если вы будете работать в международной компании. Умение программировать – полезный навык не только для разработчиков, но и для любых IT-специалистов. По возможности учитесь у действующих профессионалов, работающих по вашей специальности, благодаря развитию технологий и появлению различных онлайн-курсов, это не так уж сложно. Получая в процессе обучения различные навыки, старайтесь как можно скорее применять их на практике: решайте полезные задачи, ищите фриланс-подработки, попробуйте совмещать работу с учебой.

    Что собой представляет отрасль ИТ


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



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

    Администрирование и управление в сетях связи
    • Знания:
      • Сети;
      • Протоколы;
      • Оборудование.
    • Задачи:
      • Установка;
      • Настройка;
      • Мониторинг;
      • Обслуживание сетевого оборудования.
    • Роли:
      • Сетевой администратор;
      • Сетевой аналитик;
      • Сетевой инженер.


    Информационная безопасность
    • Знания:
      • Протоколы аутентификации;
      • Антивирусы;
      • Криптография;
      • Эксплуатация и изоляция уязвимостей;
      • Нормативная база.
    • Задачи:
      • Мониторинг;
      • Диагностика;
      • Тестирование возможности проникновения;
      • Соответствие требованиям.
    • Роли:
      • Администратор ИБ;
      • CISO, penterter,...


    Внедрение корпоративного ПО и консультирование
    • Знания:
      • Корпоративные языки (Java/.NET/SQL);
      • Прикладные: бухгалтерия, финансы;
      • Оборудование.
    • Задачи:
      • Установка;
      • Настройка ERP/CRM/BI/бухгалтерия...
      • Обслуживание.
    • Роли:
      • Консультант;
      • Аналитик;
      • Разработчик.


    Дизайн интерфейсов и опыта взаимодействия
    • Знания:
      • Дизайн;
      • Эргономика;
      • Психология.
    • Задачи:
      • Проектирование интерфейсов;
      • Графический дизайн;
    • Роли:
      • Дизайнер;
      • ...


    Обслуживание и поддержка
    • Знания:
      • Сети;
      • Протоколы;
      • Оборудование;
      • Все остальное.
    • Задачи:
      • Мониторинг;
      • Получение обратной связи;
      • Диагностика;
      • Устранение неполадок или эскалация проблемы.
    • Роли:
      • Дежурный администратор;
      • Сотрудник службы поддержки;
      • Инженер службы поддержки.


    Разработка и администрирование БД
    • Знания:
      • SQL;
      • Реляционные СУБД;
      • Операционные системы;
      • Проектирование баз данных.
    • Роли:
      • Администратор БД;
      • Разработчик БД;
      • Аналитик/проектировщик запросов;
      • Консультант.


    Разработка ПО, веб-служб и приложений
    • Роли:
      • Разработчик (программист)
        • Интерфейсов (frontend),
        • Приложений (Windows, OS X, *nix),
        • Мобильных приложений;
      • Тестировщик
        • Функциональный
        • Нагрузочный.


    Системный анализ
    • Задачи:
      • Анализ требований;
      • Постановка задач

      Роли:
      • Технический писатель;
      • Бизнес-аналитик;
      • Системный аналитик;
      • Аналитик программного обеспечения.


    Управление проектами
    • Задачи
      • Определение и достижение целей;
      • Поиск баланса «время, цена, качество».

      Роли:
      • Руководитель проекта по...
      • Мастер методологии (Scrum, Agile,...).


    В лекции все эти специальности, требования и задачи разобраны более подробно и с примерами.
    Яндекс
    Как мы делаем Яндекс

    Comments 59

      +59
      Посмотрел на «профессии». Как оно всё убого и отвратительно… Все эти «знания»/«не знания» выглядят как унылые чеклисты и просто не соответствуют реальным проблемам.

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

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

      Главное — количество часов лекций VS количество часов практики. Как вы отнесётесь к художнику, у которого 5 лет образования по специальности «изображение котят», и который каждую неделю имел 30 часов лекций про устройство котят, про методы их изображения, и 8 часов практики? В неделю? При этом половина практики была посвящена повторению теории. Сравните с человеком, который три года на полную ставку рисовал котят. Да?

      Так почему с компьютерами не так? Мне кажется, что правильный метод обучения должен иметь явно больше 50% практики. То есть сначала программируем/настраиваем/делаем, а потом ещё и теорию по этому вопросу слушаем.
        –13
        Чем дальше будет развиваться IT отрасль, тем все меньшей будет потребность в специалистах без образования. Потому что, например, такой программист будет разрабатывать O(n^2) алгоритмы там, где можно и нужно придумать O(nlogn).
          +12
          Чем дальше будет развиваться IT-отрасль, тем меньше будет потребность в разработке новых алгоритмов.
            +13
            Я думаю, потребность в сложных алгоритмах будет расти, но все остальные направления в программировании будут расти ещё быстрее. В результате, вероятность применения среднестатистическим программистом сложной математики будет падать.
              –3
              А у Вас есть какие-то аргументы поддерживающие это голословное высказывание?
                +9
                Рассуждения такие.

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

                2. Доступность квалифицированных программистов, готовых за бесплатно помогать друг другу (stackoverflow и тд) поможет не изобретать велосипед там, где есть возможность этого не делать.

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

                Есть и обратные тенденции. Главным образом это Big Data, где нужно обрабатывать сумасшедшие объёмы данных и O(n^2) просто не будет работать. Я не знаю, часто ли нужно там изобретать новые алгоритмы, но эта область, безусловно развивается. Но, как ответили выше, это не самая популярная область и она не является законодателем мод.
                  –7
                  Я просто как раз указывал на то, что скоро очень многое так или иначе станет связано с BigData (больше или меньше).
                    0
                    вас заминусовали и по-моему совершенно зря. вот буквально один пример — 40 лет назад Cray-1 имел скорость 80 mflops. это был суперкомпьютер, стоящий миллионы долларов, и решал он в основном суровые военно-физические задачи

                    сейчас snapdragon 800, стоящий в обычном смартфоне, имеет производительность 115 gflops, т.е. в 1000 раз больше. и никто его суперкомпьютером не считает, так — поиграться :D

                    ещё лет через 30 процессор, встроенный в глазную линзу, будет считать сотни терафлопс, и это будет совершенно обыденно. ну подумаешь, очки в реальном времени следят за всем, происходящим вокруг. что тут такого?
                      +2
                      Люди минусуют ту точку зрения, которая им интуитивно не нравится. А этот коммент скорее всего заминусовали из-за всей дискуссии в целом. Против моей позиции по образованию есть миллион аргументов, которые я сам могу привести (особенно учитывая средний уровень отечественных вузов и актуальность учебных программ), и я готов их обсуждать, но люди в основном отделываются простым «голосованием ногами». Я никого не виню — я свое место в жизни вижу и знаю какие знания мне нужны, поэтому благодарен ВУЗу, который хотя бы отчасти мне их дал.
                    +2
                    4. чем тоньше технормы, тем ближе мы к желанию знать обо всём и обрабатывать всё и вся. нынешнее bigdata покажется песчинкой по сравнению с умными очками, ежесекундно обрабатывающими терабайты полученной информации с реальным применением ИИ
                +5
                В-общем, это такое же практическое препятствие, которое преодолевается опытом (спросил — получил ответ — запомнил — применяешь). Не нужен особый матан, чтобы выучить, что линейный поиск это медленно, и заменить его на поиск в хеше — стандартное решение.
                  +2
                  А почему не отсортировать и пользоваться бинарным поиском? Или воспользоваться самобалансирующимся деревом? Константная сложность поиска в хеше — это всего лишь теория и часто с помощью кривых рук удается сломать эту вероятностную гарантию. А если еще надо выполнять другие операции, например выборку диапазона? Для принятия таких решений в каждом конкретном случае нужно обладать знаниями о том как все устроено под капотом.

                  К тому же иногда нужно разработать какой-то новый алгоритм или модифицировать существующий под конкретную специфику задачи.
                    +6
                    Различные поиски лучше использовать на различных данных. Разные структуры данных имеют разные скорости чтения\записи\нахождения длины\перебора. Сложность состоит в использовании оптимальных вещей для конкретной задачи. Но сегодня как-то почти всем стало похер на фундаментальную оптимизацию. Если бизнес напрямую не выиграет от ускорения приложения, то он скорее наймёт быструю обезьянку чем вдумчивого архитектора, который продумает расширяемость под изменчивые условия заранее.
                      0
                      Всё это относительно… для одних задачий одно быстрее, другое медленее, одно напиать и делать проще, другое надо продумывать дольше… Вообще мне кажется пограммист (как мастер) должен искать баланс между педантом и дотошностью время и ресурсы.
                      +4
                      Скажите честно, как часто в своей карьере вы сталкивались с ситуацией, когда от асимптотики алгоритма что-то зависит?

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

                      Разумеется, в ИТ всё построено на хороших алгоритмах. Но если оно уже построено, то за что деньги платят? Правильно, за то, чтобы это всё собрать под задачу.
                        +2
                        А ведь и правда. Ситуации, когда удаётся что-то сделать, улучшив асимптотику алгоритма, почти не встречаются.
                        Если алгоритм, работающий, например, за N^4, оказывается для конкретной задачи слишком медленным, то чаще удаётся его улучшить, поменяв фильтры на входе (чтобы уменьшить N), изменив порядок перебора (чтобы приемлемое решение встретилось раньше), увеличив мощность эвристик (с той же целью), в конце концов — вообще поменяв задачу. Но попытка написать алгоритм, работающий в исходных условиях, скажем, за N^2*log(N) чаще всего к успеху не приводит — раз мы попали в такую ситуацию, значит, ошиблись где-то раньше.
                          0
                          наверно, потому что асимптотика — это составная часть алгоритма? вы не можете уменьшить асимптотику пузырькой сортировки, но можете поменять её на другую
                            0
                            Асимптотику пузырьковой сортировки уменьшить легко — достаточно подать ей на вход почти отсортированные данные. Или уменьшить размер сортируемого массива (по отношению к исходным данным задачи) — сортировать не все N элементов, а только критически важные sqrt(N).
                          0
                          как раз сборщик и должен знать про O, xтобы правильно выбрать детали для сборки. или например что такое lock-free контейнеры чтобы не пытаться использовать их где не надо. согласитесь, это совсем не то, что фундаментальные знания о структурах данных и устройстве процессора, необходимые для хорошей реализации этих алгоритмов
                          +4
                          Ага. И в этом ему потребуется обязательно знание философских воззрений канта, знание микроэкономики, освещающее наиболее пердовые воззрения времен затхлого социализма и дспш-ной мебели с военного завода и множество других безусловно полезных вещей из программы «академического образования»
                          +4
                          Тут ведь всё как всегда — «ремесленники» нужны, но и «теоретики» нужны тоже. В пропорции 10 «ремесленников» на одного «теоретика». В любом проекте нужен архитектор (или техлид) который понимает почему на уровне архитектуры всё устроено так, как устроено и почему это должно, обязано работать и работать эффективно. И нужно 10 разработчиков и тестеров, которые будут натягивать кнопки на формы, катать круглое и носить квадратное.
                            +10
                            Я думаю, соотношение ещё большее. Кстати, «техлид» — не теоретик. Теоретик решает абстрактную задачу как бы ему вместо o(log n) сделать o (log log n) для особых типов графов.

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

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

                            А у нас всех готовят как теоретических физиков, а потом выясняется, что надо правильно свёрла менять и тип металла на глаз определять.
                              0
                              вот что мой полный тёзка написал по этому поводу: rsdn.ru/forum/job/2593474.1
                                0
                                Кстати, хочу сказать, что склонность решать задачи более фундаментально, расширяемо и модифицируемо, под изменяющиеся задачи и условия, по-моему, не зависит от формального образования и склонности человека сидеть над матаном. У нас в команде есть люди и с образованием и есть вроде меня — бездипломные. Склонность делать продуманно не зависит, как выяснилось. Я стараюсь «дольше запрягать» и радоваться, когда изменяющиеся условия задачи не заставляют меня переделывать все с нуля.
                            • UFO just landed and posted this here
                                0
                                «А на самом деле проблема состоит в том, что большая часть профессий в IT требуют не образования, а навыков. Это _ремесленные_ профессии. Другими словами, практический опыт, а главное, чувство предметной области значат едва ли не больше, чем абстрактное знание.»

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

                                А на самом деле проблема состоит в том, что человек как программист никогда не вырастет или будет очень медленно расти. Он просто будет выполнять однообразные задачи одним и тем же путем. Есть у нас на работе один такой. Не знает чем лефт джойн от иннер джойна отличается. Про алгоритмы молчу. Такой человек постоянно будет косячить, сидеть часами над проблемой и в итоге придумает свой кривой медленно работающий велосипед, на доработку которого в будущем будут уходить часы, только потому, что он думает, что образование не нужно, он что дурак. А было бы образование, он бы за 30 минут додумался использовать диграф и бфс для нахождение кратчайших путей. И это только капля в море. Все свои нестандартные задачи он будет выполнять велосипедами. И таких вышеописанных людей тысячи. А потом все удивляются почему программа так медленно работает и тупит. А самое интересное в том, что он этого даже не понимает. И вряд ли поймет. Зачем ему теория, ее дураки придумывают. По мне лучше потратить время на теорию и основы, но потом написать хорошо спроектированный модульный код, который будет легко масштабироваться, изменяться, поддерживаться. И главное выполнятся за приемлимое время.
                                  0
                                  Научиться можно любой профессии и без вышки. Только вопрос насколько полны будут эти знания и насколько быстро вы научитесь. Образование ускоряет этот процесс в несколько раз.
                                  Вы можете учиться на своих ошибках, это ваше право. Но есть накопленный годам багаж знаний и на мой взгляд глупо не обращать на него внимание и пропускать мимо себя. В итоге вы будете за любой проблемой лезть в гугл и спрашивать у других людей, тратя часа\дни своего времени. Никакого прогресса не будет, если каждое поколение будет все изучать заново.
                              • UFO just landed and posted this here
                                  +2
                                  Тут ведь многое и индивидуально, и, как было правильно сказано, многое зависит от направления в ИТ. Мне вот, например, высшее образование пригодилось только для того, чтобы «взяли на первую работу» (в нормальные конторы как правило берут только с оконченным или почти оконченным образованием). А вот там (на работе) уже я всему и научился. Сейчас работаю на себя (вполне успешно). Фундаментальные знания мне не пригодились и не пригодятся (уверен). Но разумеется, я не хочу сказать, что они не нужны. Нужны, просто не всем.
                                    0
                                    Мне кажется 14 и 15 слайды подозрительно похожи.
                                      +5
                                      Ребята, большая просьба нормализовать звук ведущего и звук вопросов к друг-другу. А то приходится регулятором громкости играть, чтобы услышать комментарии.

                                      Эта проблема всех последних лекций.
                                      • UFO just landed and posted this here
                                          –3
                                          Хорошее университетское образование дает систематизированные знания, которые очень сложно получить (но не невозможно) отрывочным чтением отдельных книг.

                                          Это безусловно не отменяет необходимость самостоятельного образования. Просто это легче делать, когда есть фундамент.
                                          • UFO just landed and posted this here
                                              +10
                                              А вот отсутствие систематизированного знания о существующих системах — это да, беда. Проблема состоит в том, что этого систематизиорованного знания чаще всего в академических кругах тоже не существует. А то, что там знают хорошо и системно, к жизни чаще всего не относится.
                                                +2
                                                я получил систематические знания в школе, просто читая все заинтересовавшие меня книжки по IT. реальная проблема наверно в том, что когда человек запрягается в рабочую упряжку, ему трудно найти столько времени, сколько школьнику/студенту. я объём прочитанного за 3 школьных года оцениваю где-то в 50-100 книг

                                                а вот в области математики у меня вузовского объёма знаний нет, я просто доучиваю отдельные области по мере появления к ним интереса
                                                  0
                                                  У меня сложилось такое мнение, что наши вузы дают т.н. будущему специалисту набор отрывочных знаний и фундаментальный апломб, которым некоторые, как 35 см прибором меряться с другими стремятся. (:
                                                –1
                                                Можно, но в универе есть тусовка. Студенты друг другу помогают, тем самым знания расширяется багаж знаний и скорость их усвоения.
                                                • UFO just landed and posted this here
                                                    –4
                                                    Ну а чего вы в лучшие вузы страны не поступали? ФизТех? Бауманка?
                                                    Или вы категоричны тодлько по отношению к другим, но не к себе? Конкуренцию не выдержали? Пошли по легкому пути?
                                                    +2
                                                    Идеальный мир дружбы всея и всех ;)
                                                      0
                                                      на работе то же самое, правда коллектив меньше. тут вспоминается первое правило выпускника — идти в большую продуктовую контору с хорошо поставленными процессами разработки
                                                  • UFO just landed and posted this here
                                                      +1
                                                      В случае CS высшее образование может быть даже вредно. При изменении технологий старые подходы могут оказываться неверными, а переучивать человека сложнее, чем учить сначала.
                                                      Второй момент: подход вузовской программы. Полная загрузка теорией, в ущерб практике (времени не остается) играет отрицательную роль.
                                                      Мотивация. Увы, постоянное принуждение в вузе заниматься тем, чем нравится, но по не той технологии, может ее на корню убить.
                                                      По поводу знания: область IT — все знания добываются из соответствующей литературы, интернета и на практике реальных проектов. Причем последнее — самое ценное. Нету никаких «сокровенных тайн» или «секретной системы», которые дают исключительно в вузе. Все это есть в открытых источниках, при том можно выбрать для себя наиболее приемлемую форму подачи информации.
                                                      Что обучение в вузе по специальности CS на очной форме реально дает? Кроме стандартных вещей типа тусовок / отсрочка от армии / корка об образовании?
                                                      Тут можно выделить 2 момента: знание терменалогии (в этом у «чистых практиков» часто встречаются проблемы) и наличие той корки о ВО в CS, которая иногда требуется для высших манагерских должностей или для очень бюрократичных проектов. Больше реальной пользы от этого не замечено.
                                                      Все эти выводы основаны на собственном опыте (10 лет в отрасли), многочисленном наблюдении за собой и коллегами, получившими просто высшее образование, образование в сфере CS, без ВО, самоучек и практиков.
                                                      Общий вывод такой: чтобы иметь успехи в IT, нужно как можно больше практиковаться, не забывая уделять внимание фундаментальным вещам в специальности. На практике это значит книжку-другую почитать с основами и теорией. Так же участвовать во всяких тусовках/сообществах, что дает тот самый кругозор и нужные связи.
                                                        +5
                                                        test
                                                          +4
                                                          1. фундаментальные знания нужны
                                                          2. вуз как место где дети тратят 5 ЛУЧШИХ лет своей жизни, силком впихивая в себя случайно выбранный кем-то набор фундаментальных знаний, который кто-то определил как фундаметальное образование — не нужен и даже вреден. это настоящая диверсия

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

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

                                                          но это требует пересмотра подхода ко всей системе работы — начиная от разрешения работать с 10-15 лет, и кончая нынешним непременным 8-часовым рабочим днём. образование должно быть непрерывным, просто у детей его пропорция больше, у старпёров — меньше
                                                            +1
                                                            мне например нравится оптимизация, но не нравятся предметы цикла матанализа.

                                                            Неприятная ситуация. Оптимизация почти всегда основана на довольно глубоких знаниях матанализа ))
                                                              +1
                                                              я говорю про оптимизацию программ. она скорее основана на изучении среды выполнения, к примеру микроархитектуры процессора
                                                                0
                                                                Буквально сегодня оптимизировал одну из программ. По ходу дела пришлось искать минимум функции C/N^2+N*log(N) (точнее, задача была ещё сложнее — минимизировать некую рекуррентую последовательность, подобрав параметры), но это первое приближение). Ерунда, конечно, но хоть немного матана помнить надо. Для оптимизации поиска решения системы уравнений (в задаче про 7 цилиндров) матана было ещё больше… А где проводить грань между оптимизацией программы и алгоритма, не всегда понятно. Особенно, когда алгоритм приходится строить с учётом знания повадок кэша и сборщика мусора. И тоже подбирать оптимальные параметры, чтобы угодить и процессору, и математике (в какой системе счисления наиболее эффективна радикс-сортировка? Эксперимент показал, что 256 — для некоторой конкретной ситуации — но почему?)
                                                                  +1
                                                                  похоже вы сильно преувеличили, утверждая что «Оптимизация почти всегда основана на довольно глубоких знаниях матанализа»?

                                                                  мой цикл оптимизации обычно основан на выборе структур данных чтобы уменьшить число кеш-промахов, борьбе с переходами, увеличении ILP. по большому счёту всё это — задачи кодирования данных, ради них например пришлось познакомиться с полями Галуа. а вот из неэлементарного матанализа для меня интерес представляет только вездесущее преобразование Фурье
                                                                    0
                                                                    Наверное, насчёт «глубоких знаний» преувеличил. Для оптимизации достаточно знать его на уровне «как решать нелинейные системы».
                                                                    А что ещё есть в анализе? Непрерывность, производные, интегралы, последовательности и ряды, преобразование Фурье, дифференциальные формы. В общем, всё бывает когда-нибудь нужно.
                                                                  –3
                                                                  Ну и будете с этим сакральным знанием микроархитектуры процессора простым перебором искать минимум функционала… удачи! пару десятков тысяч лет, ога

                                                                  Ну а мы как-нибудь со знанием «матана»(все понимают, что за этим словом много чего еще стоит) и без знания конкретных спецификаций процессора вполне себе обойдемся величинами на несколько порядков меньше ваших
                                                                    +2
                                                                    С тем же успехом вы со своим матаном можете оказаться перед каким-нибудь слабеньким процессором с софтверной реализацией вещественной арифметики, и так и не понять, почему ваш идейно чистый и политически грамотный алгоритм так медленно ворочается и проигрывает непонятно как написанному перебору неизвестно чего на целых числах. Тут одной стороной обойтись трудно, надо бы знать (хоть в какой-то мере) все аспекты — от метаматематики до конвейера.
                                                              0
                                                              Хочу вставить свои 5кп. У меня нет образования (т.е оно очень лениво и в процессе), имею 3 года опыта, поменял несколько проектов, включая должность релиз инженера, сейчас пишу на Скале. Пока никому не мешало мое отсутсвие формального образования. На самом деле оно мне нужно лишь по одной причине — хочу пожить в Европе, а блю кард без него не получить, и это еще один большой плюс формальной учебы. Если бы не учеба «для бумажки», предпочел бы сидеть с курсерой и учить таки основы CS, дополняя все остальное (т.е математику) по мере надобности.
                                                                0
                                                                Рассуждая практически, а зачем нужны специалисты? Чтобы эти ребята работали, писали код который приносит *прибыль*.

                                                                Если у вас задача стать профессором Computer Science и написать кучу книг, то университет это прекрасное начало. Но ваши навыки не будут полезны для (массового) бизнеса. Чувак знающий jquery/javascript (не обязательно даже знать между ними разницу), имеющий опен сорс, красиво оформивший профайл в линкедине и пишущий рабочий код устроится на работу без труда.

                                                                Говоря простыми словами все зависит от вашей жизненной цели, если вы хотите быть крутым умным программистом, то универ один из способов. Если вы просто хотите стать востребованным высокооплачиваемым кодером то универ даже не в топ 5 вещей которые вам надо делать (а делать надо опен сорс, пиарится, ездить по конфам, изучать реальные и используемые технологии).
                                                                  +1
                                                                  скажем так — изучая эти технологии, вы на определённом уровне наткнётесь на CS и математику. но я согласен с тем, что не надо ставить телегу впереди лошади — сначала изучая математику, затем CS, а потом заканчивая вуз и начиная программировать на PHP. пусть ребёнок начнёт с PHP, если затем доберётся до области где будет нужна математика — изучит, чи ни — то ни. может он окажется отличным менеджером или художником

                                                                  а у нас дети сначала выбирают вуз случайным образом, затем 5 лет копят знания про запас, а затем оказывается что это не их уровень и они идут в м-видео торговать. и всё это, заметьте — за наш с вами счёт
                                                                    0
                                                                    Задача ребенка зарабатывать деньги когда он будет взрослым. По этой причине начать с PHP лучше чем с универа.
                                                                  +1
                                                                  «Если бы программист мог самостоятельно протестировать все возможные пути выполнения»

                                                                  Haskell?
                                                                    +3
                                                                    проблема остановки? :)

                                                                  Only users with full accounts can post comments. Log in, please.