эзотерическое программирование
От: frogkiller Россия  
Дата: 11.09.07 12:53
Оценка: 43 (11) +2 :))
Время от времени встречаю на форуме вопросы, какие уровни у программистов бывают, и что это означает. Предлагаю своё вольное переложение классических эзотерических архетипов применительно к IT

Итак, существует всего семь уровней развития программиста как специалиста:

1. Apperentice programmer. Знает основы программирования и базовые понятия: "функция", "цикл", "переменная" и тд. Язык программирования и платформа реализации не важны — hello world одинаково легко пишется практически на всех языках, а дальше с помощью мануала к нему постепенно добавляется необходимое примитивное содержимое. (Человек, который не может из мануала скопировать программу hello world по природе не может являться программистом.)

2. Juinior programmer. Знает основные особенности какого-то языка, умеет решать типовые задачи, не задумываясь, впрочем об эффективности и возможных изменениях. Верит, что с помощью проверенных временем технологий copy/paste и search/replace из пяти проектов с sourceforge.net можно сделать всё что угодно. Получившее назовут "индусским кодом", но это не признак национальности, а состояние сознания.

3. Programmer. Очень хорошо знает какой-нибудь язык программирования, технологию и основные особенности одной или нескольких платформ. Частно с успехом применяет рефакторинг, но думает, что применение паттернов проектирования от GoF автоматически позволит добиться успеха в любой ситуации. Его девиз — "любая проблема может быть решена путём введения дополнительных абстрактных слоёв". Точка. Вторую часть пословицы он предпочитает не замечать. Но часто случается так, что сложная иерархическая структура из паттернов оказывается нежизнеспособной, и требуется вмешательство Team Lead'а с классическим KISS, чтобы вдохнуть жизнь в его программу.

4. Senior programmer. Начинает действительно чувствовать "запах кода". Часто интуитивно может принять или отвергнуть какое-то решение (и обычно оказывается прав). Перепробовав (возможно даже мысленно) несколько вариантов решения, может найти наилучший.

5. Team Lead. Может разработать довольно сложное приложение, и в отличие от аналогичного решения programmer'а оно заработает с первого раза. Знает, какие паттерны в данной ситуации можно применять, а какие не стоит. Может написать понятную другим спецификацию на программу и объяснить Programmer'у, как проще (и лучше) по этой спецификации написать работающее приложение.

6. System Architect. Разрабатывает не отдельные приложения, а сложные гетерогенные комплексы, самостоятельно решающие большую задачу в какой-то области. Описывает внутренние и внешние интерфейсы системы, предусматривая её изменение, расширение, интеграцию со сторонними приложениями и даже перенос на другую платформу. Может написать спецификацию на весь программынй комплекс. Может (действительно может) соединить пять произвольных проектов с sourceforge.net в один большой.

7. Guru. Ему не важен язык программирования, платформа, технология и область применения. Для любой задачи он найдёт лучшее решение и реализует его (с помощью нижестоящих архетипов), применив наиболее подходящие инструменты.


Написанное является моим humble opinion, полушуткой, но в каждой шутке есть... ИМХО тема слишком серьёзная для КУ.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Курица — это инструмент, с помощью которого одно яйцо производит другие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.