Правила саморазвития программиста

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Правила саморазвития программиста

Автор: Сергей Тепляков – эксперт в области .Net, С++ и архитектуры приложений.


Эффективное развитие весьма субъективно. Если что-то подходит одному, не обязательно подойдет другому. Самое важное для саморазвития – стабильная мотивация в течение длительного времени. И только самостоятельно можно найти правильный баланс между теорией и практикой, подобрать правильную частоту переключения между темами и найти стимул к изучению нового.

«Правильно» в этом вопросе означает баланс между затраченными усилиями и результатом, который будет оптимальным и эффективным для конкретного человека. Несмотря на индивидуальность, в процессе развития есть несколько важных моментов:

  1. хорошие источники;
  2. упор на получение стабильных знаний;
  3. итеративность обучения и практика;
  4. относительно четкий план развития;
  5. разнообразие тем;
  6. мотивация.

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

Данная подборка далека от совершенства, но может послужить хорошей отправной точкой.

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

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


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

Я в течение последних нескольких лет занимаюсь разработкой учебных курсов и могу посоветовать несколько толковых курсов собственной разработки и разработки моих коллег:

2. Упор на получение стабильных знаний


IT- индустрия развивается невероятно быстро, но при этом многие концепции, которые являются "новыми" в мире .NET/Java/C++, известны специалистам десятилетия. Функциональное программирование старше структурного и ООП, но лишь сейчас оно становится все более популярным.
Нет смысла запоминать миллион фактов из всевозможных областей знаний. Эффективнее создать каркас из фундаментальных знаний, из которых выводить и более эффективно получать новые.

Хорошее знание даже такого высокоуровневого языка как C# позволит быстрее освоить другие схожие языки, такие как Java. Понимание концепций СУБД позволит разобраться и с SQL Server, и с Postgre SQL, и с Oralcle. Понимание концепций многопоточности позволит эффективно работать на любой платформе, поскольку паттерны синхронизации похожи.

Упор на получение стабильных знаний непосредственно связан с наличием хороших источников– хорошая книга дает не сиюминутные знания, а основу, на которой эти знания держатся. Изучение качественных источников позволяет учиться быстрее путем повторного использования знаний.

3. Итеративность обучения и практика

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

Книгу Рихтера можно перечитывать несколько раз и каждый раз находиться для себя интересные вещи, на которые не обратил внимания раньше. Философские вещи, типа кодинга, ООП, ФП и тому подобного требуют еще большего времени для усвоения.

Очень важен баланс между теорией и практикой, когда теоретический «матан» становится осмысленной базой, на которой строится принятие практических решений. Звучит непонятно, но до тех пор, пока сам не столкнешься с проблемой инициализации синглтонов, не поверишь, что теоретические знания о beforefieldinit могут быть полезными на практике.

Именно поэтому, к тем же самым темам стоит периодически возвращаться и смотреть, как изменяется отношение к этому вопросу со временем. Это не значит, что нужно перечитывать одно и то же (хотя и это возможно) или смотреть одни и те же видеокурсы, достаточно иметь подходящий набор источников.

Итеративность процесса обучения имеет ряд плюсов. Во-первых, невозможно слишком долго изучать одну тему, иногда необходимо отдыхать и переключаться на что-то другое. Во-вторых, чтобы добиться более глубокого понимания одной темы, обычно следует окунуться в другую. Например, невозможно досконально знать C# без понимания CLR/JIT. А чтобы разобраться с этими темами необходимо понимание ОС и других низкоуровневых вещей.

Аналогично: чтобы разобраться с ООП, зачастую необходимо посмотреть на другие парадигмы программирования, например, глянуть на проблемы структурного программирования и изучить основы функционального программирования.

4. Относительно четкий план развития

Не обязательно иметь план обучения, расписанный по дням на 10 лет вперед. Достаточно иметь простую mind map, в которой будут обозначены ключевые ветви развития: ООП, Кодинг, Философия программирования, Архитектура, Алгоритмы, Многопоточность, Управление проектами и т.п. При этом можно сделать подборку материалов из книг, статей или курсов, и когда появится желание продолжить обучение, не придется тратить время на поиск подходящих материалов.

Идея заключается в том, чтобы не метаться из стороны в сторону, когда появится желание изучить чего-то новое, а четко понимать, в какую сторону направить свои интересы и куда переключиться со временем. К тому же, важно хотя бы какое-то время уделить одной теме, а не пытаться одним махом объять необъятное.

5. Разнообразие тем

Очень важно соблюдать правильный баланс между глубиной и широтой знаний. Нет смысла бесконечно изучать .NET, ограничивать себя только вебом, только ООП, только С++ или только чем-то еще. Чтобы добиться более глубоких знаний, следует обратить внимание на смежные области.

6. Мотивация

Процесс развития одновременно невероятно прост и сложен. В нем нет ничего сложного, когда процесс изучения увлекает, когда не замечаешь затраченных усилий. Сложность же заключается в том, что необходимо заниматься этим делом каждый день.

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

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


Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Оценка и обучение ИТ-специалистов по ключевым направлениям разработки программного обеспечения. Курсы от экспертов-практиков по языкам программирования, системному и бизнес-анализу, управлению проектами, тестированию ПО, архитектуре ПО. Luxoft Training – единственный учебный центр в России, авторизованный IIBA. Действует скидка 10% на обучение физических лиц.
   Подпишись на ежемесячный DigestLT
Успешная форма подписки.
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.