Сколько времени занимает опытный программист для становления опытным с новой технологией / язык? [закрытый]

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

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

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

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

5
задан 2 revs, 2 users 100% 30 June 2011 в 18:39
поделиться

9 ответов

Это зависит не только от конкретного человека, но и от конкретной технологии, а также от индивидуального опыта; определенные технологии, особенно Языки просто усложняются и медленнее. Я видел, как гуру Java мирового уровня, не знакомые с C ++ ранее, занимали много месяцев, скажем, порядка шести или около того, чтобы полностью продуктивно работать на C ++; наоборот (гуру C ++ мирового класса с нулевым опытом работы с Java), как я видел, это занимает около 2-3 месяцев; Опять же, для чрезвычайно опытных и квалифицированных программистов, ранее не знакомых с динамическими языками, полная продуктивность в Python может занять 3-4 недели. В каждом случае я говорю о 100% -ном постоянном участии в соответствующей технологии программиста из одного процента лучших в мире с точки зрения навыков и опыта, в команде, состоящей из нескольких других программистов того же уровня, которые также являются гуру в конкретном используемом языке.

Факторами, которые могут сократить время, являются предыдущее знакомство с «похожими» языками / технологиями, например, солидный опыт в C делает C ++ немного быстрее Чтобы учиться, солидный опыт работы с C # помогает с Java, солидный опыт работы с Ruby или Perl помогает с Python. Факторы, которые могут увеличить время, включают отсутствие достаточно опытных товарищей по команде, отсутствие 100% погружения в «новую вещь» и психологическое сопротивление (не совсем желание делать это всем сердцем! -).

Я сосредоточился на языках программирования для своих примеров, но некоторые технологии могут быть еще сложнее, т. Е. Требовать больше времени для освоения - если вы никогда не писали встроенные программы реального времени (не допускается динамическое выделение памяти , доказательства верхнего предела времени отклика, необходимого для всех функций) даже шести месяцев может быть недостаточно; некоторые прикладные области требуют владения предметными областями, что само по себе может занять даже больше времени (если вы вообще понимаете, что происходит, и, следовательно, чтобы быть полностью продуктивным, вам нужен эквивалент бакалавра психологии или глубокие знания в области психологии. Юриспруденция, квалификация CPA и т. Д., Ну, на все это уходит годы!)

4
ответ дан 18 December 2019 в 09:07
поделиться

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

например, ранее в этом году я попробовал C #, исходя из перспективы Java. Все было очень просто. Однако сейчас я пробую Scala. Из-за функционального аспекта я ожидаю, что буду изучать и оттачивать свои навыки намного дольше (вы можете писать Scala в императивном стиле, но при этом вы не используете его сильные стороны).

5
ответ дан 18 December 2019 в 09:07
поделиться

Это действительно зависит, в основном, от того, насколько язык похож на язык, который они уже знают, а также от индивидуальных способностей при изучении нового. Переходить между похожими языками, такими как C ++, Java и C #, очень просто. Точно так же переход от (скажем) Win32 к MFC к .net будет проще, чем с MFC к MacOS.

Переход с C на C ++, вероятно, займет больше времени, поскольку программист должен изучить методологии объектно-ориентированного программирования. Переход с C ++ на Perl или ML может занять намного больше времени!

Однако обычно вам не нужно много знать, чтобы начать работу. Переход с C ++ на C # может быть выполнен за несколько часов чтения (об основных отличиях), а затем вы можете начать писать (или изменять существующий) код. Это потому, что (а) вы уже знаете, как создавать объектно-ориентированное программирование, и (б) 95% синтаксиса идентичны.

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

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

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

2
ответ дан 18 December 2019 в 09:07
поделиться

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

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

Надеюсь, это поможет.

1
ответ дан 18 December 2019 в 09:07
поделиться

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

Существует также неизбежный отчет о проблеме «Это не работает; исправьте» от персонала службы поддержки клиентов. Часто проблема не в дефекте нашего программного обеспечения; это проблема с другими объектами, с которыми взаимодействует наше программное обеспечение.

2
ответ дан 18 December 2019 в 09:07
поделиться

+1, потому что это зависит.

Это зависит от таких вещей, как

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

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

1
ответ дан 18 December 2019 в 09:07
поделиться

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

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

Двадцать три рабочих дня, шесть часов, сорок три минуты и семнадцать целых девять десятых секунды.

Что они делают. ты делаешь в своих проектах? Как вы распределяете время для учета обучения.

Я думаю, что эти вопросы лучше!

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

Обучение происходит постепенно. Можно продолжать изучать детали, скажем, синтаксиса C ++ на протяжении всей жизни. Когда кто-то является «экспертом» в какой-либо теме, это просто означает, что выгода от изучения этой темы становится меньше.

1
ответ дан 18 December 2019 в 09:07
поделиться

См. Статью Питера Норвига «Научитесь программированию за десять лет» , чтобы узнать о том, сколько времени нужно, чтобы научиться программировать.

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

В качестве примера я реализовал веб-приложение PHP / MySQL пару лет назад (общие усилия были 6 месяцев). Это было мое первое достаточно большое веб-приложение и мой первый PHP. Я использовал реляционные базы данных, но это было также мое первое знакомство с MySQL. Как и ожидалось, MySQL появился очень быстро, поскольку на самом деле это всего лишь диалект языка, который я хорошо знал. Что меня удивило, так это то, что PHP тоже появился быстро. Я понял, что он не только заимствовал идеи из PERL и C / C ++, но и вся парадигма кодирования с интегрированными операторами SQL во многом опиралась на мой опыт 90-х годов с Informix 4GL.

другой конец спектра, я никогда не изучал функциональный язык, поэтому я пытаюсь выбрать Scala. Это займет значительно больше времени, и будет долгий период, когда моя Scala будет ощущаться как замаскированная Java, и не будет такой функциональной.

Так ... это зависит от обстоятельств! ; -)

С другой стороны, я никогда не изучал функциональный язык, поэтому я пытаюсь изучить Scala. Это займет значительно больше времени, и будет долгий период, когда моя Scala будет ощущаться как замаскированная Java, и не будет такой функциональной.

Так ... это зависит от обстоятельств! ; -)

С другой стороны, я никогда не изучал функциональный язык, поэтому я пытаюсь изучить Scala. Это займет значительно больше времени, и будет долгий период, когда моя Scala будет ощущаться как замаскированная Java, и не будет такой функциональной.

Так ... это зависит от обстоятельств! ; -)

1
ответ дан 18 December 2019 в 09:07
поделиться

Я согласен, что это зависит от вас.

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

Например, я очень быстро освоил Python (я - Java / C ++ парень), но прошло много времени с тех пор, как я перестал писать код в стиле Java на Python и начал думать функционально.

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

1
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: