Как получить степень в области компьютерных наук более выгодно, чем быть программистом-самоучкой?

954
75
1
Лучший ответ
995

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

Позвольте мне рассказать вам историю.

Я работал в небольшой компании по продаже компьютеров до MS-DOS. У нас был клиент, который писал программу для записи песен, которые ежедневно играли радиостанции. Он позвонил нам, потому что был в отчаянии. «Мой вид занимает 27 часов, чтобы отсортировать песни дня», что явно недопустимо. Он умолял нас предоставить ему секретный доступ, который позволил бы ему обойти нашу систему и напрямую запрограммировать компьютер. Благодаря геркулесовским навыкам программирования на машинном языке ему удалось отсортировать свои записи в памяти за все еще неприемлемые 17 часов. Все еще отчаявшись, он снова позвал на помощь.

«Сколько записей вы сортируете?» - спросил я.

«Несколько тысяч», сказал клиент.

Это было явно смешно. Машина должна была быть в состоянии отсортировать столько записей менее чем за час. Я подумал спросить: «Какой сорт вы используете?»

«Слияние сорта», ответил клиент.

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

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

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

ответил(а) 2019-12-24T15:32:08+03:00 1 год, 5 месяцев назад
185

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

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

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

Сегодня я инженер QA, а мой друг - старший разработчик программного обеспечения. Несмотря на то, что я получил образование в школе CS, я никогда не буду лучшим программистом, чем мой друг (но это нормально, потому что я очень счастлив и успешен, будучи QA). Когда мы идем на собеседование на этом этапе нашей жизни, никто никогда не спрашивает о нашем образовании или степени; это все о наших прошлых проектах и ​​о том, какие инструменты мы знаем.

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

ответил(а) 2019-12-24T15:32:08+03:00 1 год, 5 месяцев назад
99

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

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

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

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

Вот почему и степень или самоучка имеют свои недостатки.

ответил(а) 2019-12-24T15:32:08+03:00 1 год, 5 месяцев назад
57

Если вы закончите степень в CS, вы узнаете много информации. Кое-что из того, что вы не узнали бы самостоятельно, потому что это не звучало так интересно. И все же часть этого окажется ценной.

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

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

Так лучше всего делать и то, и другое. Зачем соглашаться на один?

ответил(а) 2019-12-24T15:32:08+03:00 1 год, 5 месяцев назад
41

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

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

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

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

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

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

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

-работы с более высокими барьерами входа (НИОКР)

работы начального уровня

Некоторые степени CS также лучше, чем другие. Наличие большого компонента Gen Ed также бесполезно.

ответил(а) 2019-12-24T15:32:08+03:00 1 год, 5 месяцев назад
41

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

ответил(а) 2019-12-24T15:32:08+03:00 1 год, 5 месяцев назад
42

Я хотел ответить на этот вопрос, потому что он полностью изображает мою жизнь.

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

Я хотел бы отметить, что компьютерные науки не имеют ничего общего с программированием.

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

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

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

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

0 1 0 f (x) d x ∫ 0 1 f (x) d x \ int_0 ^ 1 f (x) dx

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

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

Зачем вам теоретическая информатика как программист? Что ж…

Теория сложности позволяет понять, эффективен ли созданный вами алгоритм; Теория вычислимости позволяет понять, разрешима ли разрешимая проблема (разрешима); Формальная проверка дает вам инструменты для проверки правильности алгоритма;

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

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

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

ответил(а) 2019-12-24T15:32:08+03:00 1 год, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема