войти зарегистрироваться

Я умный whois

индекс
0,00

Типы знаний программиста и как их улучшать

Давайте опишем типы знаний и как они развиваются в мозгу программиста. Существуют три типа знаний:

  • Концептуальные (почему?, что?, если? - т.е. семантика) - понимание концепций, принципов, отношений и основных подходов к разработке программных систем. Этот тип знаний обосновывает почему архитектура приложения или алгоритм должны быть написаны определённым образом, каковы альтернативы и почему выбранный вариант - лучший с логической точки зрения. Концептуальные знания дают широкое видение и понимание того, что стоит за решение конкретных проблем в данной задаче.
    Применение: находите более качественные решения для сложных проблем
    Приобретение: изучение компьютерных и околокомпьютерных наук, концепций проектирования и программирования; создание своих собственных теорий, основанных на практике и опыте.

  • Практические (как? - т.е. процедура) - знание того, как решать конкретную проблему в программировании. Это не требует глубокого понимания концепций и теории, стоящих за выбором конкретного способа воплощения.
    Применение: быстрое решение проблем с помощью хорошо себя зарекомендовавших и проверенных решение без изобретения "велосипедов" с нуля.
    Приобретение: поиск существующих решений, обучение на примерах или переиспользование своих решений.

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





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



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

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



Итак:

A. Ищите

1. Критерии - поймите, в чём заключается ваша проблема и в каких терминах её определить. Интернет так огромен и интересен, что способен поглощать уйму времени при неадекватных критериях поиска.
2. Поиск - научитесь эффективно использовать возможности конкретных поисковых машин.
3. Пробегайте по результатам - учитесь быстро определять качество содержимого, уровень доверия к источнику, а так же квалификацию автора.
4. Читайте отобранное
5. Оценивайте - определяйте требуемые для этого варианта условия, инструменты и время.

B. Используйте

1. Копируйте код и научитесь тестировать его (особенно вам помогут юнит-тесты).
2. Чистите код - оставляйте лишь минимальный, чистый и эффективный код.
3. Добавляйте код в свои приложения.

C. Учитесь

1. Понимание того что и почему вы сделали. Учитесь из кода и работающих программ.
2. Расширяйте знания:
* практические: приёмы, примеры и best practices в том, чем вы занимаетесь;
* концептуальные: учитесь новым концепциям, обдумывайте уже знакомые и создавайте свои;
* опытные: опыт будет расти со временем, если вы прикладываете усилия к поиску наилучших решений и учитесь на их основе.
3. Собирайте (ссылки, отзывы, списки к прочтению) - любая интересная информация для ваших дальнейших исследований и обучения.

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

комментарии (13)

  • под кат
    • и то как можно скорее
    • Спасибо за замечание. Держал же хабракат в голове, но забыл. Чувствую как появляется опыт... :)
  • 3. Копите (ссылки, отзывы, списки к прочтению)
    — копите само по себе, в одиночку погано звучит :( Может, собирайте?
  • Спасибо! Взял на заметку. Хорошо классифицированные тривиальные идеи иногда нужнее креативного хаоса.
  • Спасибо, пробежался галазами по картинкам — все понятно :)
  • картинки стоило бы, наверное, тоже перевести
  • Не забывайте, что главное — розовая стрелочка с подписью «motivation».
  • Спасибо! Очень познавательная статья.
  • К каждому пункту статьи хочется приписать фразу: "Ссылка на источник?", как в Википедии. Ибо набор каких-то необоснованных утверждений.
  • Как и в любой философической статье, много тривиальщины и неверифицируемых утверждений. Но почитать на досуге забавно, спасибо.
    • С философией всегда так: берёт несложные утверждения и крутит под разными углами. Если упорно крутить, то рано или поздно знание изящно укладывается внутри черепной коробки и не гремит. :)
  • Хватило бы просто картинок на языке оригинала :) мало того, это примеры человеческих типов знаний.
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.