Они удерживают нас от нашего истинного потенциала.

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

Я все делал правильно. Но это все равно было тяжело.

Я был профессиональным программистом почти десять лет. Я изучил шаблоны проектирования. У меня есть степень бакалавра компьютерных наук, степень магистра программной инженерии и я работаю над второй степенью магистра информационных технологий. Я свободно говорю на нескольких языках программирования. Мне нравится разработка через тестирование (TDD), и я использую ее почти исключительно в течение нескольких лет. Я все делал правильно. Но это все равно было тяжело. Это не должно было быть трудным, но было.

Почему?

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

Я начал искать статистику по количеству программистов в мире и наткнулся на несколько статей, которые прояснили некоторые вещи.

Статья 1. Взгляд на ИТ в 1970–2016 годах

Ссылка: https://www.census.gov/newsroom/press-releases/2016/cb16-139.html

Глядя на это, количество ИТ-работников в США за 46 лет выросло с 500 тыс. До 5 млн. Это 10-кратное увеличение. Это огромный скачок.

Статья 2. Программисты как часть ИТ

Ссылка: https://www.census.gov/content/dam/Census/library/publications/2016/acs/acs-35.pdf

Согласно беглому анализу, программисты составляют около 25% ИТ-персонала. Таким образом, количество программистов в 1970 году, вероятно, составляло около 125 тысяч, а в 2016 году - до 1,25 миллиона.

Статья 3. Развитие программной инженерии

Ссылка: https://www.daxx.com/blog/development-trends/number-software-developers-world

Эта ссылка посвящена развитию разработки программного обеспечения как в США, так и во всем мире. Спойлер: он быстро растет и будет расти.

Какое отношение все это имеет к шаблонам проектирования, TDD или лучшим практикам? Все.

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

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

Разве это не их проблема?

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

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

Дайте мне команду людей, заинтересованных в решении проблемы. Меня не волнует, знают ли они что-нибудь о программировании. Я научу их программировать (если они захотят). Но не в программировании решаются проблемы. Их решают группы, которые работают вместе, чтобы найти решение. Детали реализации предстоит проработать позже. Я могу научиться программировать практически все. Вы тоже можете, если хотите. Google - потрясающий инструмент.

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