Відповіді:
"це залежить"
Досвід <> знання чи розуміння.
Програміст 1 може бути дуже хорошим, навіть гуру, або вони можуть бути кимось, хто блукає з мовою протягом останніх 5 років.
Програміст 2 може бути тим, хто розуміє поняття незалежно від мови, якою вони користуються. Або хтось, хто знайшов мову Б занадто важким і сподівається, що A легше.
Кодування «Міфу про роки досвіду» Хоррора варто прочитати
Це залежить.
У мене є друг, який прагне дотримуватися однієї мови, тому, якщо ви вважали його "програмістом А", він має 1 рік досвіду роботи з цією мовою, п'ять разів.
Різні мови дозволяють робити різні речі. Один твір, який мені особливо подобається, називається Полом Гремом « Побиття середніх ». У ньому він намагається переконати людей навчитися лісп, але він також робить деякі дуже корисні моменти:
Програмісти дуже прив’язані до своїх улюблених мов, і я не хочу когось шкодити почуттям, тому для пояснення цього моменту я буду використовувати гіпотетичну мову під назвою Blub. Blub падає прямо посеред континууму абстрактності. Це не найпотужніша мова, але вона більш потужна, ніж мова Кобола чи машини.
А насправді наш гіпотетичний програміст Blub не використовував би жодного з них. Звичайно, він не програмував на машинній мові. Ось для чого компілятори. А що стосується Кобола, він не знає, як хтось може щось зробити з цим. Він навіть не має x (функція Blub на ваш вибір).
Поки наш гіпотетичний програміст Blub дивиться на континуум живлення, він знає, що дивиться вниз. Мови менш потужні, ніж Blub, очевидно, менш потужні, тому що їм не вистачає певної функції, до якої він звик. Але коли наш гіпотетичний програміст Blub дивиться в інший бік, вгору з континуумом живлення, він не розуміє, що шукає. Те, що він бачить, - просто дивні мови. Він, мабуть, вважає їх за еквівалентні Блубу по силі, але з усіма цими іншими волохатими речами також кинуті. Блуб для нього досить хороший, тому що він думає в Блубі.
Однак, коли ми переходимо до точки зору програміста, використовуючи будь-яку з мов, що піднімають континуум потужності, однак ми виявляємо, що він у свою чергу дивиться на Блуба. Як можна щось зробити в Blub? Цього навіть немає у.
Як правило, моя порада полягає в тому, щоб вивчити більше однієї мови та дізнатися, які саме сильні та слабкі мови.
Звичайно, розробник, який має більше років досвіду роботи на одній мові, буде краще розуміти основні бібліотеки та ідіосинкразії цієї мови. Якщо мови сприймають ту саму парадигму (імператив проти vs функціоналу), то вони не повинні мати більше проблем з вибором цієї мови, окрім вивчення цього.
Моя найбільша складність у пошуку нової мови виникла від спроби переключитися з C # на Erlang, оскільки вона являла собою не лише новий синтаксис, але й новий спосіб мислення і щодо програмування.
Ось що я сподівався / сподіваюся:
Мови - це не проблема. Ви можете вивчити всю мову за пару днів. Для поглинання потрібно більше конвенцій, API та різних сторонніх фреймворків. Коли люди запитують п'ять років Х, вони не переймаються мовою, вони хочуть, щоб хтось із великим досвідом вирішує проблеми з мовою та з цією мовою, щоб їм не довелося платити за будь-яку криву навчання.
Експертиза та обдумана практика.
Якщо ви не практикуєтесь навмисно, ви не отримаєте досвіду. (Ви повинні вивчити свої помилки та виправити їх, практикувати, у чому ви слабкі, і допомогти експерт, який би сказав вам, що ви робите неправильно, також допомагає.)
Якщо ви не намагаєтеся вдосконалитись, ви можете назавжди стати новаком!
Після десяти тисяч годин свідомої практики ви досягнете досвіду. (Цей висновок в освіті / навчанні є по всій мережі.)
Якщо ваш програміст A навмисно не практикується, вони ніколи не покращуються.
Якщо ваш програміст B навмисно не практикується, вони ніколи не покращуються.
Ще одне висновок із цього ж дослідження: якщо у мене 15000 годин, а у тебе 10000, а я продовжую займатися, так і ти, ти ніколи не будеш кращим за мене.
Знання двох мов, ймовірно, зробить B кращим програмістом (за умови дотримання правил).
І ви використовуєте їх для мови A, я припускаю? (Зрозуміло, було б різницею мови Б.)
Частково це залежить від відмінностей між A і B (особливо якщо скоротити досвід другого розробника з A). Якщо вони досить схожі, різниці в досвіді по суті не буде. Якщо A має значно інші поняття, три роки все ще достатньо, щоб засвоїти їх. Враховуючи дуже велику бібліотеку та складні інструменти, може бути різниця між трьома та п’ятьма роками.
Звичайно, найважливіше тут - це людина. Хороший розробник може досконало вивчити нову платформу за три роки, тому це не повинно бути проблемою.
Я погодився б, що мова - це мова, а поняття - поняття.
Моя проблема полягає в тому, що в наші дні існує велика кількість програмістів, які без складного IDE взагалі не могли програмувати. Вони насправді не програмісти, але насправді більше схожі на дизайнерів.
З особистого досвіду я знаю, що є дуже багато людей, яких спокусив тужливе середовище розробки Microsoft. Не помиляється те, що вони викидають текстове поле на екран, а потім встановлюють властивості за допомогою майстра та перетягують дані із зображення бази даних, але чи справді вони кодери будь-якою мовою, якщо все, що вони роблять, - це встановити основні тести рівності?
Ці люди ніколи не зможуть прийняти вивчені ними поняття та застосувати їх до іншої мови.
Коли я опитую людей, мене більше цікавить, як вони зробили свою розробку та які рамки використовували. Мені подобається задавати питання на кшталт «Як ви пишете обробник подій?», «Як саме ви вводите дані в БД?» Або навіть «Як я перетворюю цю конкретну кнопку фіолетовою, коли натискаю на неї?» це швидко відлучить дизайнерів і залишить програмістів. Я виявив, що 3 або 4 роки насправді програмування з роком на мою мову вибору достатньо для того, що мені потрібно.
Просто інша думка,
Тал
"Багаторічний досвід роботи з X мовою / платформою" є значною мірою патологією набору персоналу ...
Він відкритий для інтерпретації і ніде не є таким корисним, як здається на перший погляд. Як було сказано, « Міф про роки досвіду» - це добре прочитане.
Крім того, важливо, що саме вимірювання "років досвіду" може бути дуже неточним. Ось приклад з мого поточного концерту: моє головне завдання - розробка та підтримка веб-додатку Java. Однак це закінчується зворотним кінцем, який є MFC / C ++ / SQL Server. Отже, я майже щодня маю справу з кодом C ++. АЛЕ - цей досвід C ++ є відносно поверхневим та орієнтованим на обслуговування, і я вже не пишу цілих великих компонентів чи програм з нуля в MFC / C ++ (хоча раніше я працював).
Чи можу я все ж вважати ці останні 5 років "5 років досвіду C ++"? Можливо. Можливо ні. Залежно від того, як я хочу продати його, щоб забезпечити певну роль, я можу легко переграти його без відвертої брехні, або можу визнати, що це насправді не було 5 суцільних "років досвіду C ++". :) Я впевнений, що багато випадків є подібними до подібної проблеми "неточності вимірювання". Глибина досвіду може значно зменшити якість досвіду. Отже, "X кількість часу, проведеного за допомогою C ++", саме по собі не означає багато.
Так, програміст 1 не має синтаксичного знання мови B.
Концепції програмування - це концепції програмування. Мова - це просто синтаксис.