Яка різниця у багаторічному досвіді розробника з мовою? [зачинено]


9

Як зазначається в назві, яка різниця в роках досвіду даної мови з точки зору розробників? Наприклад, якщо один розробник мав п'ять років роботи з мовою A, а інший розробник два роки працював з мовою B, а потім три роки роботи з мовою A, чи існувала б помітна різниця між ними?

Відповіді:


26

"це залежить"

Досвід <> знання чи розуміння.

Програміст 1 може бути дуже хорошим, навіть гуру, або вони можуть бути кимось, хто блукає з мовою протягом останніх 5 років.

Програміст 2 може бути тим, хто розуміє поняття незалежно від мови, якою вони користуються. Або хтось, хто знайшов мову Б занадто важким і сподівається, що A легше.

Кодування «Міфу про роки досвіду» Хоррора варто прочитати


6
Як кажуть, ваш розробник може мати п'ять років досвіду роботи з мовою A - або він може мати один рік досвіду, повторений п'ять разів.
Carson63000

1
+1 для правдивості - я працював з новими наймитами з досвідом 8+ років, які виявилися в кращому випадку середніми. І навпаки, ми просто найняли хлопця за 1 рік з університету, і він перевищив усі очікування.
Дамовіса

4

Це залежить.

У мене є друг, який прагне дотримуватися однієї мови, тому, якщо ви вважали його "програмістом А", він має 1 рік досвіду роботи з цією мовою, п'ять разів.

Різні мови дозволяють робити різні речі. Один твір, який мені особливо подобається, називається Полом Гремом « Побиття середніх ». У ньому він намагається переконати людей навчитися лісп, але він також робить деякі дуже корисні моменти:

Програмісти дуже прив’язані до своїх улюблених мов, і я не хочу когось шкодити почуттям, тому для пояснення цього моменту я буду використовувати гіпотетичну мову під назвою Blub. Blub падає прямо посеред континууму абстрактності. Це не найпотужніша мова, але вона більш потужна, ніж мова Кобола чи машини.

А насправді наш гіпотетичний програміст Blub не використовував би жодного з них. Звичайно, він не програмував на машинній мові. Ось для чого компілятори. А що стосується Кобола, він не знає, як хтось може щось зробити з цим. Він навіть не має x (функція Blub на ваш вибір).

Поки наш гіпотетичний програміст Blub дивиться на континуум живлення, він знає, що дивиться вниз. Мови менш потужні, ніж Blub, очевидно, менш потужні, тому що їм не вистачає певної функції, до якої він звик. Але коли наш гіпотетичний програміст Blub дивиться в інший бік, вгору з континуумом живлення, він не розуміє, що шукає. Те, що він бачить, - просто дивні мови. Він, мабуть, вважає їх за еквівалентні Блубу по силі, але з усіма цими іншими волохатими речами також кинуті. Блуб для нього досить хороший, тому що він думає в Блубі.

Однак, коли ми переходимо до точки зору програміста, використовуючи будь-яку з мов, що піднімають континуум потужності, однак ми виявляємо, що він у свою чергу дивиться на Блуба. Як можна щось зробити в Blub? Цього навіть немає у.

Як правило, моя порада полягає в тому, щоб вивчити більше однієї мови та дізнатися, які саме сильні та слабкі мови.


Я згоден, важливо знати кілька мов. Мови - це інструменти в нашій панелі інструментів, і знаючи, які їх сильні та слабкі сторони є важливими для отримання роботи. Можна прибити цвях викруткою або молотком або плоскогубцями, але один працює набагато краще, ніж інші. Звичайно ж, молот важка для зняття гвинта або затягування або розпушування гайки на болті.
Олов'яний чоловік

2

Звичайно, розробник, який має більше років досвіду роботи на одній мові, буде краще розуміти основні бібліотеки та ідіосинкразії цієї мови. Якщо мови сприймають ту саму парадигму (імператив проти vs функціоналу), то вони не повинні мати більше проблем з вибором цієї мови, окрім вивчення цього.

Моя найбільша складність у пошуку нової мови виникла від спроби переключитися з C # на Erlang, оскільки вона являла собою не лише новий синтаксис, але й новий спосіб мислення і щодо програмування.


5
Якщо припустити, що розробник грамотний.
gbn

2
@gbn: Я можу вас абсолютно запевнити, що в моєму випадку ви не можете зробити таке припущення :)
Watson

2

Ось що я сподівався / сподіваюся:

  1. Безперебітність - вони повинні мати можливість записувати більше коду вгорі голови та менше часу шукати синтаксис.
  2. Знайте різницю між попередньою та поточною версіями та як перенести код з однієї на іншу.
  3. Повніше розуміти компіляцію, розповсюдження, тестування та створення оновлень та патчів.
  4. Створюйте / включайте надбудови в IDE та отримуйте ефективність від них.

2

Мови - це не проблема. Ви можете вивчити всю мову за пару днів. Для поглинання потрібно більше конвенцій, API та різних сторонніх фреймворків. Коли люди запитують п'ять років Х, вони не переймаються мовою, вони хочуть, щоб хтось із великим досвідом вирішує проблеми з мовою та з цією мовою, щоб їм не довелося платити за будь-яку криву навчання.


Ви можете вивчити всю мову швидко, але якщо є якісь поняття, яких ви не знаєте, це потребує часу. Не всі мови мають однакові поняття.
Девід Торнлі

2

Експертиза та обдумана практика.

Якщо ви не практикуєтесь навмисно, ви не отримаєте досвіду. (Ви повинні вивчити свої помилки та виправити їх, практикувати, у чому ви слабкі, і допомогти експерт, який би сказав вам, що ви робите неправильно, також допомагає.)

Якщо ви не намагаєтеся вдосконалитись, ви можете назавжди стати новаком!

Після десяти тисяч годин свідомої практики ви досягнете досвіду. (Цей висновок в освіті / навчанні є по всій мережі.)

Якщо ваш програміст A навмисно не практикується, вони ніколи не покращуються.

Якщо ваш програміст B навмисно не практикується, вони ніколи не покращуються.

Ще одне висновок із цього ж дослідження: якщо у мене 15000 годин, а у тебе 10000, а я продовжую займатися, так і ти, ти ніколи не будеш кращим за мене.

Знання двох мов, ймовірно, зробить B кращим програмістом (за умови дотримання правил).


1

І ви використовуєте їх для мови A, я припускаю? (Зрозуміло, було б різницею мови Б.)

Частково це залежить від відмінностей між A і B (особливо якщо скоротити досвід другого розробника з A). Якщо вони досить схожі, різниці в досвіді по суті не буде. Якщо A має значно інші поняття, три роки все ще достатньо, щоб засвоїти їх. Враховуючи дуже велику бібліотеку та складні інструменти, може бути різниця між трьома та п’ятьма роками.

Звичайно, найважливіше тут - це людина. Хороший розробник може досконало вивчити нову платформу за три роки, тому це не повинно бути проблемою.


1

Я погодився б, що мова - це мова, а поняття - поняття.

Моя проблема полягає в тому, що в наші дні існує велика кількість програмістів, які без складного IDE взагалі не могли програмувати. Вони насправді не програмісти, але насправді більше схожі на дизайнерів.

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

Ці люди ніколи не зможуть прийняти вивчені ними поняття та застосувати їх до іншої мови.

Коли я опитую людей, мене більше цікавить, як вони зробили свою розробку та які рамки використовували. Мені подобається задавати питання на кшталт «Як ви пишете обробник подій?», «Як саме ви вводите дані в БД?» Або навіть «Як я перетворюю цю конкретну кнопку фіолетовою, коли натискаю на неї?» це швидко відлучить дизайнерів і залишить програмістів. Я виявив, що 3 або 4 роки насправді програмування з роком на мою мову вибору достатньо для того, що мені потрібно.

Просто інша думка,

Тал


1

"Багаторічний досвід роботи з X мовою / платформою" є значною мірою патологією набору персоналу ...

Він відкритий для інтерпретації і ніде не є таким корисним, як здається на перший погляд. Як було сказано, « Міф про роки досвіду» - це добре прочитане.

Крім того, важливо, що саме вимірювання "років досвіду" може бути дуже неточним. Ось приклад з мого поточного концерту: моє головне завдання - розробка та підтримка веб-додатку Java. Однак це закінчується зворотним кінцем, який є MFC / C ++ / SQL Server. Отже, я майже щодня маю справу з кодом C ++. АЛЕ - цей досвід C ++ є відносно поверхневим та орієнтованим на обслуговування, і я вже не пишу цілих великих компонентів чи програм з нуля в MFC / C ++ (хоча раніше я працював).

Чи можу я все ж вважати ці останні 5 років "5 років досвіду C ++"? Можливо. Можливо ні. Залежно від того, як я хочу продати його, щоб забезпечити певну роль, я можу легко переграти його без відвертої брехні, або можу визнати, що це насправді не було 5 суцільних "років досвіду C ++". :) Я впевнений, що багато випадків є подібними до подібної проблеми "неточності вимірювання". Глибина досвіду може значно зменшити якість досвіду. Отже, "X кількість часу, проведеного за допомогою C ++", саме по собі не означає багато.


-1

Так, програміст 1 не має синтаксичного знання мови B.

Концепції програмування - це концепції програмування. Мова - це просто синтаксис.


5
о, так неправильно ...
Хав'єр

Право Хав'єра, мова - це набагато більше, ніж синтаксис ... є умовні умови, сторонні бібліотеки, API, які ви вивчаєте з досвідом.
Daniel S
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.