"Половина всього, що ви знаєте, буде застарілим через 18-24 місяці" = (Правда, або помилково?) [Закрито]


33

Просто перебіг це і цікавився, чи є у когось спосіб довести чи спростувати це твердження:

Щось слід пам’ятати… який період напіввиведення знань у галузі високих технологій? Це відповідає Закону Мура: половина всього, що ви знаєте, буде застарілим через 18-24 місяці.

ДЖЕРЕЛ: У відповіді Крейг Трейдер на це питання " Що є єдиним найбільш ефективним, що ви зробили для вдосконалення своїх навичок програмування? "


2
Я не бачу, як це колись можна довести.
Одід

50
Statement = (True or False)Так.
glasnt

3
Я думаю, це залежить від того, що ти знаєш.
LennyProgrammers

3
@glasnt: у цьому випадку це завжди правда: /
Simon

2
Половина всього, що я знаю, зараз застаріла.
JD Isaacks

Відповіді:


131

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

Основні принципи та методи програмування вічні.


5
Чудово лаконічний. +1
Тим повідомлення

27
@Steven A. Lowe +1 за те, що він визнав, що ти шукаєш "ефемерного"
Tim Post

2
Дивовижно, наскільки ефемерною може стати технологія, яку ви 7 років вивчали та використовували, коли вона програє Oracle (або Linux). Щоправда, те, що я дізнався про створення та розгортання програм, не зникло, але ніхто не піклується про Pick, Ultrix чи будь-яку кількість втрачаючих технологій.
Крейг Трейдер

71

Дурниці

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


8
+1 за "Вони вчать неправильних речей"
Мартін

4
Ви знаєте, я дійсно думаю, що вам слід повністю відмовитися від цього і .. почекати .. СКВІР!
Тім Пост

+1 за те, що зауважив сенсаціоналізм, що переважає у цій галузі.
Рей Міясака


17

Найкращий (найгірший?) Тест, про який я можу придумати, - це просто подумати рік. Скільки знань із програмування, якими ви користуєтесь щодня, було засвоєно за попередні 18 - 24 місяці? Більше того, скільки було винайдено за попередні 18-24 місяці? Цей принцип здається мені дуже підозрілим, оскільки більшість програмних та технічних знань, якими я користуюся щодня, набуваються протягом 5-10 років.

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


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

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

За даними Apple, 85% MacOS X та iOS однакові.
gnasher729

15

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

Візьміть щось на зразок Visual C ++ / MFC у просторі додатків для настільних ПК. Хоча це може здатися застарілим і, ймовірно, не чимось, що новий програміст повинен навчитися зараз для розробки робочого столу, все ж є ще маса справжніх проектів і робочих місць, написаних у ньому, які підтримуються - і ймовірно, буде підтримуватися протягом наступних років і десятиліть. Я збирався навести COBOL як приклад, але це було б теоретично - я насправді особисто знаю приклад VC ++ / MFC.

По суті, це не те, що технології стають марними і не використовуються, коли вони старіють ", а більше, що вони вже не сприймаються як найсучасніший спосіб робити справи і починати нові проекти. Але виведення з експлуатації великих реальних програмних систем, які не ламаються і не потребують виправлення, відбувається набагато повільніше. Багато проектів Visual C ++ / MFC, над якими я працював (над якими розпочався на початку 1990-х років), ще дуже живі та працюють із багатьма програмістами (як в технічному обслуговуванні, так і в новій розробці), і, схоже, нікуди не збираються. найближчим часом. Насправді я впевнений, що більшість із тих, про кого я думаю, все ще будуть приблизно в 2020 році і довше.

Звичайно, це навіть не головне питання. Основне питання полягає в тому, що багато понять схожі чи споріднені, і ви не «починаєте з нуля», вивчаючи нові технології. Наприклад: після того, як ви зрозумієте мови розмітки та те, що вони стосуються, дуже легко вивчити нові. Тож не так важливо, що JSON - це нова новинка, і все, що ти використовував роками, - це XML. Це лише питання вивчення нового синтаксису - на відміну від того, щоб бути непрограмістом, який нічого не знає про те, якими є мови розмітки, або внутрішніми поняттями, що стоять за даними, які вони представляють тощо.

TL; DR: 1) Існує багато "застарілих" технологій, які використовуються там, але оскільки це не нова сексуальна річ, ти про неї не чуєш багато - але це далеко не марно для тих, хто працює з нею . 2) Концепції програмування будуються один на одного та розвиваються. Мало речей - це справді те, чого ви повинні повністю навчитися з нуля і забути старе.


4
MFC - який біль!
Робота

@Job - О так.
Столи Бобі

Лол, чи не все це біль: P
crosenblum

Гей, я теж працюю над VC ++ / MFC!
Девід Торнлі

2
+1 Переважно для вказівки речі не перестають використовуватися, просто перестаньте бути частиною zeitgeist.
Орблінг

12

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

Приклади речей, з якими я нещодавно активно займався:

  • Загальний синтаксис Java порівняно з типовими контейнерами
  • Типи даних MySQL, обмеження пам’яті тощо проти принципів масштабованості баз даних
  • Легкий рівень абстракції бази даних, який я допомагав створювати проти принципів жорсткості / гнучкості абстракції бази даних

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


11

Роберт Харві прибив це , але подумавши про це, я змушений кинути стислість на вітер і відповісти.

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

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

Вставте тут довгу сказу про те, щоб вірити в усе, що ви читаєте чи чуєте.

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

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

Тепер я прямо вирішу ваше питання:

Половина всього, що ви знаєте, буде застарілим через 18 - 24 місяці, правдивим чи неправдивим?

Про це вам доведеться повідомити через 18 - 24 місяці. Компанії платять значні суми, щоб змусити людей говорити про те, наскільки великий їхній продукт. Нам доводиться проникати не лише стартап-компаніям, але й усталеним гігантам, які виділяють значні суми грошових коштів, щоб:

  • Чи [поважні] поважні блогери відрегулювали крок продажів для своїх читачів
  • Надсилайте дорогу фірмову безкоштовну передачу, щоб отримати розміщення бренду там, де це можна помітити через хвастощі та використання
  • Платіть людям, щоб переконатися, що ви бачите "робоче рішення" в топ-10 Google, коли досліджуєте проблему
  • Платіть за «нагороди» з сайтів «десятки найкращих директорій» і робіть вигляд, що вони є авторитетними
  • Справжня безліч інших засобів переконати людей перестати думати і просто слідувати за натовпом

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

У мене, однак, є ця дивовижна нова бібліотека мостобудування, яка досить розумна для перемикання між Брукліном та Лондоном на основі вашої мови. Це буде величезно, ви хочете зайти на перший поверх?

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

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

Я захоплююсь вашою стислою формою та цитатами, але це, мабуть, є експериментом з порушенням .

Молодці :)


8

Це залежить від того, на що ви витрачаєте час на навчання. Я вивчив програмування Bourne shell та C програмування в 1980 році. Я все ще використовую його щодня. З іншого боку, час, який я витратив на вивчення структур меню Compuserve, - це повна втрата, і це було не дуже корисно навіть у той час. Потім є між ними такі речі, як RS-232 підключення кабелю та серійні протоколи: сьогодні марні, але важливі протягом десяти років мого життя. Вибирайте технології, яким ви приділяєте багато часу ретельно.


Зауважте, що послідовний зв’язок все ще з нами. Тільки не кабелі.

RS-232 живий і здоровий і живе у вбудованому просторі.
Тім Вілліскрофт

7

Принцип правдивий. Фактична цінність - наскільки мені відомо - набагато більша.

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

Подумайте, як змінилися технології: П'ятнадцять років тому Інтернет був абсолютно новим, і ми всі намагалися писати веб-сторінки - можливо, навіть за допомогою таблиць - і анімований gif. Сім років тому AJAX злетів. Сьогодні дехто пише мобільні ігри для мобільних телефонів.

Ваша найкраща ставка - вивчити загальні речі, які можуть бути застосовні до наступної технології, а не говорити "Почало! Я знаю лише Visual Basic!" (або еквівалент через 15 років).


Я спробував fizz buzz у VB, але .. не вдалося ... :(
Повідомлення Тіма

@Tim, зачекай 10 років і, сподіваємось, тобі не доведеться ...

5

Я не думаю, що це взагалі точно.

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

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

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


Я пам'ятаю, коли GNU завантажився і став життєздатним, і всі «круті діти» використовували його. Але це було в той день, коли "круті діти" насправді не мали навіть методу, а ступеня думки про своє безумство. Я СААД кажу, що в цей день і вік ви маєте рацію.
Тім Пост

4

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


Правильно, вони стають орієнтиром, або, в гіршому випадку, анти-зразком. :)
ideaman42

4

Якщо б це було так тільки 5.39x10 -6 з Міфічний людино-місяць буде актуальний і сьогодні. Оскільки існує дуже мало ключових принципів, які детально описали Фред Брукс, які суттєво датувались або виявились принципово неправдивими.


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

Хороший коментар, (+1) для відповіді, я стверджую, що головна команда програміста - це не принцип, а відповідь. Щоправда, він дуже помилявся щодо приховування інформації; але він також визнає це у 20-му ювілейному виданні. Я заперечую, що багато з того, що сказав Брукс, не зарекомендували себе в культурі розробки програмного забезпечення, або ми не мали б такого надзвичайного рівня відмов у розробці програмного забезпечення.
AlexC

Я думаю, що я підходив до цього з питання про те, наскільки книга сьогодні актуальна. Розділ CPT, наприклад, не є актуальним, але глава про графіки не вписується і очевидно не є частиною сучасної культури. Видання 20-го ювілею - це, звичайно, частково через його нарис "Без срібної кулі". (Це вийшло 16 років тому, і тому за принципом у назві має бути приблизно 0,4%, і я думаю, що ми можемо погодитися, що це більш актуально, ніж це.)
Девід Торнлі

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

3

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

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

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

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


2

Окремі факти не мають великої актуальності. Ти береш їх, розумієш, застосовуєш лише на даний момент.

Але це вчить вас процесу обробки фактів або принаймні обробки певного набору фактів. У школі я навчився багато математики, якою я насправді ніколи не користувався. Ще я навчився і навчив математичне мислення.

Я працював веб-програмістом з Ruby on Rails. І хоча я зараз не пишу веб-сайти, це сильно вплинуло на мій код мислення і зробило мене кращим C ++-кодером. (Наприклад, більше STL).

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

Це просто тренування свого розуму ...


2

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

Існує деякий розподіл знань, деякі з яких застаріють (незалежно від курсу). Отже, якщо дана людина містить лише знання з половини цього спектру, які залишаться через 18-24 місяці, вони порушують твердження.


2

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


1

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

Кращим способом представити це було б

Скільки знань, якими ви користуєтесь сьогодні, ви мали 18-24 місяці тому?

або

Через 18-24 місяці, скільки знань, які ви будете застосовувати, ви вже знаєте? Скільки потрібно буде навчитися сьогодні, щоб виконати ці завдання?

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

Якщо кожні шість місяців проект вимагає лише 12,5% нових знань, то протягом двох років повні 50% використаних знань будуть "новими".

Сказавши це, це не дуже змістовно або точно.

  • "Старий" матеріал не є застарілим.
  • "Новий" матеріал має величезне перекриття зі старими
  • Принципи, як правило, передаються

1

О Боже, така чудова, здоровий глузд відповідь вище. Хороша робота.

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

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

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

У мене проста фраза, яка охоплює все це.

"Якщо це працює, використовуйте його"

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

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

Важливо завжди вчитися та практикувати, і вдосконалювати свої ремесла та навички.

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

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

  1. http://www.joelonsoftware.com/articles/fog0000000043.html
  2. Планування
  3. Процес управління проектами - щоб переконатися, що код не запускається до того, як буде складений чіткий план, і затверджений людьми, які попросили вас працювати.
  4. Поліпшення читабельності вашого коду - Тому що всі ми працюємо над кодом інших людей
  5. Організуйтесь, будьте ефективні

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

Бо чесно кажучи, круто просто не круто.


0

Я чув цю фразу, яку відносять до інженерних полів, а не до програмування. Більш конкретно, я чув: "Коли ви отримаєте ступінь бакалавра в галузі інженерії, ваші перші два роки навчання будуть базуватися на старих технологіях". (Або щось для цього.)

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


0

Середня технологічна платформа існує десь від 10 до 25 років, тому це здається мені малоймовірним, навіть якщо ви цілком знижете той факт, що знання моделей зберігається завдяки технологіям. Якщо ви перебуваєте на будь-якій великій платформі, ви можете розраховувати на те, що цей стек буде популярним AT ЛІСТО 5 або 6 років, перш ніж він навіть почне згасати. Я знаю програмістів, які кодують RPG протягом 30 років, використовуючи майже ідентичні апаратні та програмні засоби.

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