Реклама в Telegram-каналах DzikPic и dev.by теперь дешевле. Узнать подробности 👨🏻‍💻
Support us

Software — not engineering

Оставить комментарий
Software — not engineering
В последнее время стало модным подчёркивать тот факт, что мы все с вами занимаемся не разработкой программного обеспечения, а его инженерией, как бы это слово не резало слух. Руководители компаний в своих интервью непрестанно подчёркивают и выделяют это сладкое и умное слово engineering, мол, белорусские разработчики это не пролетарии кодерства, а люди способные создавать программные системы, интегрируемые в бизнес-модель заказчика. Вообще конечно забавно слышать, как по новому заиграло слово "инженер", от которого все раньше так яростно открещивались, помня, насколько это понятие замызгали бесконечными заводами, стодесятирублёвой начальной зарплатой и бессмысленными НИИ в советское время. Но речь совсем не об этом. Если вы возьмёте любой рекламный проспект белорусской ИТ-компании, то среди перечисляемых преимуществ выбора именно компании из Синеокой главным пунктом всегда идёт высокий уровень разработчиков, обеспечиваемый научно-ориентированной системой образования, разработанной в Советском Союзе. Перед глазами у заказчика из Филадельфии или Берлина встаёт образ гениального советского учёного около страшной ракеты, а также бесполезного индуса, с которым он намучался годом ранее и он решает отдать проект в Беларусь или там, Украину.

Наука, математика, программирование

Ректорат наших университетов, а в самой большой степени БГУ, никогда не преминет возможностью упомянуть о "классическом" образе нашего образования (как это мило, кстати, звучит), ведь у нас в ВУЗах учат не просто каким-то уходящим практическим знаниям, а способности мыслить, развивают интеллект, а не вырабатывают навыки стучать по клавиатуре. И хоть студенты вечно не понимают, зачем им изучать теорию струн, лезть в дебри диффуров или квантовой физики, на самом деле это всё играет важнейшую роль и помогает им стать специалистами высокого уровня. Почему при этом после университета к работе над проектами пригодна в лучшем случае треть выпускников, никто особо не старается упоминать. Кроме того у нас распространено мнение о том, что аутсорсинг это низкоквалифицированный программерский труд и что наши девелоперы, ах, извините, software инженеры, выполняют monkey job для американцев или, там, немцев, в то время как там уже крутые гуру и профессионалы решают настоящие задачи. Зачем учить серьёзные научные дисциплины, если потом их никогда толком не использовать в работе? На самом деле и в той же Америке многие задаются тем же вопросом. Там точно также же в университетах студенту учат высшую математику, а потом работают в компании, которая социальные сети кодирует и в свет выпускает. У них специальность, по которой учатся будущие программисты, называется computer sciences и она точна также во многом далека от того, чем приходится заниматься программисту в реальности. Так вот, кто это такой вообще программист? Это инженер или конвейерный работник, или кто-нибудь ещё? Разработка программного обеспечения - это рутина производственного процесса или научная работа или вообще творчество (как любят говорить наиболее увлечённые кодеры)? Где проходит граница между наукой, математикой и программированием?

Software Engineering VS Computer Science

Задуматься над всем этим меня подвигла статья Чака Коннела под простым, но весьма информативным названием Software Engineering ≠ Computer Science , а также её обсуждение на слэшдоте . В данной статье автор, учивший, как и мы все, теоретические дисциплины в университете, удивляется насколько в реальности далека разработка ПО, от математики и насколько она "гуманитарна" в плане того, что всё в подавляющем большинстве программ определяется людьми их мнениями и суждениями. Для наглядности Чак даже приводит весьма оригинальную и, на мой взгляд, правильную картинку о том, что такое software engineering. Всё то, что выше черты – это и есть реальность software engineering, всё что ниже – computer sciences, то есть, фактически наша с вами теория из университета. Смысл данной картинки и всей статьи в том, что программирование, как это парадоксально не прозвучит, абсолютно иррационально и процесс разработки нельзя как-то формализовать и проводить по правилам и конвейерному принципу (а такое построение процесса производства и есть цель инженерии, к слову). Все существующие системы сертификации и всякие там рупы – это не более чем просто какой-то набор правил и тезисов, выработанных на основе опыта предыдущих проектов, при том что каждый новый проект – это новый опыт и в нём не получится руководствоваться лишь только старыми наработками. Не менее интересно и обсуждение данной статьи, которое развернулось на слэшдоте. Один из авторов комментариев высказал весьма интересную мысль о том, что современный программист занимается дизайном. Инструментарий в лице фреймворков у него уже есть, как и функциональные блоки разного уровня, и из всего этого он составляет рабочую систему, добавляя какие-то блоки и рюшечки. То есть формально программист – это дизайнер, а точнее будет выразиться – проектировщик, который сам по себе отношения не имеет к самой сути реализуемых им вещей. Нет в программировании никакой математики, это исключительно конструкторство, лего-го-го, короче. В последнем предложении я, конечно, утрирую, но, так или иначе во многом согласен с автором комментария. Программирование не касается ни математики, ни даже алгоритмирования. Причём это касается не только, допустим, веб-разработки, но и вообще программирования, даже достаточно сложных и связанных с математикой программ по той же обработке звука или изображений. Задача программиста - это грамотная реализация и интеграция какого-то фактически уже готово функционала в систему, будь это функция из какого-нибудь API или преобразование Фурье. Работа с кубиками, одним словом. И это, как ни странно, работа творческая – даже банальное кодирование странички, как показывает обширная статья, появившаяся на девбае несколько дней назад, процесс вполне себе творческий и содержащий в себе не только практичность и рациональность, но и свою эстетику. Не говоря про уже более сложные вещи, в которых задействуется уже программирование в полном смысле. Поэтому, по моему мнению, говорить о какой-то инженерии в отношении разработки – это полный бред. А насчёт обучения суровым научным дисциплинам в университетах, то главная их роль это действительно банально развить у человека логическое мышление, чтобы лучше потом конструировалось, и кубики правильнее составлялись, а практического сиюминутного смысла в этом нет никакого. Хотя, будь моя воля, я бы вообще ввёл какие-нибудь кванты в качестве обязательного предмета для всех специальностей, логика никому не помешает. Проблема в том, что подобный творческий подход, основанный при этом на продвинутой логике, использует совсем небольшой процент программистов и большинство кодирует по принципу "оно же работает". Вот с этим как раз и надо бороться и исправлять, чтобы потом не было претензий и разглагольствований по поводу monkey job.
Новый рекламный формат в наших телеграм-каналах.

Купить 500 символов за $150

Читайте также
8 актуальных и интересных курсов по Rust (июнь 2023) + бонус от GitHub
8 актуальных и интересных курсов по Rust (июнь 2023) + бонус от GitHub
8 актуальных и интересных курсов по Rust (июнь 2023) + бонус от GitHub
Рассмотрели преимущества и особенности языка Rust, а также сделали подборку курсов по нему, которые будут интересны как новичкам, так и опытным программистам.
7 комментариев
7 отличных курсов по финансам. Уплыть «с галеры» и основать свой стартап
7 отличных курсов по финансам. Уплыть «с галеры» и основать свой стартап
7 отличных курсов по финансам. Уплыть «с галеры» и основать свой стартап
Если вы посмотрели «Волк с Уолл-стрит» и хотите, как Леонардо ди Каприо прогуливаться по яхте с бокалом вина в руках, но не знаете, с чего начать, подборка курсов Digitaldefynd станет для вас отличным стартом. Здесь представлены как платные, так и бесплатные программы, которые помогут вам освоить финансовое моделирование. Они подойдут не только для начинающих слушателей, но и для экспертов.
Самые популярные курсы программирования на DataCamp у беларусов со скидкой 65%
Самые популярные курсы программирования на DataCamp у беларусов со скидкой 65%
Самые популярные курсы программирования на DataCamp у беларусов со скидкой 65%
Мечтаете создать собственную игру? Собрали классные курсы по геймдеву всего за 9,99$!
Мечтаете создать собственную игру? Собрали классные курсы по геймдеву всего за 9,99$!
Мечтаете создать собственную игру? Собрали классные курсы по геймдеву всего за 9,99$!

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.