Вещи, которые вы должны были выучить в школе, но не обращали на это внимания [закрыто]

42

Этот вопрос заставил меня подумать, что лучше задать вопрос.

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

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

HLGEM
источник
16
Я сожалею о том, что не потратил больше времени на изучение разговорных языков (мне это понадобилось 10-20 лет спустя), но это не связано с программированием.
LennyProgrammers

Ответы:

36

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

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

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

Написание чистого кода - это то, чему не учат (недостаточно) в школе. Мы могли бы сделать настоящий беспорядок в коде и все равно получить A +. «Если приложение работает, это хорошо.» был девиз. Студенты должны научиться писать чистый и высококачественный код и получать за это вознаграждение, это также означает рефакторинг и использование шаблонов или передовых методов, которые они изучили.

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

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

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

Jan_V
источник
1
этот ответ не для ОП, а для его дополнения: чему они должны были научить вас лучше / более подробно
Давка
1
Цель обучения в бакалавриате - ознакомить студента с областью применения. Специализация - это то, что делают на уровне выпускников. Я ожидаю, что кандидаты только что из колледжа будут экспертами во всем. Я ожидаю, что у недавних выпускников университетов будет всесторонний набор основ, которые охватывают разрыв между компьютерной организацией и анализом базовых алгоритмов. Мне все равно, запомнил ли кандидат асимптотические границы всех алгоритмов поиска и сортировки. Я предпочитаю кандидата, который может установить асимптотические границы для реального кода.
битник
3
Разве я единственный, кто искажается, когда «учиться» (неправильно) используется вместо «учить»?
Др-Ян
1
@ dr-jan: Спасибо, что указали на это. Ред.
Jan_V
1
По моему мнению, единственный способ, которым можно научить серьезному написанию программного обеспечения, - это иметь многолетние курсы, на которых вы сможете увидеть свои прошлые ошибки.
Пол Натан
120

Девушки. Вы можете подумать, что я шучу, но это не так.

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

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

Бен
источник
16
Я хотел бы дать этому больше голосов.
5
3
Проводить больше времени с людьми, которые вообще не пользуются компьютерами, - это хорошо (тм)
Роб Аллен
16
48+ человек, которые проголосовали за это, просто тихо вздохнули.
Джордж
В противном случае известен как «Пользователи».
Гэри Уиллоуби
61

Я чувствую, что должен был добавить на 42% больше энергии в статистику.

FrustratedWithFormsDesigner
источник
10
Мы с братом сказали нашей матери в прошлом году, что хотели бы, чтобы мы изучили больше статистики. Я квант, а он врач. О, и моя мама - учитель статов ...
chrisaycock
4
@davka: чаще всего встречается в тестировании, особенно в тестировании производительности. Также в анализе данных, который у меня много в эти дни.
FrustratedWithFormsDesigner
4
@davka - я работаю в компании, управляемой данными, и хороший статистический анализ поможет разработчикам представить свои выводы о том, «почему код х лучше, чем код у», или «да, я могу доказать, что если вы позволите мне Статистический анализ показывает, что если потратить 2 недели на улучшение этой вещи, она ускорится на x% ». Знание того, как применять статистические методы для планирования ваших экспериментов, действительно является целью.
WKL
3
Я думаю, что есть шанс 70 +/- 2%, что я должен был взять статистику.
Захари К
10
60% времени, это работает каждый раз.
Мэтью Читал
51

Письмо было бы одним из самых больших для меня. Я не думаю, что это ограничивается только разработчиками.

Erin
источник
переполнение стека и ведение блога мне очень помогли в этом.
Свиш
36

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

Джейсон
источник
9
+1. Я твердо убежден, что для тех, кто не знает, как программировать, функциональное программирование легче освоить, чем императивное программирование, что императивное программирование легко освоить, если вы знаете функциональное программирование, и что функциональное программирование трудно освоить, если вы научился императивному программированию первым. Следовательно, имеет смысл не только учить функциональному программированию, но и сначала осваивать его , а самое главное - не делать из этого такого большого замысла ! Мне нравится, как это делает SICP. Первое задание появится только через пару сотен страниц, и вы даже не заметите.
Йорг Миттаг
1
+1. Схема отключила меня от функциональных парадигм в течение нескольких лет в колледже, так как у меня был опыт в Си и Си ++, прежде чем я пошел на этот курс. Я не считал это чем-то, на что, как мне показалось, я должен был обратить больше внимания, потому что в старшем году я посещал языковые курсы и использовал SML, и мне это действительно нравилось, а также мне понравился Lisp. Возможно, это просто результат опыта колледжа, благодаря которому мне стало намного проще понять, как использовать эти парадигмы. Я также учу себя Скала и наслаждаюсь этим очень сильно. : D
WKL
1
Я в целом согласен (более функционально в школе), но невозможно доказать, что функциональное программирование легче или сложнее изучать на основе того стиля, который вы выучили первым.
Кевин
34

Регулярные выражения. Я отчетливо помню, как бросал их в колледже. Они были незаменимы для работы.

patrickmcgraw
источник
2
Однако регулярные выражения следует использовать только в качестве сценария последнего случая
billy.bob
Да! Я помню, как думал, как сильно я ненавидел это тогда ... Выучил это для класса и вычеркнуло из головы, пока через несколько лет мне это снова не понадобилось. Тогда я проклинал себя, потому что мне пришлось заново учиться.
Bmw
4
@ m.edmondson, регулярные выражения отлично подходят для простых задач. Возможно, вы делаете что-то не так, если используете их в своем коде (в конце концов, синтаксический анализатор намного лучше), но для обычного поиска и замены в текстовом редакторе они просто хороши.
SK-logic
3
Регулярные выражения - отличный инструмент для использования в командной строке и в мощных редакторах, таких как vim или emacs. Не только для использования в коде.
Стивен Полгер
1
@ m.edmonson, нет - регулярные выражения - это фантастические инструменты, которые нужно выбрать в первую очередь ! Для тех ситуаций, где они применяются - знание, когда они не применяются, там, где требуется опыт.
33

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

btilly
источник
2
Может быть, я просто не пишу достаточно сложные вещи, но единственный раз, когда я должен был знать, Big O был на собеседовании в высокотехнологичной компании. Так что, хотя я выучил это 20 лет назад, так как я не пользуюсь, но раз в 10 лет или около того, я не помню это.
Билл Липер
2
@ bill-leeper: По моему опыту, Big-O - это не то, чем вы пользуетесь каждый день, но это то, что, когда вы знаете, время от времени помогает вам выяснить проблему, о которой вы не знали, или иначе бы не понял. Если вы этого не знаете, у вас никогда не было этих идей и вы не знаете, чего вам не хватает.
btilly
1
@bill, big-O - это просто формализованный способ сказать, что вам нужно быть осторожным с тем, сколько циклов вы помещаете внутрь другого, когда вам нужно масштабировать. Большинство программистов изучают это так или иначе, не зная формального имени.
23

Хотелось бы, чтобы я слушал то, что сказал мне мой учитель, когда мне было 14 лет. К сожалению, я не могу сказать вам, что это было, потому что я не слушал.

user4051
источник
21

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

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

Fanatic23
источник
4
Вау. Что ты делаешь именно? Если вы не возражаете, я спрашиваю =)
четверть
1
@otibom: я работаю с полупроводниками, и у него есть свои специфичные для предметной области языки с достаточно строгими требованиями к производительности.
Fanatic23
18

Я бы сказал, C, а также UNIX. Несмотря на то, что я изучал UNIX вскоре после колледжа, я чувствую, что выиграл бы от более раннего ознакомления с UNIX и C.

Крейг Малони
источник
UNIX? Это все еще преподается в колледжах?
apoorv020
1
Это должно быть ... или хорошо, больше похоже на Linux. Любой программист должен знать немного bash (или другой оболочки).
В Викландере
17
  • Искусственный интеллект / интеллектуальный анализ данных - брал уроки, мне было скучно, спустя годы я самостоятельно изучаю такие темы, как коллективный интеллект. Анализ больших массивов данных имеет большое значение в моей работе и предыдущих работах.
  • Теория / дизайн базы данных - опять же, взяли урок, мне было скучно, поэтому я сам изучал материал о базах данных
  • Просто математика высокого уровня и интересные математические приемы в целом - я взял 4 класса исчисления, линейную алгебру, статистику, вероятность, дискретность ... но я чувствовал, что должен был также сделать:
    • Численные методы
    • Продвинутые статистические методы, даже такие как цепочки Маркова, опять же, связанные с анализом больших массивов данных
  • Взаимодействие человека с компьютером - в школе я не чувствовал, что это каким-либо образом полезно для того, что я буду делать на работе (мне нравилось работать на низком уровне или за кадром), но на любой работе, которую я имел, юзабилити была в центре внимания время от времени.
  • Второй язык - у меня всегда был дар к языкам, но в колледже я не брал язык, и мне трудно пытаться учить японский язык.
WKL
источник
13

Техническое письмо. Я трачу много времени на написание требований, общение с клиентами и коллегами. Это область, в которой у меня был 1 кредитный час в колледже. Единственный другой класс, который действительно помог в моей карьере, был еще один класс с 1 кредитным часом. Это было в программировании на Си. Остальное, хотя и интересно и, вероятно, помогло моим общим аналитическим навыкам, на самом деле не было прямой пользой для моей карьеры.

Конечно, я пошел в школу 20 лет назад, и С считался передовым в электротехническом факультете. Люди из CS делали кое-что с Lisp и C ++, но, вероятно, все еще не так много ОО, как я надеюсь, что происходит с сегодняшними выпускниками.

Билл Липер
источник
11

Проектная документация

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

Рейчел
источник
кто-то другой напишет их, если я не очень хорош в этом, как мне нравится.
Кевин
10

Второй иностранный язык. Русский в моем случае. Множество книг, ресурсов и многого другого на этом конкретном языке в моем окружении.

LFX
источник
@FrustratedWithFormsDesigner да, но когда я был ребенком ... :)
lfx
Я лично изучал французский и немецкий языки и фактически провел некоторое время в Германии. Это то, что каждый должен испытать.
Кен
12
В самом деле? Связанные с программированием ресурсы на русском? Я - носитель русского языка, но вряд ли когда-нибудь воспользуюсь этим, когда ищу материал по программированию. В большинстве случаев ввод английского запроса в Google дает мне ответ. Также технические книги на русском языке часто очень плохо переводятся с английского.
Дима
@Dima, какая сейчас ситуация, я не знаю, но когда я учился в колледже и в школе, каждый учитель говорил это.
lfx
3
@FrustratedWithFormsDesigner: этому я поверю. Конечно, на русском языке много математических материалов. Но если вы говорите о предметах, связанных с компьютером, то вам лучше знать английский.
Дима
8

Со стороны CS вещей:

  • Дизайн пользовательского интерфейса
  • тестирование
  • Контроль версий
  • совпадение

Из категории «все»:

  • Техническое письмо
  • Речевое общение
  • Навыки оценки времени
Tyanna
источник
+1 за тестирование и контроль версий. Серьезно, мы много слышали о том, что тестирование было очень важно ... хотя никогда не учились, как это делать ... (и это была не наша вина. У нас просто ничего не было в этом действительно)
Свиш
7

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

GrandmasterB
источник
7

Очевидно, история и литература. Проблема часто, школа не делает их интересными.

jokoon
источник
Изучая их в качестве домашнего школьника, они могут быть гораздо интереснее.
Мэтью Родатус
6

электроника

У меня не было много программного обеспечения связанных вещей в школе . Ах - информатика, но я отменил это. :) Но это было легко узнать позже. В то время как электроника, я часто не понимаю. Микроконтроллеры, ШИМ, GPIO - WTF? Я хотел бы понять вещи.

неизвестный пользователь
источник
Я взял электронику в (эквивалент ЕС) в старшей школе, потому что не было «чистого» ИТ-выбора. До сих пор рад, что я не только знаю, как использовать компьютеры и периферийное оборудование, но и как они работают.
Винсент Ванкалберг
5

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

Подробный курс был предложен в качестве факультативного, но пришлось выбирать между этим и ИИ: так что, на самом деле, это не сожаление.

CMR
источник
5

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

Омар Кохеджи
источник
Это в целом мешает мне в обучении программированию, мы можем объяснить, как, но не почему. И нет хороших практических примеров. Вот почему у нас есть люди, использующие методы решения проблемы, они выбирают первое, что приходит им в голову, и оно будет работать без знания, чтобы сказать, что этот другой метод лучше подходит для этой конкретной проблемы.
HLGEM
4

Unix, Shellscripting, C. У него была возможность хорошо выучить его в школе, но он должен был сделать это позже на работе.

user281377
источник
4

Не информатика вещи:
Лично я хотел бы, чтобы у меня был родной язык, как у большинства нормальных людей здесь. Под этим я подразумеваю, что большинство людей родились на одном основном языке и, возможно, выбрали другой или два позже. В этой ситуации дополнительные языки обычно не влияют на родной язык, потому что у вас уже есть прочная основа, которая охватывает речь, письмо и аудирование. Я вырос, говоря, писал и слушал на трех разных языках одновременно. Несмотря на то, что я всегда хорошо учился в языковых классах, как в школе, так и в колледже, мне хотелось бы иметь свободное владение ОДНЫМ языком. В результате я должен немного подумать, прежде чем сформулировать ответ. Некоторые люди замечают это и приходят к выводу, что я слишком застенчив (что в некоторой степени не так).

chiurox
источник
4

Экономика. Это может быть скучно (и немного жестоко), но в любом случае это единственное, что действительно необходимо в этом обществе. После этого статистика.

Виктор Пиментел
источник
4

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

Компиляторы операционных систем на ассемблере

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

Кеннет
источник
3

Есть около дюжины уроков, которые я бы хотел в колледже, но не сделал. В основном не CS. Фотография, General Chem, больше пишу!

Захари К
источник
3

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

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

Примите мужество, хотя. По крайней мере, вам не нужно объяснять свое образование каждый раз, когда кто-то смотрит на ваше резюме.

Satanicpuppy
источник
Не могли бы вы объяснить, что вы имели в виду под «моими лучшими курсами по искусственному интеллекту» - «Философия»?
Марк С
@mark: «Когнитивная наука», которая была моей первоначальной специализацией, в основном не что иное, как ИИ, и в значительной степени состоит из философии. Есть два вида философии: аналитическая и континентальная. Все глупые дерьмо континентальные. Аналитика - это логика, винтик. наука, лингвистика и прочее дерьмо.
Satanicpuppy
+1: Я, как майор философии, взял курс под названием «Философия разума». Этот класс был в основном посвящен машинам Тьюринга. Мой консультант по философии был аспирантом по специальности бакалавриат, а мой консультант по философии действительно имел степень доктора философии.
Морган Херлокер
+1: «тебе не нужно объяснять свое образование». И я был там, думая, что в США / Великобритании все было иначе ... Я точно знаю, что вы имеете в виду.
Raveline
3

Квадратные уравнения и тригонометрия.

Очень важно при написании программного обеспечения для традиционных инженерных дисциплин.

angryITguy
источник
Не вычисляет .... поскольку большинство хороших программистов являются инженерами, почему тот, кто испытывает недостаток в своих базовых арифметических навыках, пишет программное обеспечение для инженерных дисциплин, когда есть масса инженеров, которые понимают математику, физику и вычисления ?
Бен Фойгт
@Бен. Хотите верьте, хотите нет ... МНОГИЕ люди умудрились заняться разработкой программного обеспечения, и не получили официального обучения этому. Это, вероятно, до "вашего времени". Я был одним из них .. Мне удалось выучить это, но было бы намного легче, если бы я обратил внимание в школе.
angryITguy
В случае, если это не было очевидно, я выступаю за разработку программного обеспечения инженерами, которые не обучены разработке программного обеспечения. Программирование не сложно освоить, если вы научились мыслить логически. Обучение OTOH для автоматического решения инженерных задач, если не хватает таких базовых математических навыков, как квадратные уравнения, будет практически невозможным.
Бен Фойгт
@Бен. Те, кому не хватает «базовых математических» навыков, теперь называются консультантами по социальным сетям и зарабатывают значительно больше, чем инженеры.
angryITguy
@ Guilio: я с уважением не согласен. На вершине есть несколько инженеров, делающих безумную сумму денег (мы обычно называем их «изобретателями», но они использовали инженерные навыки для разработки продукта). Тогда есть небольшая группа самых востребованных медиа-консультантов. Затем остальные компетентные инженеры, под ними некомпетентные инженеры и рядовые медиа-консультанты, смешиваются. И все они зарабатывают больше, чем ваш средний выпускник колледжа с математикой, который преподает квадратные уравнения следующему классу инженеров.
Бен Фойгт
1

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

user6791
источник
1

CS / Math: больше логики, алгебры, теории категорий. Более фундаментальные и менее прикладные вещи: понимание прикладных вещей, когда вы хорошо знаете основы, намного проще, чем наоборот, и более плодотворно.

(У меня была A в статистике, но это заняло много времени, чтобы связать ее с реальными потребностями в программировании, я много забыл.)

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

9000
источник
1

Компьютерная графика (3D-рендеринг в OpenGL / DirectX)

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

Джо Филлипс
источник