воскресенье, 24 июля 2011 г.

Жизненно важные способности для программиста

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

Дополнительная информация: