Код и умение

О программистах, не склонных к математике, и их нереализованном потенциале творчества и полезности

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

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

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

Умение считать

Счисление - это способность рассуждать и применять простые числовые концепции. Базовые навыки счета состоят из понимания фундаментальной арифметики, такой как сложение, вычитание, умножение и деление. […] Существенные аспекты математической грамотности также включают чувство числа, чувство действия, вычисление, измерение, геометрию, вероятность и статистику.
- Счисление, Википедия

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

Хорошее программное обеспечение - это опыт

Двадцать лет назад только около четверти домохозяйств в США имели персональные компьютеры. К 2013 году это число выросло до более 80%. Более половины всех американцев сейчас ходят с компьютером в кармане. Такой рост кажется замечательным, и многим это, конечно, было немыслимо.

Такое быстрое внедрение компьютеров в ткань нашей жизни и общества, несомненно, было связано с их полезностью, но также и с улучшением удобства использования. От мыши и графического пользовательского интерфейса до мультисенсорных экранов эти разработки сделали программное обеспечение чем-то, что может использовать каждый. Затем, объединив полезность с простотой использования и приняв анимацию и взаимодействие в качестве инструментов взаимодействия, программное обеспечение стало тем, что каждый хотел бы использовать. Эту идею - сделать программное обеспечение не только удобным, но и приятным в использовании - приняли и поддержали многие технологические лидеры, от покойного Стива Джобса до соучредителя Reddit Алексиса Оганяна. Это было систематизировано в простую фразу, которую вы сейчас видите во всей отрасли: удивление и восторг.

Создание опыта - это математика

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

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

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

Хотите создать собственную анимацию? Вам понадобится хотя бы немного знаний в области математики. Вы пытаетесь по-новому представить взаимодействие? Как насчет визуализации данных новыми красивыми способами? Некоторая степень математической грамотности неоценима для создания оригинального программного обеспечения.

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

Может ты хочешь попробовать что-нибудь другое

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

Кроме того, если вы хотите перейти к различным дисциплинам разработки, математика будет незаменима. Если вы работаете с данными, создаете серверную часть или API-интерфейсы, велика вероятность, что вам понадобится немного математики. Возможно, вам стоит побеспокоиться об алгоритмической сложности. Возможно, вы захотите на лету конвертировать данные или рассчитывать значения для API. Эй, может быть, вам даже нужно будет найти и подключить средство решения Задач коммивояжера.

Знание математики может даже быть полезным для программирования по-разному. Функциональное программирование - это совершенно другая парадигма программирования (в отличие от более традиционного структурированного программирования), которая набирает популярность. Я сам еще не вскочил в функциональное программирование, но у меня есть достоверные сведения, что это очень математическое мышление, а математическое мышление и понимание теории категорий невероятно полезны для понимания и использования парадигмы.

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

Кем я себя считаю?

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

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



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



Я также должен отметить, что небольшой процент населения - от 3% до 6% - страдает дискалькулией. Более известное состояние дислексии влияет на навыки чтения; дискалькулия вместо этого препятствует базовому пониманию математики. Я далек от квалификации, чтобы давать советы по лечению математических нарушений, но, хотя исследования кажутся ограниченными, меня обнадеживают очевидные преимущества индивидуализированного обучения и программного обеспечения.



Я могу рассказать, насколько полезной была математическая грамотность в течение моей карьеры. Мое образование в области программирования началось одновременно с появлением пузыря на микросайте Flash, и я вспоминаю ранний игровой проект, в котором требовалась некоторая тригонометрия для преобразования движения под углом в значения x и y. Я помню, как узнал о шуме Перлина от Марио Клингеманна. За время работы в рекламе математик проинформировал о нескольких крутых проектах, включая микросайт для LEGO. Потребность в математических знаниях не исчезла с появлением микросайтов Flash; Создание цифровых продуктов на Ралли часто означает создание уникальных, оригинальных интерфейсов или визуализаций.

Если вы не любите математику, это для вас

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

Давай займемся этим

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

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

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

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