суббота, 16 мая 2009 г.

Четыре уровня компетентности в программировании

Источник: http://dev.by

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

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

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

В этой статье мы попытаемся применить эту простую схему на том умении, которое мы с вами практикуем каждый день – программировании.

Уровень 1. Неосознанная некомпетентность.

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

В реальности Джон – это безжалостный копипастер. Он считает, что выскакивающие при клике сообщения это и есть весь JavaScript. PHP? Проще простого – он может установить Wordpress. Linux? Он умеет загружаться с лайвсиди Ubunt’ы, он может организовать кластер сбалансированных по нагрузке веб-серверов Apache. Его знания не знают границ.

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

Джон – неосознанно некомпетентен.

Уровень 2. Осознанная некомпетентность

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

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

Он выбирает наиболее подходящий, по его мнению вариант и начинает с изучения документации и туториалов на сайте, а после этого, наконец, загружает программу. Все его восторги и энтузиазм исчезают в мгновение ока, когда он видит перед собой сообщение ‘Database connection error’. Он пытается ещё раз и ещё раз, трижды проверяя каждый шаг вплоть, но всё без толку. Однако Марк нисколько не раздражён, он прекрасно знает, что это просто не его сфера компетенции.

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

Марк – осознанно некомпетентен.

Уровень 3. Осознанная компетентность

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

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

На днях он написал 30-40 строк кода для своего собственного проекта. Однако он не может скрыть лёгкого разочарования, когда через пару дней замечает в сети гораздо более элегантно решение, объёмом при этом в добрых два раза меньше. Он мечтает о том, что будет когда-то способен и сам самостоятельно писать код такого качества. Однако уже после минутных мечтаний он начинает просматривать свои собственные файлы в поисках ошибки. Он знает, что если он сейчас не перепишет этот участок, он сегодня не заснёт. Но он, так или иначе, не будет копипастить.

Адриан на пути к тому, чтобы стать блестящим профессионалом, но он не гонится за титулами и званиями, он может не торопиться и всё делать обстоятельно.

Адриан – осознанно компетентен.

Уровень 4. Неосознанная компетентность

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

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

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

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

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

Источник: http://www.xakep.ru

1. Screen-Resolution.com
Сайт позволяет увидеть как будет выглядеть сайт при разных разрешениях монитора. Работает только в IE, но все равно лучше чем ничего - можно кликать ссылки и перемещаться по сайту.

2. BrowserShots.org
Делает статический скриншот сайта, почти тоже самое, что и в первом пункте, только перемещаться по ссылкам нельзя.

3. Кэш поисковых систем
Поисковая машина кэширует страницы, которые и можно посмотреть. Можно использовать не только Google, но и Yahoo и т.п.

4. Системы перевода
Сервисы типа Yahoo BabelFish и Google Translate позволяют перевести страницу с одного языка на другой. Фишка в том, что ваш доступ к заблокированной странице вовсе и не нужен, сервис сам ее получит и предоставит вам.

5. По почте
Сервис Web2Mail может прислать вам произвольную страницу по почте - достаточно послать письмо на www@web2mail.com, где в Subject указать требуемый URL. Можно попробовать и другой подобный сервис - WebinMail.

6. Кэш Google Mobile Search
Еще один вариант - оставляет нормальный HTML код, удаляет javascript и CSS.

7. Подписка на RSS
Может работать не на всех сайтах, но все равно можно попробовать подписаться на потоки и читать их или посылать себе на почту.

8. Wayback Machine
Wayback Machine - еще один сервис, который периодически сохраняет копии страниц, своего рода "архив Интернета". не для весх сайтов работает, к тому же имеет ощутимый временной лаг.