Який самий абсурдний міф щодо проблем програмування?


101

Інакше кажучи ... З яким найпоширенішим і найчарішим нерозумінням щодо програмування ви стикалися?

Які поширені та давні міфи / хибні уявлення вам не важко програмістам розвіяти / виправити .

Будь ласка, поясніть, чому це міф.


24
Мені хотілося б, щоб Мітбустери взяли на озброєння щось таке.
губка

8
Хтось підписався на канал YouTube Mythbuggers? :-)
Тамара Війсман

1
Ooooh, MythBusters та умови перегонів! Меєса подобається!

@TomWij, що було б чудово створити веб-сайт з такою назвою!
Молодший М

Відповіді:


272

Це тому, що ви програміст, ви знаєте, як виправити [людину] вірусну машину.


34
Аналогія автомобіля / вийдіть із застереженням: "Я гонщик, а не механік".
Пітер Бауфтон

15
Цей комікс актуальний: theoatmeal.com/comics/computers
lunixbochs


21
@ Тим, якщо вона вміє готувати, почніть добровільно їсти, щоб задовольнити вечірки ваших друзів
Стівен А. Лоу

19
Справа не в тому, що я не знаю, як це ... Це те, що я не хочу витрачати години на фіксацію вашої машини, яку ви зламаєте через 2 тижні.
ChaosPandion

267

Загальна HR-річ, яка змушує мене зрізатися, коли я шукаю роботу: неявне припущення, що всі навички кодування є специфічними для мови, що не існує досвіду інженерії програмного забезпечення, що перевищує набори команд. Цей десятирічний досвід роботи в Java та ще п’ять в Perl означають, що ви будете абсолютно марними в проекті, який використовує, скажімо, C #.

"Так, є крива навчання. Але я зробив більш важкі переходи, ніж цей. Я зроблю вам угоду, платіть мені 80% за перший місяць і наприкінці цього часу, якщо я не ... ой , зачекайте, ми насправді не ведемо цієї розмови, оскільки ваша мавпа з HR просто видалила мою заяву ".


91
+ INF для мавпи з HR.
Іржавий

67
У мене був HR-хлопець, який відмовився від мене на роль, тому що я знав, як C #, але він шукав когось, хто міг би закодувати в dotNet.
burnt_hand

11
@burnt_hand: Так, я знаю dotNet. Я також знаю Excel та Internet Explorer. Я можу зараз мати небезпечний контракт?
Алан Плюм

Хоча я погоджуюся, що між Java та C # є великі перекриття з синтаксисом, структурою, SDLC тощо, якщо вони дадуть вам будь-який досить складний тест C # у вашому інтерв'ю, як ви проїдетесь?
JBRWilkinson

2
@Kyralessa - Я думаю, що зараз я знаю достатньо основної теорії обчислень та функцій комп'ютерів, щоб не робити базових помилок в жодній мові програмування. Я можу прочитати документацію. Однак те, що прокатна мова з обмеженими інженерними навичками / буде / робити, - це зробити основні помилки в структурі, дизайні, правильності, масштабованості, надійності та ремонтопридатності програми, що потенційно коштуватиме великі кошти для виправлення. Якщо ви не втрачаєте всіх своїх клієнтів через низьку якість програмного забезпечення тим часом (якщо припустити, що ваш проект дійсно є де-небудь).
flamingpenguin

261

Якщо ви не пишете, ви не працюєте.

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


9
Сторінка вгору, сторінка вниз ... сторінка вгору, сторінка вниз ...
Адольф часник

139
Мені не платять типу, я плачу думати. Я надаю набір тексту як бонус.
Кевін Лаїт


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

10
"Якби у мене було більше часу на кодування, я б написав менше рядків." - знімайте за цитатою Абе Лінкольна.
JeffO

158

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


28
Ах, з Міфічного місяця людини. en.wikipedia.org/wiki/The_Mythical_Man-Month
губка

2
Насправді, е-е, можна. -1 (так, ось носій міфу!)
П Швед

63
Ми використовуємо барвисту приказку "Ви не можете помістити в кімнату 9 жінок і завести дитину за місяць".
Вальтер

10
Минулого тижня ми додали 4 людей, які не мають досвіду проекту, щоб "допомогти" зустріти нереальний графік. Цього тижня звіт від проекту приводить до верхніх списків керівництва: "Пробіг за розкладом Причина: Зниження ефективності завдяки кривій навчання нових членів команди" та "План відновлення: Продовжуючи додавати більше людей там, де є можливість". Неймовірно.
AShelly

7
@Walter, але ти можеш мати 9 малюків за 9 місяців та команду з бейсболу з лігою в 7 років.
Хупернікетес

132

Це написання програмного забезпечення легко.

Як інакше ви пояснюєте, що всі ці проекти, які працюють з часом та за рахунок бюджету, і люди (політики, засоби масової інформації тощо) все ще дивуються, і клієнти скаржаться, коли ви говорите їм, що їх "маленький веб-сайт" (чи що завгодно) насправді потребуватиме 6 місяці на розробку та вартість декількох тисяч доларів (фунтів, євро, [вставити валюту за вибором])

Із нечіткими та постійно мінливими вимогами я інколи думаю, що дивно, що будь-яке програмне забезпечення коли-небудь закінчується!

Я знаю, що це трохи складніше, ніж це;)


11
І це тоді, коли вони намагаються взяти розробку на дешевші офшорні альтернативи. Тільки щоб дізнатися набагато пізніше, що це виявилося ще дорожче. І менше того, що їм справді було потрібно, через фізичні розриви та комунікаційні проблеми між командою розвитку та замовником.
7wp

1
Це не лише проблема менеджерів, а й самих програмістів. Справжньою проблемою є те, що час, який не витрачається активно на написання коду, часто пропускається (можливо, через поширений міф про LOC = міркування продуктивності).
Алан Плюм

3
Справа не в тому, що вимоги змінилися, це просто не те, що вони думали, що хочуть.
JeffO

1
У мене хтось відхилив програмування як "лише купу тверджень", якщо ". Гаразд, можливо, це так ... у цьому випадку поезія - це лише купа слів ... ... кінопродукція - це "просто купа сцен" тощо.
JoelFan

2
Я працював над типом менеджера, який вважав, що біт програмування - це легка частина роботи. І ні, він сам не мав жодного досвіду програмування.
Капітан Чуйний

114

Складність програми прямо пропорційна складності інтерфейсу користувача. Виходячи з цього міркування, ви зможете створити Google або Twitter протягом вихідних.


2
це правда, я міг би створити Twitter і Google за один вихідний. Це не їх програмне забезпечення, яке є складним; для Google це їх алгоритм пошуку (який порівнянніший із бібліотекою кодів або драйвером баз даних), а Twitter (аж до останніх 1,5 років) був надзвичайно простим, лише складні питання щодо масштабованості та баз даних. Тепер, коли він складніший (вимагає більшої кількості співробітників), він також має набагато складніший інтерфейс і багато інших інтерфейсів.
orokusaki

3
Я думаю, що я читав це в блозі Джоела Спольського, але в цій статті було вказано лише про прогрес GUI у відношенні прогресу. Таким чином ви зможете дати реалістичну оцінку прогресу виразним волоссям хлопцям, які занадто тупі, щоб зрозуміти, що більшість програм складаються з набагато більше, ніж очей цукерки.
Еван Плейс

3
1+ Був час, коли я демонстрував проект, пов'язаний з SharePoint (багатомовний аддон) своєму колишньому начальнику, витративши години на роботу над складним кодом. Кінцевий результат був зроблений не дуже багато на користувальницькому інтерфейсі, що змусило мого начальника повірити в те, що на проекті зроблено не багато. Це мене розлютило. Він не один годин сидів за клавіатурою, намагаючись обійти диваки SharePoint, а також логіку заміни тексту.
Джейсон Еванс

1
Ви не ненавидите, коли якийсь величезний, майже неможливий, запит формулюється як "чи можете ви додати кнопку для виконання ..."
JoelFan

Цікаво, чим я займаюся останні кілька років. Усі ті проекти, над якими я працював повний робочий день, повинні були бути закінчені за короткий час, оскільки вони взагалі не мали інтерфейсу. :-)
Барт ван Іґен Шенау

95

Всі програмісти добре в математиці. :-)


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

Я думаю, що можливості з математики якимось чином пов'язані з навичками програмування.
Дієго

@Diego: Хоча це не обов'язково означає, що всі програмісти все-таки добре займаються математикою.
Омега

95

Будь-яка дитина-підліток, яка хакує за комп’ютерами, рівнозначна (або перевершена) у майстерності, як працює програміст-ветеран.

Мій 14-річний племінник добре працює з комп’ютерами, і я плачу йому $ 10 / год, щоб скосити мою газон. Чому я повинен заплатити вам шість цифр, щоб написати наступний FaceBook?


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

36
Супротивним питанням могло бути: "Що б ти заплатив йому, щоб збудувати твій будинок?"

7
Дитина, яка не має кваліфікації, але пише акуратний код, може обіграти пана Спагетті в будь-який день.
Заз

13
Я звинувачую Голлівуд у цьому
MAK

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

69

Це в реальному часі означає швидке.

Заявивши "Пакети потрібно обробити в режимі реального часу". негідний і злий близнюк ... відповідаючи "Наскільки швидко потрібно статися Х?" з "В режимі реального часу" можливо менше, ніж нікчемне ... межує з дурним, а не невігласом.

У реальному часі означає, що, просто кажучи, ця функція Y завжди займе X кількість часу і що будь-яке відхилення вказує на серйозну помилку. Тривалість X не визначає "реального часу", вона може становити шість мікросекунд або шість днів. Те, що ви можете визначити, функція Y займе X часу, визначає "в режимі реального часу". Системи реального часу визначаються цим визначенням.

Тож збийте його ..


в режимі реального часу = майже-час
Брайан Чендлі

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

14
Це, мабуть, лише один із тих випадків, коли погано названа концепція сприяє плутанині.
JohnFx

2
@JohnFx Добре кажучи. Концепціям потрібен контекст.
Іржавий

2
@Richard: Дійсно, iTunes завжди займає кілька хвилин, перш ніж щось грати. О, це не те, що ви мали на увазі?
конфігуратор

69

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

:-) :-) :-) :-)


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

10
У налаштуваннях програми є налаштування: <add Key = "Bugs" Value = "true" />
burnt_hand

1
@DJClayworth - це не завжди працює. У деяких випадках проблема настільки велика, не визначена або просто нелегка, що навіть наблизитися до "правильного" першого разу занадто багато, щоб очікувати. У такому випадку краще написати «перший розріз», що не зовсім помилково, ніж нескінченно витрачати дні / тижні / місяці на конструювання та перепроектування, намагаючись вперше правильно його виправити.
Стівен C

Це може бути версія непрофесійного "Чому ви, хлопці, не робите TDD?" Що, якщо чесно, - це дивно гарне питання, якщо надто просто для розвитку реального світу.
Dan Ray

1
@Stephen C: так, але є різниця в тому, щоб зробити це здебільшого правильно (замість ідеально правильного) проти того, щоб робити в основному все, що ліворуч і право, щоб просто змусити його працювати. Я знаю, що це не те, що ви сказали, але я все ще думаю, що це потрібно сказати.
n1ckp

65

Якщо ви не ходили до університету, ви не придатні для роботи


27
Також: програміст зі ступенем кращий, ніж програміст без нього, і йому слід платити відповідно. Те саме, мабуть, іде і з віком та сексизмом. Така дурниця мене вразлює - якщо ви не знаєте, як написати хороший код, я не міг би перейматися тим, куди ви пішли і що робили. Це може бути інший випадок, коли програма програму / культу-ботаника (вміння == авторитет) стикається з корпоративною культурою (ранг == авторитет).
Алан Плюм

1
І все ж люди, що викладають в університеті, також, здається, думають, що вони можуть узагальнити поведінку програмістів та проектів, спостерігаючи за тим, як працюють студенти при їх об'єднанні. Спілкування ОСБ добре для 4-6 таких статей на рік.
МВС

1
@Billy Як щодо цього, де диплом коледжу означає джек, а університетський диплом вам все надасть? Обидва йдуть до школи, обидва напевно кращі за інших, але є соціологічна різниця
Тарка

4
@Billy: у Канаді університет присуджує вам ступінь, а коледжі дають вам дипломи. Коледжі більше схожі на "школи, де ви вивчаєте практичні речі". Подумайте, коледж громади в США проти звичайного коледжу / університету. Тут вони зазвичай мають дворічні спеціалізовані прикладні програми. Ви не можете отримати бакалавра (магістрів тощо) з коледжу. В основному, ви б пішли в коледж, щоб вивчити, як писати програмне забезпечення, і до університету вивчати інформатику. В університетських ступенях надається набагато сильніша перевага при працевлаштуванні.
Адам Лір

4
Університети навчають хоча б одній важливій справі: мисленню . Це дуже важливо, але ті, хто цього не знає ... ну, не знають цього.

61

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

Ще один міф: надто важко переробляти базу даних. Ні, але ви повинні розглянути, як зробити рефакторинг на етапі проектування, щоб зробити це ефективно. І BTW, чим довше ви будете чекати, щоб виправити цю надокучливу проблему продуктивності на основі дизайну, тим важче це буде виправити.

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

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


+1, зокрема, для коментарів щодо перевірки цілісності бази даних.
Френк Ширар

+1 Особливо для останнього абзацу. Я бив цей барабан не один раз.
Бінарний занепокоєння

5
+1 для першого абзацу. Передчасна оптимізація - корінь усього зла; писати поганий код без кривавих причин ще гірше.
конфігуратор

3
"Деякі речі OOP спричинять жахливі проблеми з роботою, а інші - просто нерозумно в термінах бази даних" - ви могли б сказати, що? Я знаю про OOP, але не багато про бази даних, і мене цікавить, наскільки я можу перенести ідеї від кожної сторони до іншої.
Том Андерсон

@HLGEM Мені також були б цікаві приклади @Tom цікаво про ...
Armand

53

Що є якесь міфічне джерело абсолютних найкращих практик.

Жодне відхилення ніколи не може бути виправданим.

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


1
кращий член команди, ніж ваші менеджери ...
Білл

5
Чи можете ви надіслати цей документ мені?
AShelly

1
Повністю згоден. Кого хвилює, якщо ви змішуєте вкладки та пробіли в коді Python?
Заз

4
@Josh - той, хто повинен переглядати ваш вихідний код за допомогою ланцюжка інструментів, який має інше уявлення про те, де розташовані позиції вкладок.
Стівен C

1
Я інтерпретую "найкращу практику" як "я не можу цього виправдати". Я, звичайно, використовую його саме таким чином.
Том Андерсон

51

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


12
І ще веселіша річ маркетингу - не маючи уявлення про те, які функції легко, а які прокляті майже неможливо.
дероберт

4
@derobert Точно я часто мав досвід, що деякі більш уважні люди з маркетингу насправді бояться навіть запитати про якусь просту / легку функцію, яку, на їхню думку, було дуже важко реалізувати. Хоча я зустрічаю протилежне набагато частіше: ось партія X "легких" функцій, які ми вже продали замовнику, будь ласка, зробіть це вчора ....
Giel

50

Цей код коментування непотрібний, або що "хороший код не потребує коментарів". Іноді потрібно пояснити, що робить складний біт коду. Крім того, коментування розділів коду допомагає вам набагато ефективніше читати читання.


14
@DisgruntledGoad - Це правда, хоча. Нерозуміння цього "міфу" походить від того, що занадто багато програмістів вважають їх монолітний заплутаний код "хорошим". if user.is_logged_in: print('Welcome')не потрібен коментар.
orokusaki

3
@orokusaki Не кожен алгоритм такий простий.
Жоук ван дер Маас

25
@orokusaki ви помиляєтеся "хороший код не потребує коментарів" із "простим кодом не потрібні коментарі". Хороший код не завжди простий.
НезадоволенняGoat

3
@Jouke van der Mass: звичайно. Але не важливо, наскільки складний алгоритм, мета - виразити алгоритм просто. тобто хороший код виражає складні алгоритми, правила, оптимізацію простим і однозначно зрозумілим способом. Висловити прості речі просто порівняно просто. Висловлювати складні речі просто там, де лежить майстерність.
flamingpenguin

2
@orokuskai: хороший код простий. Те, що він робить, може бути складним, але простота (витонченість) коду - це те, що робить його гарним на мою думку! Звичайно, код робить багато іншого, і код сміття може принести вам багато грошей. Але моя мета - написати простий код навіть у складних ситуаціях.
flamingpenguin

50

Найгірший міф: якщо ви програмуєте тривалий час, то ви можете легко бути менеджером проектів.

І що вам слід стати менеджером проекту, якщо ви довго програмували.


3
Або ще гірше, якщо ви ніколи не програмували і не керували проектом програмування, прочитавши кілька книг і магічно змусити програмне забезпечення. Був вниз по цій дорозі з попереднім прем'єр-міністром і мені не байдуже повторювати це, доки я живу.
Еван Плейс

4
Ще гірше: оскільки всі великі програмісти в команді віддають перевагу написанню коду над написанням звітів, ми повинні просувати посереднього програміста до менеджера проектів. Думка полягає в тому, що він буде "досить технічний". Справа в тому, що він виявляється дезінформаційним фільтром між командою та керівництвом.
AShelly

2
Також: якщо ви найкращий програміст, ви, очевидно, повинні стати менеджером проекту і з цього моменту перестати робити будь-яке фактичне програмування самостійно! Ні, дуже дякую, але я все одно буду брати підвищення. Примітка: я не говорю про те, щоб стати провідним програмістом чи будь-яким подібним, я говорю про менеджерів, які вважають, що це розумна ідея сприяти кожному до рівня їх достатньої некомпетентності.
Алан Плюм

1
Також відомий як Принцип Пітера. en.wikipedia.org/wiki/Peter_Principle
Спойк

добре сказано
Майкл Пасха,

50

Якщо ми використовуємо щось інше, ніж Java, C # та C ++ у нашому проекті, ми не знайдемо жодних програмістів, які б його підтримували.


Я ніколи про це не чув, але це дійсно. Звичайно, якщо ви використовуєте незрозумілу мову, це станеться.
Маньєро

5
@bigown, "незрозумілий"? Як незрозуміло? Чи TCL незрозумілий? Haskell? Паскаль (Delphi)? Пітон? Я думаю, що вони не незрозумілі. Багато людей думають, що вони є, і лише "вузький набір мов (C ++, C # і Java) дозволений у" серйозному "розвитку.
П Швед

5
@bigown: о, ти маєш на увазі неясне, як COBOL? : p
AnonJr

2
Я колись працював у невеликій компанії, робив код Objective-C в Linux. Генеральний директор - який не був інженером, але мав деякі технічні знання - не міг повірити, що навколо є програмісти ObjC або що хтось інший ним користується. Насправді у них ніколи не було проблем із наймом хороших розробників.

4
Я читав аргумент, що саме навпаки: для мов, які неясні (або принаймні комерційно незначні), але круті, веселі та цікаві (що в цьому контексті означало Пітон і Рубі), програмістів більше, ніж робочих місць. Плюс, вони всі люди, які вміють круто, весело та цікаво розмовляти, тому вони повинні бути розумними. Тож насправді робота в Python означає, що найняти розумних програмістів вам буде простіше, ніж якщо ви працюєте на Java. Не знаю, чи я вірю в це, але це принаймні так правдоподібно, як ортодоксальна ідея!
Том Андерсон

42

Java - це просто C ++ з різними класами.


57
+1 Мені одного разу інтерв'ю запитав: "Яка різниця між C ++ та Java?" Тому я перерахував деякі відмінності. Рідний компілятор проти JVM, стандарт ANSI проти фірмового, збирання сміття, навантажувачі тощо. Він ревів: "НЕМАЄМО! Різниці немає! Вони однакові!" Він не був студентом, він був керівником інженерії.
Білл Карвін

11
@Bill, моя відповідь тоді була б, "тоді навіщо посилатися на них із абсолютно різними іменами?"
Jesse C. Slicer

2
@Bill, значить, ви провалили тест і взяли на роботу?

20
Моєю відповіддю було б "До побачення".
Фул

6
@Foole Ви не маєте на увазі System.exit (1)?
Баррі Браун


33

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

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


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

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

3
Вам ПОТРІБНА потужна мова. Дивіться, як Пол Гремс обговорює мови та те, що дозволяє вам робити: paulgraham.com/power.html

4
@ Thorbjørn: Я прочитав цю статтю, і Пол Грехем помилився. Він захисник Ліспа, тому він перекручує факти в корисливі аргументи, щоб Ліпп виглядав добре. Можливо, навіть не дуже стисло, оскільки це справді не потребує особливих скручувань. Існує багато перекриттів між читабельністю та лаконічністю, як він вказує в кінці статті. Але висновки, які він робить, абсолютно не відповідають умовам розвитку програмного забезпечення в реальному світі. Так, вам потрібна потужна мова, але він вимірює силу за неправильними критеріями, і шкідливо вірити тому, що він говорить.
Мейсон Уілер

3
@rtperson: Про продуктивність може варіюватися в десять разів, це не міф. Те, що люди, які швидко закінчують, обов'язково є більш продуктивними.
Девід Торнлі

31

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


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

Це такий стійкий міф, коли ви працюєте в місці, де в основному виробляється обладнання. Обручі, через які ми проскакуємо, щоб підходити до нашого програмного забезпечення «вбудувати» в ту ж модель, що і апаратна «частина», дивовижні ...
AShelly

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

+100 для цього, особливо люди, які вивчали економіку, так думають
Кугель

1
Кожен повинен прочитати Джека Ривза: developerdotstar.com/mag/articles/reeves_design_main.html - це походження (або принаймні раннє та потужне твердження) ідеї про те, що вихідний код є дизайном, а не продуктом . Програмісти - це як дизайнери в залі, а не машиністи на фабриці, а управління програмуванням повинно бути схожим на управління іншим інженерним дизайном, а не виробництвом.
Том Андерсон

31

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


5
Я раніше в середній школі тримався на вершині деяких речей, але зараз я вважаю, що вони взагалі не мають значення для того, що я роблю, і хоча деякі вони охайні, я б набагато краще заплатити тому, хто знає їхні речі, і використовувати час, який я заощаджуючи те, що мені подобається (тобто писати код). Можливо, ще одне непорозуміння «добре з комп’ютерами».
Алан Плюм

2
+1, або злегка дотична - Оскільки ваш програміст, у вас є супер пупер з водяним охолодженням 300 світлодіодних вентиляторів, що обертаються миготливою вершиною нової лінійки, що поставляється із заводу до випуску. Ем, не дуже! Це пристойно швидка машина, її в чорному дуже дешевому корпусі. Не дійсно все одно поза цим!
Хірургічний кодер

Смійтесь, є на посаді помічник прем'єр-міністра, який має вдома якусь всемогутню ігрову установку, завжди перекидається на область Dev, щоб запитати, чи варто йому купувати (Продукт A) або (Продукт B) ... у незв’язаній записці, він також передбачає, що команда розробників все тусується на 4Chan, (що він насправді робить) - зітхає
ocodo

+1 Слово. Це місце на. Я розробник програмного забезпечення, і мене так багато разів просили налаштувати чийсь Інтернет, і в основному все, що я роблю, - це проби та помилки, а також пошук у Google. Мені найкраще подобається, коли щось абсолютно не пов’язане між собою, коли ти зробив комусь послугу, і тоді це вини.
Енн Шусслер

30

Коли програмісти кажуть, що це зробити дуже важко / просто неможливо, HR думає, що вони ліниві і немотивовані


2
Включіть і управління
Prasham

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

+100, і що при достатній "мотивації" вони можуть змінити вашу відповідь. Або перейдіть до іншого [менш досвідченого] розробника і цілеспрямовано залиште половину деталей, щоб змусити його сказати «так», лише щоб закінчитись на півдорозі через розробку і натрапити на ту саме проблему, про яку ви їх попереджали.
wildpeaks

28

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


2
+1. О, так, все, що нам потрібно зробити, повинно бути вже з відкритим кодом.
гострий зуб

7
багато часу там є ... принаймні, це стосується веб-розробки.
WalterJ89

@ WalterJ89: Це може бути там, але це не означає, що це гарна ідея. Відкритий код не означає автоматично хороший код.
Алан Плюм

правда .. але у випадку Wordpress, Drupal, jQuery, ... можуть бути сфери, де безкоштовна не велика кількість, як-от електронна комерція, але частіше за все Інтернет дуже відкритий, і мені здається, мені подобається працювати з спільнота з відкритим кодом набагато більше, ніж службова допомога.
WalterJ89

7
Міф протилежний теж. Що ви не можете використовувати FOSS для задоволення потреб вашого бізнесу.
термін

27

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

Я не знаю, чи хочу я розвіяти цей міф, це робить мене справді розумним!


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

7
"Ми пишемо рецепти в'язання". Бабусі схильні це розуміти.

Я знаю людей, які будуть писати програму на C, а потім переробляти найважливіші компоненти в Асамблеї.
Заз

1
@Josh - якщо не існує проблеми з продуктивністю, це здається марною тратою часу.
JohnFx

1
@oosterwal - Асамблея не є двійковим і не використовує математичні символи.
JohnFx

26

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


5
* v (int) (недійсна) ++
Іржавий

1
@Rusty: Я можу придумати набагато гірші приклади, якщо мені навіть не потрібно бути синтаксично правильним.

4
Ага, так, код "Лише написати" ...
Paddyslacker

24

Програмування - це як робота з конвеєра. Ви працюєте над продуктом певний час (можливо, з колегами) і, нарешті, відправляєте його. Так само, як будувати будинок з цегли.

Контра: Програмування містить багато креативності та планування. Це мистецтво. Як і муляр, і програміст знає різницю між формуванням цегли та плануванням цілого собору.


6
Погодьтеся на відмінність від робіт з конвеєра - але багато в чому я не думаю, що це сильно відрізняється від будівництва будинку.
Біллі ONeal

24

Перенесення програми на C ++ автоматично призведе до її швидшого запуску.


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

2
Ще один поширений варіант - перехід на архітектуру клієнт-сервер. "Оновлення до SQL зробить моє додаток набагато швидшим!" Не обов'язково.
JohnFx

Так, це багато разів навпаки. Бази даних типу SQL добре, щоб вони були ACID або майже це, це стосується ціни. І що може бути гіршим, неправильне мислення про методи SQL може бути шкідливим для продуктивності.
Маньєро

6
Перенесення на C ++ / C для тих, хто написаний на Python / Perl / Ruby / тощо. Перенесення на ASM для тих, хто написаний на C / C ++: P. Цікаво, до чого б ти порту посилався? проектування його в апаратне забезпечення?
МАК

1
@MAK - перевірити en.wikipedia.org/wiki/Handel-C
flamingpenguin

21

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


9
Ага, так. Завжди весело, коли якась компанія створює новий інструмент створення авторів, щоб зробити програмістів надлишковими, і тоді кожен, хто приймає його, йде вперед і наймає високооплачуваних <авторських інструментів> спеціалістів, які фактично ним користуються. Справа в точці: Joomla! і все це безглуздо.
Алан Плюм

HA HA HA HA HA HAAA HA +1 :)
Біллі ONeal

Кобол уже пробував це :)
Carra

20

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


1
Ну. HP XL WESM приблизно на 85% такий же, як у Symbol WS5100 (там відбувається OEMming). Чи хотіли б ви скопіювати та вставити цей відсоток мого моніторингового та конфігураційного коду, щоб там було вдвічі більше помилок, чи ви вважаєте за краще, щоб я переписав його з нуля і зайняв сорок разів довше, а їх у п’ять разів більше? Або ти просто тиснеш нерозумним керівництвом, яке думає, що це один з кількох магічних панацеїв, щоб зробити $ проект швидшим?

1
Повторне використання в малому було вирішено 40 років тому і більше. Повторне використання в цілому складно і досі не вирішено IMHO. Так само, як говорить Роберт Гласс у " Факти та помилки інженерії програмного забезпечення"
MarkJ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.