Что я пропустил, не изучая компьютер?

Я работаю над написанием приложений С#.NET для небольшой компании. Для тех из нас, кто не имеет степени в программировании, что мы пропустили, может потребоваться годы, чтобы узнать, как учиться?

У меня есть степень в области электронной техники, поэтому мне не нравится, когда я окончил школу в 16 лет и сел с Visual Studio. Я рассмотрел некоторые базовые встроенные C в моих исследованиях, алгоритмах, системах управления, математике и т.д. Я просто чувствую, что должны быть вещи, которые я должен знать, чтобы сделать это, но не делайте этого.

Ответ 1

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

Дискретная математика

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

Структуры данных и алгоритмы

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

Теория вычислений

Я знаю такие темы, как теория и полнота автоматов (P, NP и т.д.), определенно не были охвачены в моей степени EE.

Ответ 2

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

Дискретная математика также может относиться к этой категории наряду с statistics. Это может быть и в области ЭЭ, этот ответ, возможно, слишком пессимистичен.:)

Ответ 3

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

Спустя несколько лет я перешел с моего предыдущего карьерного пути и профессионально занимался программированием. После четырех лет работы я закончил работу над крупной компанией-разработчиком программного обеспечения на своем объекте R и D. Мои коллеги подумали, что у меня есть M.S. в информатике, хотя я никогда не представлял себя как имеющий.

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

Ответ 4

Подумайте о том, чего не пропустили: девушки, вечеринки... просто шутите;)

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

Ответ 11

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

Ответ 12

У меня есть степени в EE и Comp Sci с давних времен:) Есть определенные вещи, которые вы вынуждены учиться в компьютерной программе, но это не все. Есть конкретные вещи, которые вы не изучаете (различные пакеты java, используя Studio для отладки, системы управления версиями, шаблоны, используемые в определенных рамках). Но есть вещи, которые вы изучаете, которые являются хорошими основополагающими знаниями, хотя вы можете не осознавать это в то время (алгоритмы и т.д., Как публиковали люди).

Я также сотрудничал (требуется в U.Cincinnati Engineering College), что было большим опытом. Это заставило меня понять, что есть практические способы использования некоторых, казалось бы, абстрактных вещей, которые вы изучаете в классе, поэтому я был более мотивирован в школе, чем мог бы быть иначе.

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

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

Поэтому я бы порекомендовал всех, склонился или нет, читал книги и статьи о разработке программного обеспечения. Один из моих уроков градиента в области разработки программного обеспечения действительно заставил нас читать такие вещи, как "Мифический человеческий месяц", и это здорово. Мне также нравятся книги по созданию программного обеспечения, такие как McConnell Code Complete. У Джоэла есть хороший список рекомендаций на его сайте:

http://www.joelonsoftware.com/navLinks/fog0000000262.html

Ответ 13

Я начал профессионально программировать на постоянной основе после окончания школы в 1984 году и не занимался каким-либо третьим курсом по компьютерному курсу третьего уровня до начала 90-х. Основными темами, на которых я сосредоточился, были менеджмент в области информационных технологий и дискретная математика, оба из которых я нашел очень полезными. Фактическая часть программирования была довольно слабой, Паскаль из текстовой книги находил материал. Некоторые из классов базы данных были довольно хорошими, однако, нормализация, реляционная алгебра и т.д., А также системный анализ и структурированный дизайн.

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

Ответ 14

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

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


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

Ответ 15

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