Коли когось вважали б поганим програмістом? [зачинено]


57

Як ви вважаєте, що програміст погано ставиться до того, що він чи вона робить?

Якщо можливо ... Як йому / їй вдосконалитись?


3
Оскільки зазначена особа не приймає відповіді на веб-сторінці, що стосується програмування. Жартую :-)
Даніель

1
@EvanKroske: Ні, це не так .... Вікі спільноти існують, щоб дозволити спільне редагування публікацій. Дивіться також: Наш мета-тег: community-wiki
Тамара Війсман

У багатьох питаннях неможливо прийняти єдину відповідь. Дивіться також: Наш Мета - Пошук: прийміть
Тамара Війсман

Не кожне запитання отримує відповідь, яка насправді вирішує проблему.
Лорен Печтел

Відповіді:


134

Коли вони не вчаться на своїх помилках та в рецензії.

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


4
Погоджено - у вас повинен бути цикл зворотного зв'язку, завжди вчитися на своїх помилках.
Марсель Ламоте

1
@PSU добре сказала. Як і будь-яке ремесло, програмісти є торговцями і не є досконалими, завжди навчаються, але якщо ви не вчитеся на помилках, ви не вдосконалюєтесь у своєму ремеслі.
Кріс

2
Це дуже широке визначення; це не обмежується програмістами. Це стосується науковців, кухарів, спортсменів, перекладачів, двірників, фотографів і справді будь-якої професії.
RegDwight

13
Кожен дебіл хоча б раз на тиждень.
МВС

@RegDwight: і ваша думка була ...?
СамБ

125

Програміст, який не знає, чого не знає, і зовсім не зацікавлений, щоб це дізнатися.


16
Якби я міг підтвердити це 100 разів, я би. Трохи смирення і голод вчитися змушує багато чого в перспективі.
Вільям Піетрі

1
+1 також для Нгу та Вільяма. Це найбільш типовий критерій поганого «програміста».
fabrik

Що станеться, коли ти знаєш, що ти не знаєш багато, і настільки важко, як намагаєшся, більшість із них ніколи не дізнаєшся?
Стівен Еверс

@snOrfus, ти знайдеш наставника, який тебе навчить ...

75

Великий попереджувальний знак - якщо вони програміст "культового культу" - це означає, що вони роблять речі, але не знають, чому вони роблять це (це просто "магія"). Чудовий пост Еріка Ліпперта тут .

Зі статті:

програмісти, які розуміють, що робить код, але не те, як він це робить.

3
* і кодує цю технологію деякий час
Джо Філіпс

5
Це стосується майже всіх програмістів, які коли-небудь робили якусь веб-розробку з такими рамками, як Java / Spring або Ruby on Rails. Ці рамки сповнені чорної магії, яку звичайні програмісти зазвичай не намагаються зрозуміти.
зниклий фактор

3
@Missing Faktor - а значить, не так би було неточним сказати, що більшість програмістів, які роблять це, не є великими програмістами :)
seanmonstar

14
Знову ж таки, нереально припустити, що програмісти повинні повністю зрозуміти внутрішню роботу фреймворку, віртуальної машини або будь-якого, на чому вони будують код. (Або, справді, деталі всіх шарів абстрагування внизу, поки не буде досягнуто голого металу.) Ви можете бути ідеально хорошим, продуктивним програмістом, навіть якщо знаєте лише найбільш відповідні частини.
Jonik

4
@Missing Faktor: вони, можливо, не розуміють внутрішніх бібліотек та фреймворків, які вони точно використовують, але вони повинні принаймні знати, що означає кожна річ у їхньому коді: "хапати халату", "оскільки документація говорить, що це необхідний для збереження цілісності простору-часу, континууму "тощо.
SamB

45

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

Наслідком є ​​те, коли вони задають одне і те ж запитання програмування кілька разів, вказуючи, що вони не інтерналізують інформацію.


Ага так, я працював з ним. Минуле напруження, на щастя.
Майк Вудхаус

1
Деякі навіть не в змозі скласти гідні запитання, просять вас «просто виправити»
deltreme

21

Коли їм потрібно багато часу, щоб вирішити проблему FizzBuzz.


1
Я думаю, що можуть бути початківці з потенційними можливостями бути хорошими програмістами, які мають з цим проблеми.
JD Isaacks

2
Початківцям добре, якщо ви шукаєте молодшого програміста, якого ви маєте намір сформувати та сформувати в хорошого. Але ця проблема настільки тривіальна, що вона не повинна брати жодного із досвідом взагалі писати.
Метт Дітроліо

8
Я заперечую, що для вирішення цього питання не повинно забирати багато, хто успішно закінчив курс програмування початкового рівня.
EpsilonVector

4
Якщо новачок не може вирішити FizzBuzz, s / він не повинен подавати заявки на завдання програмування. Якщо ви заявляєте, що можете програмувати (наприклад, подавши заявку на програмування), ви повинні мати можливість вирішити FizzBuzz.
Chinmay Kanchi

1
Питання Stackoverflow на FizzBuzz добре варто подивитися. Перевірте рішення python, яке не використовує поділ чи модуль. stackoverflow.com/questions/437/…
Гордон

21

Програмісти, які відмовляються вивчати нові технології / мови та наполягають на дотриманні того, що вони вже знають.


Додаток: (додаючи те, що тире сказано нижче у коментарях)

Розширенням цього є люди, які знають підмножину функціональності деяких технологій, але не виявляють бажання дізнаватися про неї більше. Мова програмування, редактор, інші інструменти ...


6
... і без поважних причин слід додати.
зниклий фактор

18

Коли учасник команди є негативно розвиваючим розробником .

|# Lines Written| - |# Lines of bugs introduced| - |# Lines of rework required| < 0

Це означає, що решта вашої команди повинна більше працювати через поганого розробника. NNPP


1
Я згоден - ці люди можуть бути надзвичайно згубними для своєї команди.
Марсель Ламоте

44
Так ... Я вчора видалив 500 рядків зайвого коду, і не ввів помилок. Метрики LOC вважаються шкідливими?
Пісквор

5
Більшість показників жахливі, а показники LOC зазвичай більше марні. Сенс у тому, що поганий програміст - це той, хто створює більше роботи для команди, ніж він / вона завершує.
danivovich

5
Показники LOC не марні. Вони РІДНІ. Крім того, підрахунок LOC дуже складний у більшості сучасних мов. Але тут не суть метрики. Це просто говорить | Робота над створенням | - | Робота, яка була неправильною | | Час - це те, що ви намагаєтеся отримати в будь-якому випадку.
МВС

1
Показники LOC - це чудовий спосіб виміряти, скільки місць повинні ховатися помилки.
SamB


15

Коли вони знають, що є кращі способи робити речі, але все ж відмовляються їх робити навіть тоді, коли дозволяє час.


Але можуть бути розбіжності експертів щодо того, що "краще".
DarenW

@DarenW - Я б не сказав, що хтось поганий програміст, тому що вони взяли сторону в суперечливій темі, але коли вони мають остаточний вибір у власній свідомості.
JeffO

15

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


5
Що робити, якщо вони не можуть знайти щось не так, і це хвилює їх?
SamB

1
Або ще гірше, вони нічого не можуть знайти і намагаються виправити це.
Toon Krijthe

15

Ті, хто ігнорує попередження щодо своїх кодів і піклується лише про помилки.


14

Коли я був керівником команди в невеликій крамниці, було декілька людей, яких мені довелося перепризначити (ні я, ні мій безпосередній керівник не мали можливості розірвати без тонни Червоної стрічки і купу документації.) Або не поновити контракт наприкінці поточного залучення. Деякі з перерахованих типів також працювали для інших лідерів команд, і вони, в основному, займали той же погляд. Речі, які перевели людей у ​​категорію "Поганий програміст" у моїй книзі:

  1. Недосвідчений або костенізований у минулому
    Коли, здається, "програміст" не може засвоїти нову систему, новий інструмент чи інше, що використовується, незалежно від того, як проводиться навчання / освіта. Доводиться часто повторювати зазначені тренування.
    Коли "програміст" знає лише технологію чи парадигму кодування, яку вони використовували 10 чи 15 років тому. Це було досить добре тоді, то чому вони повинні мінятися?
  2. Ковбойський кодер
    Людина, яка кодує перше, без плану. "Програміст", який вносить неперевірені зміни у виробничий код та / або дані ", тому що ми повинні це виправити зараз", а потім дивується, коли помилка "виправлення" не вдається.
    Ковбой також, безумовно, не гравець команди. Не потрібна смердюча команда.
  3. Флюгер
    Цей «програміст» закоханий з «технологією чергові » і бачить кожен новий рамковий, мова, методологію або будь-які нові та гарячі , як
  4. "Великий мозок"
    Цей "програміст" настільки впевнений у своєму таланті та можливостях, що робиться все, що не має великого сенсу проекту. наприклад, переписування стандартної бібліотеки "тому, що вона неефективна для нашої системи" або введення інструментів та методів, не підходящих для проблеми. наприклад, представлення Lisp або Forth в середовищі мейнфреймів.
  5. LOC a. Пісочниця
    Цей "програміст" використовує затуманення і неправильне напрямок для збільшення а. LOC: Рядки коду, за які платять. Я бачив код у цій ситуації, який був сторінка за сторінкою, екран за екраном дублюючої структури та логіки, із зміною лише назви змінних абзацу та елементів керування, щоб накачати кількість рядків.
  6. Незамінний експерт
    "програміст", який має доменні знання для вирішення проблем, але вони знають "все". Власне кажучи, якби їх вдарив автобус, тоді вся організація зіткнулася б. { Спостереження: Зазвичай такі, хто вважає, що вони незамінні. (Хтось отримав джерело про цей афоризм?)}
  7. Шеф-кухар макаронних виробів
    Цей програміст спеціалізується на коді спагетті, приправленому ідентифікаторами, які занадто важко слідувати без синтаксично реалізованої IDE. наприклад, IndexI1O0, Index1I0O і т.д.
  8. Літній стажер - конкретно підтип Ходяча катастрофа У
    моєму старому магазині колись наймали стажувальників пізньої середньої школи чи коледжу. Одного разу департаменту була потрібна невелика база даних для відстеження використання обладнання (зараз це було відмовою назад, і воно використовувало dBase III). Хлопець кодував усе літо, але цього не робив, коли коледж розпочався восени. Він отримав продовження на тиждень, а потім на другий тиждень. Наприкінці другого тижня мене відправили взяти його проект і повернути його до системи розробки систем. Він показав мені зроблене, а потім незакінчену частину. Те, що працювало, мало приємні очні цукерки, але додаток булонеповний. Коли я відкрив нову скриньку відформатованих дискетів, щоб отримати копії, він сказав: "Лише на секунду, дозвольте мені видалити свої тестові файли ...", і перш ніж я можу щось сказати, він видалив купу файлів.
    Будучи підозрілим і виявивши, що його заява майже не є окрім цукерки, коли я повернувся до свого магазину, я повернувся до відділу і витягнув Нортона та видалив файли, які він видалив, намагаючись знайти додаткову логіку, навіть якщо неповна.
    Я виявив, не погана логіка, але погана поведінка. Принтер, прикріплений до ПК, яким він користувався, був принтом колеса Дейзі. Нормально встановлений набір символів був швейцарським варіантом. У висновку видалених програм виводяться ім’я, адреса, DOB, деякі літерні коди та певний тип ідентифікаційного номера. Формат і макет мене турбували. Усі дати народження для кількох людей були ледь законним віком. Більшість адрес там не було, коли я переглянув їх у нашому перехресному довіднику. Коли я показав роздруківки його керівнику, він подивився на мене і сказав: "Водійські посвідчення, ви не думаєте?" Я сказав, що так і зробив. Він сказав, що саме тому він знайшов запас прозорості весь розрізаний у смітнику поруч із Xerox. Наш поганий хлопчик зробив накладки, щоб підкоригувати його та його друзів віком на посвідчення водіїв. Ми повідомили про це владі.не заплатив за останні два тижні.

Це лише деякі з поганих персонажів, з якими мені довелося працювати ...

/ s / BezantSoft


RE "Ті, хто вважає, що вони є незамінними, зазвичай", нагадують мені en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
DaveDev


10

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


1
А програміст справді поганий, коли він не вміє добре читати код :-)
Маньєро

4
Хіба це не майже всі? Я маю на увазі, чи не завжди код читання важче читати та / або підтримувати, ніж повинен бути?
SamB

Ні. Код завжди легше написати, ніж прочитати. Але мені довелося підтримувати дуже добре написаний код, який максимально зменшив цей біль.
Chinmay Kanchi

10

Коли ніхто більше не може прочитати його код. Не має значення, наскільки ви яскраві; жоден програміст не острів.


Ну, якщо він пише в Unlambda, ніхто не повинен мати змогу його прочитати.
СамБ

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

7

Хтось, хто не звертає уваги на деталі і завжди знаходиться в "це працює, тому я залишаю його в спокої. Усі ці винятки в журналах не мають значення".


7

Для мене є дві категорії програмістів - сольні та командні.

Погані сольні програмісти

  • Тим, хто зайняв занадто багато часу, щоб виконати просте завдання.
  • Ті, хто не може самостійно досліджувати те, що вони роблять.
  • Ті, хто забуде те, що було закодовано сьогодні, протягом кількох днів і не може дуже добре підтримувати власну базу коду.
  • Ті, хто не може адаптуватися до вимог, змінюються.

Погані програмісти - це ті, хто потрапляє в категорію поганих сольних програмістів, в тому числі

  • Ті, хто не може скоординуватись з іншими членами команди.
  • Ті, хто не вітає критику.
  • Ті, хто не знає, як бути корисним іншим та як отримати користь від інших членів команди.
  • Тим, хто не може написати читабельний код.
  • Ті, хто не коментує заради читабельності інших.

8
Я не пам'ятаю точно, як я реалізував речі, які я програмував минулого тижня. Це нечасто? У мене було враження, що робота з обмеженою пам’яттю людини була лише однією з проблем програмування. Отже, важливість структурування та документування коду так, що мені не потрібно запам’ятовувати деталі.
Джеймс

@James Вибачте мою англійську;). Я маю на увазі, що якщо програміст кілька днів пізніше перегляне свій код і не має ніяких підказів, це поганий знак. Я також не пам’ятаю, як і що саме я робив кілька днів тому, але впевнений, що мені не потрібно чухати голову, дивлячись на власний код і говорити: «що я думав?»
тіа

@James: Точно він повинен задокументувати свій код, щоб не важливо, що він забув, як працює половина
SamB

4

Не бажаючи визнавати, вони не знають відповіді та / або не бажають шукати речі.

Якщо ти цього не знаєш, не здавайся - з’ясуй це і зроби це.


4

Великий попереджувальний знак у моєму досвіді - це коли вони не коментують свої хаки ....

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

Хороші програмісти будуть ненавидіти, що потрібно це робити, і вкладати вбудовані коментарі, кажучи, наскільки вони ненавидять вводити такий хак, але вибору немає. Погані програмісти просто помістять хак і не коментуватимуть це.


3

Тихо, очевидно, коли програміст пише багато коду. Дуже великі функції, можливо, скопіюйте / вставте рядки або блоки коду, використовуючи набагато більше ifs, ніж це необхідно, і т. Д. Це може бути тому, що програміст не знає стандартної функції робити те, що він хоче, але більшу частину часу це не так.


3

Будучи репрезентативно показано правильний спосіб зробити це, і неодноразово просто робити це легким способом.


3

Я перекладаю свою відповідь сюди із закритої дубліката теми, яка запитала Чи можете ви визнати, чи поганий ви програміст? Інша тема була закритою, коли я писав свою відповідь. Моя відповідь прямо стосується питання, як це було сформульовано іншим запитувачем, і він буде читати краще, якщо ви це розумієте.

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

Бінарне працює чудово на комп’ютерах: "1" або "0", "увімкнено" або "вимкнено". Ми можемо абстрагувати та кодувати багато інформації за допомогою цих відомих двох держав. Але це, як правило, не працює так добре в людських справах: "хороший" чи "поганий", "здоровий" чи "божевільний", "добрий" чи "злий", "розумний" чи "дурний", "жирний" чи "худий", "живий" чи "мертвий?" Такі види поляризованих оцінок завжди залишали турботливу людину частиною мене жахливо незадоволеною. За будь-якими схемами вимірювань, які я вирішив застосувати, я зазвичай вважаю, що відповіді на такі різкі контрасти насправді лежать десь уздовж континууму між одним таким полюсом та іншим, а не в обох кінцях.

Я боровся з цією тенденцією до поляризації вже досить давно, і моє особисте рішення полягає в тому, що я вважаю набагато кориснішим застосувати три слова до будь-якої такої оцінки: " в якій мірі!"

Отже, моя відповідь на ваше запитання полягає в тому, щоб запропонувати вам перефразувати це питання і запитати себе так: "Наскільки я поганий програміст?" Або, ще краще, запитати це в інший бік: "Наскільки я хороший програміст?" Якщо ви переслідуєте правду, ви, ймовірно, знайдете себе десь уздовж континууму між "поганим" програмістом і "хорошим". Потім, як тільки вам вдасться приблизно знайти місце, де ви знаходитесь на цьому шляху, ви, ймовірно, зможете визначити точку, дещо ближчу до "доброго" кінця - точку, де ви хочете опинитися найближчим часом.

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

Отже, я настійно рекомендую вам спробувати три мої маленькі слова "в якій мірі" і подивитися, наскільки далеко в хорошому напрямку вони можуть вас відвести!


2

Хтось каже: "Це неможливо зробити".

На мою думку, це все у вирішенні проблем, інструмент повинен бути набагато менш релевантним, ніж власне робота. Якщо мені доведеться вирішити це за допомогою MS-Access або мови монтажу, це питання часу і грошей, а не питання "Це неможливо зробити"

Попереджувальний знак - це занадто велика концентрація уваги на академічному та "правильному" способі виконання дій, а також недостатня концентрація на роботі.


2
І коли він каже, чому це можна зробити?
Маньєро

1
Отже, як щодо вирішення проблеми зупинки? Чи можна це зробити?
П Швед

2
Погано відхиляти щось як неможливе, якщо це не так і навпаки.
Рандалл Шульц

2
@Randall Schulz: Наскільки я можу сказати з Craigslist, програміст рок-зірки - це хтось, хто обробляє всі рівні розвитку (базу даних, досвід роботи, розгортання, системний адміністратор та підтримку користувачів) в рекламному агентстві значно менше, ніж звичайна заробітна плата одна з таких речей. Вони називають їх рок-зірками, тому що після 60 годин на тиждень їх раціон схожий на того, хто їздить у фургоні еконолайн і повинен закладати свої гітари на їжу.
Дан Монего

1
Так, я зробив широке узагальнення :), але .. це було зробити сенс. "Моя професійна думка, що цього не слід робити", краще. Ще краще "Як щодо вирішення однієї і тієї ж проблеми по-іншому". Моя думка, хороший програміст повинен орієнтуватися на рішення. "Це неможливо зробити", не пропонуючи варіанти, дуже засмучує клієнта.
Ден Вільямс


2

Коли вони багато понтифікують, але виробляють дуже мало.



2

Ті, хто не знає таких принципів, як SOLID, DRY, OOP тощо. Важливо добре розуміти принципи та основи програмування, а не знати конкретні технології. Ті, хто має міцну основу, зможуть легко вивчати нові теми та створювати кращий код.


2

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


2

Сигналом негайного розпізнавання є хтось, хто говорить: "Я не розумію, чому це не працює. Я все зробив правильно".


Дотримується уважно "Я не розумію, чому це працює, це не правильно".
Рандалл Шульц

Так, це комп'ютер, який дурний :)
Ден Вільямс,

2

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

Я колись успадкував систему, де попередній розробник повторно реалізував (на Java) великий набір Ештан-Тейт DBase III + api, накладений поверх спеціальної бібліотеки доступу dbf. Жодна рамка колекцій Java не використовувалася.

Це було так, що він міг написати програму Java / swing, яка виглядала і діяла як додаток DBase III + (або, можливо, кліпер).

Програми, які він написав у цій системі, мали меню "смужка-панель", і вони відкривали б повну форму вікна з рядком кнопок внизу, коли ви переходили на панель Lite до параметра. Це було як невелика машина часу назад до 1980-х.

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

Але він був жахливим програмістом в тому, що його код неправильно використовував функції систем, над якими він працював. Він охочіше витратити 3 місяці на користувальницьку програму сумнівної користі, ніж вивчати Java / Swing / SQL.

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