По-перше, незважаючи на те, як сформульовано ваше запитання, жодному навчанню, особливо не в нашій галузі, немає кінця, де нові речі з’являються швидше, ніж ви можете прочитати про них. Однак, коли ви хочете вдосконалитись, я б розглядав такі категорії. Щоб отримати максимальну вигоду / рентабельність інвестицій, вам слід вибрати щось із вашої слабкої області, звичайно.
Основоположні знання
Незважаючи на знання мов програмування та маючи практичний досвід, часто є сфери (особливо самонавчання), де основні основні питання залишаються незавершеними. Подумайте про такі речі, як структури даних, алгоритми, стратегії кешування, хеш-функції, ...
Зауважимо, що сюди також входять основи мов програмування - все - від компіляторів, методів оптимізації та систем типів, аж до теорії категорій, монад тощо.
Якщо ви добре навчаєтесь, як ви переконували ступінь університетського рівня протягом декількох років, то ви, ймовірно, вже сильні в цій категорії (далеко не закінчений курс, але міцна основа). Інакше спробуйте прочитати кілька книг у цих областях, щоб дізнатися, чи є щось у вашому репертуарі, чого ви навіть не знали. Цю категорію найлегше переоцінити.
Парадигматичні знання
Мене завжди вражає, коли програмісти з’являються, хто думає, що вони знають, але абсолютно не знають про інші, ніж основні парадигми. Якщо ви думаєте, що орієнтація на об'єкт - це його кінець, це ваша категорія для вдосконалення. Якщо ви думаєте, що функціональне програмування теж існує і, можливо, навіть чули про логічне програмування, то це все-таки хороший вибір. Існує набагато більше парадигм, і знання про них має глибокий ефект, який дає вам щось подібне до нового погляду на світ програмування.
Тільки не забувайте: часто є (досить філософські за своєю суттю) аргументи щодо того, що можна вважати парадигмою чи ні. Не слідкуйте за цим. Ваша мета повинна полягати в тому, щоб розширити свій горизонт, а це означає дізнатися про ці речі, чи хтось інший вважає Х парадигмою самостійно, чи ні, це не має ніякого значення.
Знання спеціалістів
Найпростіший з них - і найменш корисний водночас. Звичайно, ви можете взяти на себе єдину технологію та ознайомитись з усіма її плюсами, але ви повинні бути готові заплатити ціну. Технології старіють, і вони роблять це з постійно зростаючою швидкістю, що робить це майже гарантією того, що вкладений тут час буде марним кілька років у дорозі.
Тут також світить проблема зменшення віддачі. За своєю суттю те, що ви спеціаліст з чогось, означає, що вам доведеться витратити незліченну кількість часу на цей вузький предмет, а значить, за визначенням вам знадобиться багато часу, щоб дізнатися щось нове, і ця нова річ буде крихітним маленьким шматочком головоломки, який є не збираючись ні в кого змінювати погляди ні на що.
Знання домену
Будьте тому, що це домен вашої роботи, або просто виходячи з вашого особистого інтересу, але бути знавцем інформатики та певної сфери дуже цінно і корисно. Я не говорю тут про бічні області CS, як, наприклад, комп'ютерну графіку чи AI. Натомість зауважте, що комп’ютери втрималися у житті кожного, і це робить кожне інше поле підпорядкованим комп'ютерам та області, до якої ви можете потрапити.
Це однозначно підпадає під категорію "поза вашим полем", але це не гостра математична "поза", а скоріше сфера застосування. Подумайте про медицину: я не раджу вам стати лікарем. Однак вивчити основи медицини, щоб застосувати наявні знання про інформатику до проблем цієї галузі, дійсно, варто. Це варіюється від методів візуалізації, над робототехнікою, до експертних систем і просто управління даними для обліку / адміністрування. Хоча ви робили все це раніше, це робити в іншій області, може стати абсолютно новим досвідом.
Майте на увазі, що це спосіб кардинальнішої зміни у вашому напрямку, ніж інші категорії. Ви можете не мати жодного контакту з цим полем у своїй щоденній роботі, що робить його надзвичайно важким. Це навіть може означати зміну робочих місць. Крім того, вам знадобиться якась сертифікація щодо вашого нового домену - ви все-таки новачок у цьому домені, зрештою, і вам доведеться змагатися проти випускників міждисциплінарних досліджень, які вже розпочали свій шлях, щоб стати експертами в цій ніші.
Додаткові знання
Як додав Майк Браун, існує також область знань, яка певним чином супроводжує вашу теперішню роботу, але не є суворо необхідною. Вам не потрібно бути менеджером проекту, щоб дізнатися про управління проектами, але, як завжди, додаткові знання дадуть вам більше розуміння того, як тикає інша сторона. Можна навіть узагальнити це, щоб зосередити увагу на м'яких навичках. Я думаю, кожен, хто працював над реальним проектом з іншими людьми, знає їх цінність.