3

Список литературы для самообучения разработчика программного обеспечения

 2 years ago
source link: https://dckms.github.io/system-architecture/emacsway/it/self-education/self-education-for-software-engineer.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Предисловие

Классическая ошибка новичков - жажда к знаниям, нетерпеливость. Обычно это приводит к тому, что, в погоне за количеством, они надрываются (объем знаний, который предстоит освоить, действительно, огромный), осознают невыполнимость желаемого, впадают в депрессию, а затем и в состояние психологической защиты (мол, "академичность" неуместна на практике), и прекращают развиваться. Решается эта проблема очень просто - жажда должна быть не к знаниям, а к дисциплине. А уж дисциплина обязательно приведет к обретению знаний. Дисциплина - это, своего рода, производная знаний. Она поддерживает постоянную скорость на пути освоения знаний. Сперва нужно выработать привычку, а затем привычка будет работать на вас. Как говорится, сохраняйте порядок, и порядок сохранит вас.

📝 "I'm not a great programmer; I'm just a good programmer with great habits."

—Kent Beck at "Refactoring: Improving the Design of Existing Code" 1st edition by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts

Достаточно читать по 5 страниц в день. Тут главное - стабильность. Пусть будет по чуть-чуть, но постоянно. Дисциплина - мать победы, говорил А.В. Суворов. Гнаться за количеством не нужно.

📝 "A little reading goes a long way toward professional advancement. If you read even one good programming book every two months, roughly 35 pages a week, you'll soon have a firm grasp on the industry and distinguish yourself from nearly everyone around you."

—"Code Complete" by Steve McConnell

📝 "We become authorities and experts in the practical and scientific spheres by so many separate acts and hours of work. If a person keeps faithfully busy each hour of the working day, he can count on waking up some morning to find himself one of the competent ones of his generation."

—William James, cited by Steve McConnell in "Code Complete"

И, желательно, чтобы читаемая книга совпадала с тематикой текущего проекта, чтобы через практику хорошо легла в память. Я по этой причине часто изменял свой график чтения. Обычно я читал в параллели 2-3 книги. Одну - планово, другие - по потребностям проекта.

Еще одной ошибкой является неудачный выбор литературы. Сегодня штампуется много литературы, но далеко не каждая книга достойна внимания. Закон Парето работает и здесь.

Хорошей вещью для систематизации собственных знаний является написание статей и участие в профессиональных дискуссиях. Ничто так не систематизирует собственные знания, как попытка объяснить что-то другому человеку. Вы, конечно, будете периодически ошибаться, но для кристализации знаний это лучше, чем ничего не делать. К тому же, это хорошо развивает сдержанность в аргументации, что немаловажно.

На первых порах критически важно участвовать в Open Source проектах. Можно завести свои собственные Open Source проекты. Можно принимать участие в каких-то существующих проектах с авторитетными комьюнити, которые будут помогать избавляться от ошибок. В любом случае, не надейтесь на то, что профессиональные проекты предоставят вам достаточную практику для закрепления знаний. А Open Source проекты - очень даже предоставят. Я даже считаю, что практика должна предшествовать теории, потому что трудно запомнить какое-то решение, если вам на практике не знакома решаемая проблема.

📝 "Если лечиться по справочнику, то рискуешь умереть от опечатки."

—Марк Твен

Потребность в теории должна назреть. Когда я приступал к теории, то у меня был накоплен уже солидный багаж проблем, решение которых я искал. Когда я впервые прочитал о мотивации паттерна Bridge, у меня в голове промелькнуло: "так вот, оказывается, как решается та самая проблема". Когда я читал каталог Code Smells, я частенько вспоминал свой код. В результате, решения навечно запечатлелись в памяти.

Очень правильно сказал Сергей Тепляков: "Полноценное обучение – это не теория vs. практика. Это комбинация этих вещей, при этом процент одного и другого зависит от человека и изучаемой темы."

Ну и, главное, не впадать в фанатизм. Засасывает. Нужно себя уравновешивать другими интересами, семья, спорт, физкультура, шашлыки, друзья, путешествия... Непредвзятый и свободный взгляд намного важнее изобилия знаний. Путешествие должно быть на легке, как говорил Кент Бек. По сути, знания нужны только для того, чтобы избавиться от всего лишнего. Архитектура - это, на самом деле, наука об ограничениях (т.е. о том, как не надо делать).


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK