Во-первых, несмотря на то, как сформулирован ваш вопрос, нет конца изучению, особенно в нашей области, где новые вещи появляются быстрее, чем вы можете прочитать о них. При этом, если вы хотите улучшить, есть следующие категории, которые я бы рассмотрел. Для большей выгоды / ROI вы должны выбрать что-то из вашей самой слабой области, конечно.
Основополагающие знания
Несмотря на то, что они знают языки программирования и имеют практический опыт, часто есть области (особенно самообучения), в которых основные фундаментальные проблемы остаются незавершенными. Подумайте о таких вещах, как структуры данных, алгоритмы, стратегии кэширования, хэш-функции, ...
Обратите внимание, что это также включает основы языков программирования - все от компиляторов, методов оптимизации и систем типов, до теории категорий, монад и тому подобное.
Если вас хорошо обучают, как, например, в течение нескольких лет вы получили университетское образование, то вы, вероятно, уже будете сильны в этой категории (конечно, далеко не законченной, но солидной основы). В противном случае, попробуйте прочитать несколько книг в этих областях, чтобы узнать, чего не было в вашем репертуаре, чего вы даже не знали. Эту категорию легче всего переоценить.
Парадигматическое Знание
Я всегда поражаюсь, когда появляются программисты, которые думают, что они всезнайки, но совершенно не знают о других парадигмах, кроме основной. Если вы думаете, что объектная ориентация - это конец, это ваша категория для улучшения. Если вы думаете, что функциональное программирование тоже существует и, возможно, даже слышали о логическом программировании, тогда это все же хороший выбор. Существует гораздо больше парадигм, и изучение их имеет глубокий эффект, давая вам нечто похожее на новый взгляд на мир программирования.
Только не забывайте: часто (довольно философские по своей природе) аргументы о том, что можно считать парадигмой или нет. Не отвлекайтесь на это. Ваша цель должна состоять в том, чтобы расширить свой кругозор, и это означает, что изучение этих вещей, независимо от того, считает ли кто-то другой X парадигмой само по себе или нет, не имеет значения для этого.
Специалист Знания
Самый простой из них - и наименее полезный одновременно. Конечно, вы можете посвятить себя одной технологии и познакомиться со всеми ее плюсами и минусами, но вы должны быть готовы заплатить цену. Технологии стареют, и они делают это с постоянно растущей скоростью, что делает почти гарантию того, что потраченное время будет бесполезным через несколько лет.
Также проблема уменьшения отдачи сияет здесь. По самой своей природе быть специалистом по чему-то означает, что вы должны тратить бесчисленные часы на этот узкий предмет, и, следовательно, по определению вам потребуется много времени, чтобы изучить что-то новое, и эта новая вещь будет крошечной головоломкой, которая не собираюсь никому ничего менять.
Базовые знания
Будь то, потому что это сфера вашей работы, или просто исходя из ваших личных интересов, но быть экспертом в области компьютерных наук и определенной области очень ценно и полезно. Я не говорю о побочных областях CS здесь, таких как компьютерная графика или AI. Вместо этого обратите внимание, что компьютеры укоренились в жизни каждого, и это делает все остальные области подчиненными компьютерам и областью, в которую вы можете попасть.
Это однозначно относится к категории «вне вашей области», но это не острая математическая «снаружи», а скорее область применения. Примите лекарство: я не советую вам становиться врачом. Тем не менее, изучение основ медицины для того, чтобы применить имеющиеся у вас знания в области компьютерных наук к проблемам этой области, действительно имеет смысл. Это варьируется от методов визуализации, робототехники до экспертных систем и простого управления данными для учета / администрирования. Хотя вы делали все это раньше, выполнение этого в другой области может оказаться совершенно новым опытом.
Имейте в виду, что это более радикальные изменения в вашем направлении, чем в других категориях. Вы можете не иметь никакого контакта с этой областью в своей повседневной работе, что делает его чрезвычайно трудным для выполнения. Это может даже означать смену работы. Кроме того, вам понадобится какая-то сертификация вашего нового домена - вы все-таки новичок в этом домене, и вам придется конкурировать с выпускниками междисциплинарных исследований, которые уже начали свой путь, чтобы стать экспертами в этой нише.
Дополнительные знания
Как добавил Майк Браун, есть также область знаний, которая каким-то образом сопровождает вашу текущую работу, но не является строго необходимой. Вам не нужно быть руководителем проекта, чтобы узнать об управлении проектами, но, как обычно, дополнительные знания помогут вам лучше понять, как работает другая сторона. Можно даже обобщить это до такой степени, чтобы сосредоточиться на мягких навыках. Я думаю, что каждый, кто работал над реальным проектом с другими людьми, знает их ценность.