Мне очень нравится слой абстракции Бузина Андерсона , и я с нетерпением жду MYCrypto Дженса Альфке , чтобы достичь работоспособного состояния. Последний делает компетентную работу по разрешению использования в Mac OS X и iPhone с использованием одного и того же кода, хотя его функции имитируют лишь небольшую часть цепочки для ключей.
Мне еще не удалось найти хороший курс CompSci, который бы должным образом подготовил инженеров-программистов к работе. Если вы найдете тот, у которого есть следующее [хотя, я сомневаюсь, можно ли его назвать CompSci, это больше похоже на реальный дизайн программного обеспечения, который представляет собой совсем другое животное].
Информатика - это более теоретический предмет, который имеет очень последствия для реального мира, но более полезен в академическом свете. Например, разработка алгоритмов фантастически полезна для разработчиков программного обеспечения, но на самом деле не приносит прямой пользы потребителю. Например, знание того, как построить алгоритм быстрой сортировки или понимание обхода связанного списка, на самом деле не , поэтому полезно в сегодняшней среде разработки программного обеспечения - конечно, понимание теории помогает выбрать правильные инструменты для работы, поймите меня правильно. Как разработчики, многие из нас полагаются на результаты мира информатики для развития наших инструментов разработки, на самом деле, без них многие разработчики остались бы в затруднительном положении, но поставили выпускника компьютерных наук перед пользователем и заставили его спроектировать значимая часть программного обеспечения для них и академического интеллекта развалится на части, потому что они говорят на совершенно разных языках.
Гораздо более полезный курс для инженеров-программистов будет включать столько (а возможно, и больше) из следующих компонентов, которые я Могу прийти в голову следующее:
И даже если вам удалось выучить все это в своем курсе, я смею сказать, что вы » d по-прежнему узнайте больше за три или четыре месяца стажировки в приличном консультанте по разработке программного обеспечения, чем за весь курс. Я узнал больше за первые 6 месяцев после получения степени бакалавра, чем за все 3 года обучения. По общему признанию, я бы упал с ног на голову без многих вещей, которые я узнал на этом курсе, но было так много того, чему учили без нужды, что можно было бы заменить гораздо более полезным содержанием.
Класс, который нам понадобился для создания чего-то вроде проекта общественных работ. Это потребовало от нас использовать и изучить весь гамбит программной инженерии.
Тем не менее, если учитель не решит поставить несколько глупостей в классе, цель которого состоит в том, чтобы попытаться сделать вещи как можно более сложными, подобный курс будет сильно не хватает ...
Я думаю, что курс, который я прошел, я получил больше всего - это Структуры данных и алгоритмы . Эти знания не зависят от развития технологий и обеспечивают основные инструменты, используемые программистами любого типа.
Дальше все зависит от того, над каким доменом вы хотите работать. Спросите своего консультанта, старшеклассников в вашем колледже и профессоров и поговорите с ними о своих целях и интересах. Они посоветуют вам лучше, чем кто-либо здесь.
Однако не игнорируйте критическое мышление, написание классов. Посещайте занятия, которые позволят вам представить свои идеи и подготовить вас к публичным выступлениям.
Мое мнение ( как английский ИТ-директор) состоит в том, что день в офисе стоит недели в школе, и поэтому, если вы найдете способ получить некоторый опыт, он того стоит.
В остальном просто будьте уверены в своих способностях. ,
Лучшие программисты сразу после колледжа? Я так не думаю, пока в школах не начнут преподавать такие концепции, как сплоченность, взаимосвязь, хорошие практики программирования, контроль версий, управление конфигурациями, современные модели разработки. Что я обычно вижу, так это то, что самоучки хотят делать правильные вещи, обучаясь сами, или, если им повезет, их нанимают в организацию, которая проповедует и практикует хорошие вещи.
Я думаю, что академические пустоты должны быть заполнены студенческими организациями или независимыми студенческими проектами.
В моем университете у нас было студенческое отделение Association of Computing Machinery специально для У нас и у студентов CS была студенческая организация, занимающаяся разработкой видеоигр. Эти организации помогли обучить студентов «реальному миру», пригласив спикеров из отрасли и заставив студентов работать друг с другом.
Я также рекомендовал бы студентам, специализирующимся на компьютерных науках, второстепенных в бизнесе, если они заинтересованы в ведущие группы программного обеспечения или, если студенты хотят стать более технически опытными, они второстепенные в гуманитарных науках. Я знаю, это кажется странным, но я сделал это и я
Дизайн базы данных
Функциональное программирование
Объектно-ориентированное программирование
x Управляемое проектирование
На этот вопрос сложно ответить, но одна вещь, которая, как мне кажется, мешает программистам во многих программах CS, - это отсутствие практического программирования. Важно знать теорию информатики, но я думаю, что многие теоретические программы CS терпят неудачу из-за того, что в их классах не требуются упражнения по программированию. Например, я видел много классов ИИ, для которых требуются исследования и статьи, но нет кода. На мой взгляд, очень важно понимать теорию информатики, но не менее важно уметь ее применять.
Двумя наиболее важными для рабочего места по моей степени инженера по программному обеспечению в Университете Шеффилда были модуль Software Hut на втором курсе, который в течение семестра участвовал в группах, производящих программное обеспечение продукт для реального клиента. Я думаю, было три разных клиента, и команды соревновались друг с другом, чтобы создать для них лучшую систему.
Затем, на четвертый год, треть лет пришлась на управление компанией-разработчиком программного обеспечения, опять же для реальных клиентов. Хотя это не совсем похоже на ведение реального бизнеса, из-за ограничений интеллектуальной собственности на любые продукты, которые мы производим (поскольку мы все еще были студентами университета, работа принадлежала им), мы действительно участвовали в большинстве аспектов управления компанией - за исключением бухгалтерский учет / написание контрактов.
На самом деле, приступая к работе в области программирования, от вас не ожидается, что вы станете старшим разработчиком. День 1. Изучение основ программирования, безусловно, займет у вас долгий путь, но на подъеме я вижу, что довольно много студентов, изучающих информатику, борются в реальном мире, потому что они действительно не знают, во что они ввязываются в первый день. бороться с бизнес-сферами и понимать, почему они делают то, что делают. Они не знают, с кем общаться с другими бизнесменами.
Самыми важными и актуальными являются не курсы CS. Вам нужно будет хорошо общаться. Какие бы курсы вы ни прошли, чтобы стать лучше слушателем / читателем и лучшим писателем / оратором.
Ничто не сравнится со знаниями, полученными при создании проектов, на самом деле не имеет значения, какой это курс, если вы проходите курс по реляционным базам данных, создаете проект библиотечной системы, если вы берете сборку на языке ассемблера такие вещи, как инструменты для ПК с 32/64 битной сборкой.
Вы можете стать лучшим программистом, только занимаясь «Программированием», а не просто посещая курсы и получая высокий средний балл
Компьютерные науки! = Программирование.
Если вы ищете более опытных программистов, ищите людей с образованием из двухгодичной программы колледжа, которая посвящена именно этому.
Класс, в котором вы проводите лето в реальной компании, пишущей программное обеспечение.
Серьезно - уроки CS не предназначены для подготовки хороших программистов. Они предназначены для специалистов по информатике, которые, как побочный эффект, также могут писать программы.
Я бы сказал, что это связь между системами баз данных и курсом Проекта разработки программного обеспечения. Ни один из курсов не требуется для получения степени бакалавра в моей школе, но студенты могут проходить обучение. Некоторое знание баз данных, вероятно, более необходимо, чем алгоритмы для большинства программистов. Работа в команде проекта, даже над курсовым, может помочь вам понять динамику команды и то, как работать в командной среде.
С другой стороны, я твердо уверен, что хорошее понимание фундаментальных тем информатики, включая данные структуры, алгоритмы, операционные системы и т. д. имеют решающее значение для подготовки человека к росту как программиста.
Курс по структурам данных и алгоритмам во время учебы в бакалавриате очень помогает мне на рабочем месте