Какие области специализации в программировании вы бы порекомендовали новичку [закрыто]
-
08-06-2019 - |
Вопрос
Я студент, изучающий разработку программного обеспечения, и я считаю, что программирование в целом - слишком широкая тема, чтобы пытаться знать все.Чтобы быть опытным специалистом, вы должны решить, на каких областях следует сосредоточить свое обучение и понимание.Определенные наборы навыков взаимодействуют друг с другом, такие как веб-разработка на основе данных и опыт работы с SQL.Однако весь мировой опыт работы с win32 API может быть неприменим непосредственно к разработке Linux.Это наводит меня на мысль, что как начинающий программист, я должен начать решать, на чем я хочу специализироваться, после того, как у меня будет общее представление об основных принципах разработки программного обеспечения.
На самом деле это вопрос, состоящий из нескольких частей:
- Каковы общие специализации в области компьютерного программирования и разработки программного обеспечения?
- Какая из этих специализаций имеет более долгосрочную ценность, как основа для других специализаций и / или как востребованные навыки?
- Какие наборы навыков дополняют друг друга?
- Существуют ли какие-либо области специализации, которые препятствуют вашей способности развивать другие области специализации?
Решение
Бен, почти все опытные программисты все еще изучают программирование.Когда вы являетесь разработчиком, вы никогда не перестаете чему-либо учиться.Но если вы действительно начинаете свою карьеру, то вам меньше всего следует беспокоиться о специализации.Все API, фреймворки и навыки, которые, как вы ожидаете, обеспечат вам долгосрочное существование в этой области, не будут реализованы.Кажется, технологии сильно меняются, и вы должны быть достаточно универсальными и гибкими, чтобы научиться чему угодно.Знания, которые вы приобретаете на одной платформе / api / фреймворке, не исчезают.Вы можете применить полученные навыки к следующей по величине платформе / api / фреймворку.
При этом вам следует просто перестать беспокоиться о будущем и сосредоточиться на основах.Структуры данных, анализ и проектирование алгоритмов, разработка компилятора, разработка операционной системы - вот самый минимум того, что вам нужно.И, кроме того, вы должны быть готовы вернуться к чтению книг в этой области в любой момент вашей карьеры.Это все, что требуется.Удачи.
Извините, если я прозвучал как большой придурок-консультант;но это то, что я думаю.:-)
Другие советы
Не хочу прямо отвергать вашу посылку, но я действительно думаю, что быть специалистом широкого профиля - хорошая должность в программировании.Вы, безусловно, приобретете опыт в определенных областях, но, скорее всего, это будет продиктовано либо личным интересом, либо рабочей необходимостью.Со временем материал, который вы способны переносить между языками и проблемными областями, становится основой того, что делает хороших программистов.
Я думаю, что более важный вопрос заключается в следующем:Какие области специализации вас больше всего интересуют?
Как только вы узнаете, начинайте учиться в этой области!
Я бы подумал, что величайшим умением из всех было бы приспосабливаться ко времени, потому что, если ваш работодатель видит в вас этот потенциал, ему было бы разумно крепко держаться.
Тем не менее, я бы посоветовал вам погрузиться в ту область, которая ВАМ понравится. Обучением движет энтузиазм.
Поскольку в настоящее время я работаю у интернет-провайдера, я нахожу знания в области сетевого взаимодействия особенно полезными.Но когда-нибудь я хотел бы поиграть с 3D-графикой (не обязательно в игры).
Идите как можно глубже, начиная с одной среды, win32, .net, Java, Objective C...неважно.
Важно сформировать глубокое понимание того, как работает X...чтобы вы могли перевести те же концепции на другие языки или платформы / среды, если пожелаете.
"Есть ли какие-либо области специализации, которые препятствуют вашей способности развивать другие области специализации". Вроде того, но ничего постоянного, я думаю.
Поскольку я сам относительно зеленый (менее 4 лет) Я придерживаюсь действительно ООП-мышления.Я редко вылезал из .NET, поэтому на одной работе мне пришлось нелегко, когда я столкнулся со встроенным кодом.Со встроенными программистами, опасающимися создания объекта и потери производительности из-за наследования.Мне пришлось изучить окружающую среду, серьезно ограниченную память и медленное время работы часов, из которых они исходили.Это время для роста, и у меня это получалось лучше, потому что я довольно хорошо понимал свою область.
Я скажу, что если вы выберете что-то для специализации из соображений конкурентоспособности и денег, вы, вероятно, быстро прогорите.Если вы все-таки начнете специализироваться, выберите то, что вам нравится.Я люблю программирование с графическим интерфейсом и ненавижу серверную часть, мой приятель - наоборот, но мы оба любим свою работу.Если бы ему пришлось выполнять мою работу, а мне - его, мы бы оба сошли с ума от скуки.
Как студент, я бы порекомендовал забыть о том, что вы программируете, и сосредоточиться на самом процессе разработки программного обеспечения.Понимать, как анализировать проблему и задавать правильные вопросы;изучите все шаблоны проектирования, какие только сможете, и на самом деле примените их все получить реальное представление и высокую оценку объектно-ориентированного проектирования;пишите тесты, а затем кодируйте только столько, сколько вам нужно для того, чтобы тесты прошли успешно.Я думаю, что лучший способ действительно научиться - это просто кодировать как можно больше - язык и домен не важны, просматривайте кузница- источник и свежее мясо присоединяйтесь к любым интересно звучащим проектам и принимайте участие.Что важно, так это понимание основ разработки программного обеспечения.
И да, это включает в себя C.Или ассемблер.Это самый простой способ получить хорошее представление о том, как работает ваш компьютер и что на самом деле делает ваш высокоуровневый код.
Наконец, никогда не прекращайте учиться - сервис-ориентированная архитектура, инверсия контроля, языки, зависящие от предметной области, управление бизнес-процессами - все это дает огромные преимущества, поэтому о них важно знать, - но к тому времени, когда вы закончите обучение и присоединитесь к рабочей силе, кто знает, каким будет следующее крупное событие?