Какие области специализации в программировании вы бы порекомендовали новичку [закрыто]

StackOverflow https://stackoverflow.com/questions/17320

  •  08-06-2019
  •  | 
  •  

Вопрос

Я студент, изучающий разработку программного обеспечения, и я считаю, что программирование в целом - слишком широкая тема, чтобы пытаться знать все.Чтобы быть опытным специалистом, вы должны решить, на каких областях следует сосредоточить свое обучение и понимание.Определенные наборы навыков взаимодействуют друг с другом, такие как веб-разработка на основе данных и опыт работы с SQL.Однако весь мировой опыт работы с win32 API может быть неприменим непосредственно к разработке Linux.Это наводит меня на мысль, что как начинающий программист, я должен начать решать, на чем я хочу специализироваться, после того, как у меня будет общее представление об основных принципах разработки программного обеспечения.

На самом деле это вопрос, состоящий из нескольких частей:

  1. Каковы общие специализации в области компьютерного программирования и разработки программного обеспечения?
  2. Какая из этих специализаций имеет более долгосрочную ценность, как основа для других специализаций и / или как востребованные навыки?
  3. Какие наборы навыков дополняют друг друга?
  4. Существуют ли какие-либо области специализации, которые препятствуют вашей способности развивать другие области специализации?
Это было полезно?

Решение

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

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

Извините, если я прозвучал как большой придурок-консультант;но это то, что я думаю.:-)

Другие советы

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

Я думаю, что более важный вопрос заключается в следующем:Какие области специализации вас больше всего интересуют?

Как только вы узнаете, начинайте учиться в этой области!

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

Тем не менее, я бы посоветовал вам погрузиться в ту область, которая ВАМ понравится. Обучением движет энтузиазм.

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

Идите как можно глубже, начиная с одной среды, win32, .net, Java, Objective C...неважно.

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

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

Поскольку я сам относительно зеленый (менее 4 лет) Я придерживаюсь действительно ООП-мышления.Я редко вылезал из .NET, поэтому на одной работе мне пришлось нелегко, когда я столкнулся со встроенным кодом.Со встроенными программистами, опасающимися создания объекта и потери производительности из-за наследования.Мне пришлось изучить окружающую среду, серьезно ограниченную память и медленное время работы часов, из которых они исходили.Это время для роста, и у меня это получалось лучше, потому что я довольно хорошо понимал свою область.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top