Какому навыку в программировании обучить сложнее всего?

Какому навыку в программировании обучить сложнее всего? На этот вопрос постарались ответить пользователи сайта Quora.

 

Стив Гэринг, технический директор Easil (2017-н.в.)

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

Нередко можно услышать: «Задача X выполнена, осталось только протестировать программу и можно переходить к задаче Y». Однако на следующий же день можно услышать от разработчика: «Я все еще работаю над задачей X, в ней обнаружилось несколько багов и мне придется исправлять их весь день».

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

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

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

Я видел функции с именем `codeToRun (id)`. Можете ли вы догадаться, что делала эта функция? Блокировала 60 строк кода, ожидая загрузки изображений в документе. Поэтому, когда я столкнулся с этим, мне пришлось залезть в код, найти эту функцию и прочитать те 60 строк кода, чтобы понять, какого черта происходит. Если бы функция называлась `blockForImages`, я мог бы избежать этих манипуляций.

Жаль, что у меня не сохранился пример этого кода, но просто скажу, что самое худшее, что я когда-либо видел, это одна строка JavaScript, на которую у меня ушло примерно 15 минут, просто чтобы ее понять. Это была одна строка, 7 одиночных символьных переменных и 3 функции. Имя функции не дало мне никаких указаний на ее цель, код внутри был невероятно запутанным, и когда я посмотрел ссылки на функцию, входы и выходы также были одиночными символьными переменными. Я должен был прочитать примерно 50 строк кода, чтобы понять эту единственную строчку.

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

 

Райан Гедвилл, сооснователь компании (2016-н.в.)

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

Некоторые языки программирования написаны сами на себе – например, Smalltalk. Это приложение рекурсии, которая является результатом чистого объектно-ориентированного программирования.

Объектно-ориентированное программирование – это абстракция, и программные языки изо всех сил стараются вплести эту абстракцию в свою структуру.

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

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

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

 

 

 

Джонас Меллин, преподаю программирование с 1990

  1. Работать как настоящая команда, то быть частью команды, оставаясь при этом личностью со своей позицией и ценностями. Это подразумевает действовать сообща, помогая друг другу и принимая совместные решения по выполнению задач.
  2. Создавать достаточно комфортную среду для стимулирования творчества. В этом каждый должен вносить свой вклад.
  3. Расставлять приоритеты. Особенно важно принимать взвешенные решения, принимая во внимание все аспекты, что особенно успешно удается делать в команде.
  4. Анализировать влияние тех или иных изменений на существующее положение дел.

 

Джейсон Русс, программист, сертифицированный педагог, начинающий писатель

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

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

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

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

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

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 1
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Читайте также

 

Комментарии

Страницы

Аватар пользователя mike

Видимо, эта офигительная банальщина является каким-то откровением для журналистов. 

Аватар пользователя mike

Найдите ещё текст про "от чего сложнее всего отучить". :))

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

Аватар пользователя mike

Верно, Пахом, верно. И я впадал в такую трасянку.

 

Аватар пользователя savely

> Хорошо, когда знаешь всего один язык программирования... 

Хорошо. Но плохо... 

> а потом смотрел на код, а он из многоязыковой смеси... Приходилось материться и исправлять...

Че, пайтон-куски на ASM переписывал? ;)

Аватар пользователя mike

And what about me то я путался с пайтоном, делал отступы, забывая, что в плюсах блок выделяется фигурными скобками. Не всегда айди это делала за меня. crying

mike пишет:

And what about me то я путался с пайтоном, делал отступы, забывая, что в плюсах блок выделяется фигурными скобками. Не всегда айди это делала за меня. crying


Мир погубил Вавилон. (С)

По всякому было...

Мир погубил Вавилон. (С) - Воистину! Причём офигенно жалко, что ни одному Герою не удалось полностью захватить всю плоскую Землю и принудить всех людей говорить и писать на одном языке. А то ходишь по Питеру и половину того что говорят вокруг тебя не понимаешь ((( С языками программирования там объективная необходимость многоязычья, а вот то что на улицах по разному гутарят - недосмотр!

PahomUbuntu пишет:

По всякому было...

Мир погубил Вавилон. (С) - Воистину! Причём офигенно жалко, что ни одному Герою не удалось полностью захватить всю плоскую Землю и принудить всех людей говорить и писать на одном языке. А то ходишь по Питеру и половину того что говорят вокруг тебя не понимаешь ((( С языками программирования там объективная необходимость многоязычья, а вот то что на улицах по разному гутарят - недосмотр!

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

Мир не погубил никакой Вавилон. Откуда этот христианский бред? До сих пор пользуемся 60-теричной системой для времени, геометрии и т.д. Вавилон -- это основа нашей цивилизации. Многообразие -- это основа Природы.

Смешение стилей -- это иногда очень хорошо, если уметь это делать. А если не уметь, тогда зачем вы "скачете" из одного языка в другой? Сидите 30 лет на С++ или на COBOL-е и не выходите за рамки своего обитания.

Для "нормального" человека выучить пару-тройку иностранных языков (не только программирования) это в радость. Объективная необходимость многоязычья есть не только в языках программирования.

Dzmitry Paulenka пишет:

Дражайший,

Уважаемый,

Природа любит многообразие видов.

Природе вообще не свойственна какая-то любовь. Для любви нужно существо!

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

Универсальным быть ради чего? Если специализация приносить больше бала, то универсальность неприемлема вовсе. Поди. Если!

Мир не погубил никакой Вавилон. Откуда этот христианский бред?

Библия. (С)

До сих пор пользуемся 60-теричной системой для времени, геометрии и т.д. Вавилон -- это основа нашей цивилизации. Многообразие -- это основа Природы.

Динозавры вымерли. (С)

Смешение стилей -- это иногда очень хорошо, если уметь это делать. А если не уметь, тогда зачем вы "скачете" из одного языка в другой? Сидите 30 лет на С++ или на COBOL-е и не выходите за рамки своего обитания.

Многие и сидят успешно на C, развивая и латая Linux.

Для "нормального" человека выучить пару-тройку иностранных языков (не только программирования) это в радость.

Полиглоты довольной редкий тип. (С) То есть это не приносит всеобщий кайф. В большинстве случаев это в тягость.

Объективная необходимость многоязычья есть не только в языках программирования.

Нет такого. (С) А если и есть, то с течением времени искореняется повсеместно. То есть ... языки исчезают массово.

 

-1

Страницы