Программирование как профессия в гонке на дно? [закрыто]


41

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

  1. Не тратить время на внедрение лучших практик
  2. Максимально используя чужой код (пользовательский код как обязательство)
  3. Использование языков более высокого уровня для повышения производительности
  4. «Инструменты» разработки на основе графического интерфейса, которые значительно упрощают «программирование» и не требуют, чтобы люди понимали, как работает код.

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

Моя точка зрения здесь такова: а) есть ли несоответствие между навыками и экономическими интересами работодателя? и б) если есть, как вы смягчаете его, чтобы обеспечить соблюдение профессиональных стандартов?


28
Ну, кто-то еще должен сделать эти инструменты. Так что в некотором смысле это гонка, чтобы держать хороших программистов от скучной работы.
Джереми Хейлер

11
Почему кто-то верит, что будущее разработки программного обеспечения будет сводиться к перетаскиванию компонентов, мне не под силу. Серьезно, вы искренне верите, что это будет так просто?
Пемдас

3
@Pemdas: человеческий страх перед прогрессом и / или изменением. Паровоз 150 лет назад воспринимался как зло.

4
@pierre Я не уверен, что понимаю, куда ты идешь с этим.
Пемдас

3
Дейкстра, это ты?
10

Ответы:


6

Я думаю, что вы задали очень острый вопрос.

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

Технология для выполнения задачи меняется, но задача все еще должна быть завершена: автомобили все еще должны быть изготовлены / собраны, прежде чем их можно будет водить; код / ​​бизнес-логика все еще должны быть собраны вместе, чтобы приложение работало.

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

Может быть несоответствие между навыками работников и интересами работодателя, но ненадолго, особенно если работодатель подкован. Поэтому в интересах как работодателя, так и работника преследовать то, что им выгодно. Но одно неизбежно будет впереди другого. Надеюсь, это вы (-:

С наилучшими пожеланиями,

KM


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

@ q303: всегда будет множество приложений, которые будут использовать всю доступную мощность компьютера.
Дэвид Торнли

58

К трендам, о которых вы упомянули, я бы добавил еще одну, которая объясняет их ИМХО

Программистов гораздо больше (нужно), чем когда-либо.

Количество задач, которые требуют или включают программирование, постоянно увеличивается, и даже с большей скоростью, чем число программистов. В настоящее время в среднем автомобиле есть несколько микрочипов. Через 5 лет в вашем холодильнике и тостере может появиться чип. Через 10 лет ваше нижнее белье? ... И кто-то должен произвести все это программное обеспечение, чтобы заставить их работать. Поэтому прилагаются все возможные усилия для автоматизации всего, что может быть автоматизировано, и для повышения «производительности» (как бы она ни была определена). И все больше и больше свежих мозгов набирается.

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

Позвольте мне сыграть адвоката дьявола против ваших пунктов выше:

Не тратить время на внедрение лучших практик

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

Максимально используя чужой код (пользовательский код как обязательство)

В отличие от чего? Изобретая колесо? Или используя чужой код, чтобы избежать этого?

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

Использование языков более высокого уровня для повышения производительности

В отличие от кодирования всего в сборке? ;-)

«Инструменты» разработки на основе графического интерфейса, которые значительно упрощают «программирование» и не требуют, чтобы люди понимали, как работает код.

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

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

  • общий объем кода и
  • шансы посторонних когда-либо видеть такой код

было намного намного меньше.

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


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

6
+1 Если только хорошие программисты переписывают все с нуля, то я с радостью стану дрянным программистом.
AndrewKS

1
Я не хочу чипсы в моем нижнем белье, если время работы не приемлемо!

@ Thorbjørn: что приемлемое время работы для нижнего белья? Если бы это было самоочищение, то я бы беспокоился о времени работы ... иначе ты все равно должен снимать их каждый день (надеюсь!)
Дин Хардинг,

1
@ back2dos, я не считаю это разногласием. Жирная линия обозначает тенденцию или взгляды компаний / менеджеров, если хотите; Вы заявляете мнение разработчиков. Я полностью согласен с вами, что было бы идеально иметь лучших программистов, больше практического образования, наставничества, чтобы поднять уровень качества в отрасли. Однако печальная реальность другая. Программное обеспечение стало товаром, поэтому многие люди рассчитывают получить его быстро и дешево, не понимая последствий таких решений (таких как краткосрочные или долгосрочные затраты и т. Д.).
Петер Тёрёк

29

Вы правильно суммируете ситуацию, но совершенно неверно истолковываете смысл.

По мере того, как программное обеспечение становится все более мощным, с ним масштабируются задачи. Так что, в настоящее время, возможно, нет необходимости быть программистом базы данных, чтобы создать базу данных телефонных контактов, когда вы можете использовать Access. И, возможно, нет необходимости быть веб-программистом, чтобы создать блог, когда вы можете просто перейти на WordPress. Но, хотя 15 лет назад для выполнения этих задач было бы необходимо быть программистом, то, что сейчас делают программисты, на несколько порядков больше, чем можно было бы сделать 15 лет назад.

Позвольте мне сказать, что через 100 лет будет просто настроить такую ​​сложную систему, как Facebook или Google. Я не говорю об их веб-страницах, я имею в виду их центры обработки данных. Любой сможет это сделать. Он будет встроен в телефоны, при условии, что мы их еще используем. НО, все еще будут программисты, и хотя они могут не работать над такими «тривиальными» системами через 100 лет, они будут работать над системами, настолько более сложными и изощренными, что никто здесь не сможет даже понять их масштабы и масштаб. И эти системы, как и те, что сейчас, будут недоступны для среднего офисного работника, потому что некоторые люди, называемые программистами, предпочтут специализироваться на продвижении технологий той эпохи до крайностей.


Интересная точка зрения ...
q303

10
Я бы хотел, чтобы GrandmasterB написал немного научной фантастики.
ocodo

5
Не могу дождаться, чтобы иметь свой собственный центр данных Google на моем телефоне.
Мартин Йорк,

3
@Slomojo Не такая фантастика, как вы думаете. Когда я был ребенком в 3-м классе, я посетил компьютерную демонстрацию в колледже возле моего дома. Это была экспериментальная витрина для публики. Одной из представленных программ была игра в крестики-нолики. В то время считалось, что можно играть в игру против компьютера. Это было в конце 60-х годов. Какими будут моменты "ой и ай" через 100 лет?
Билл

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

18

Я читал такие вещи уже сорок лет, и я не был в начале предсказаний. Это еще не произошло.

COBOL был оригинальным инструментом разработки, предназначенным для устранения необходимости в бизнес-программистах, и был языком более высокого уровня, чем ассемблер. Библиотеки кода (чтобы не писать собственный код) имеют аналогичную древность.

Время от времени появляется что-то, что позволяет непрограммистам делать что-то более похожее на программирование. Это были «языки четвертого поколения» 1980-х годов, такие необычные электронные таблицы, как Excel, генераторы отчетов и тому подобное. То, что они сделали в случае успеха, это то, что они избавились от программирования и позволили программистам делать другие, более интересные вещи.

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

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


7
+1 - «взять неточную спецификацию и превратить ее во что-то точное и полезное».
ocodo

+1, я не был в этой игре так же долго, как и вы, но определенно я слышал то же самое, что и этот вопрос, который был задан и переформулирован уже 20 лет.
Carson63000

+1 за 4gl я пришел сказать именно это. Все, что обещают, так мало доставки :)
Ян

«Эта модель не будет длиться вечно» - почему бы и нет?
Ян Уорбертон,

3

Программисты на ассемблере и фортране, вероятно, говорили то же самое, когда в дело входили структурированное программирование и широко распространенные интерпретаторы.

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

Для рендеринга фильмов Pixar требуется больше времени, чем когда-либо прежде. Несмотря на огромное увеличение скорости вычислений, наряду с этим, аниматоры требовали все возрастающей сложности и детализации в своих сценах. Анимация калибра Toy Story неприемлема в 2010 году, как это было в 1995 году. По мере того, как их инструменты развивались, их возможности и, соответственно, ожидания.

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


3

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

Да, так и должно быть

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

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

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

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


1

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


1

Независимо от того, что вы можете автоматизировать или снять с полки, большинство упакованного программного обеспечения делятся на две категории:

  1. Он прост в использовании, но не совсем соответствует потребностям бизнеса.
  2. Это очень настраиваемый, но требуется специалист, чтобы понять и использовать настройки

Наверное, я забыл третий. Это стандартное программное обеспечение для повышения производительности (электронная почта, браузер, Word Pro и т. Д. Программное обеспечение в категории 1 приводит к тому, что компании нанимают разработчиков программного обеспечения для настройки готового программного обеспечения (если это возможно). Программное обеспечение категории 2, хорошо с тем же успехом они могут нанять разработчика, потому что человек, который знает, что настраиваемая система внутри и снаружи, либо пользуется большим спросом (например, SAP, PeopleSoft и т. д.), либо умирает (подумайте о любой системе, похожей на SAP и PeopleSoft, которая не совсем имеют одинаковое проникновение на рынок).

Всегда будет необходимость для разработчиков. Что я вижу, так это то, что большая часть того, что раньше было ручной, утомительной, повторяющейся работой, стала автоматизированной (например, написание кода для доступа к данным вручную, а не с использованием O / RM). Это позволяет разработчикам приносить больше пользы бизнесу с меньшими усилиями.


1

Я не принимаю ваши аргументы:

  1. Не тратить время на внедрение лучших практик

Кроме этого.

  1. Максимально используя чужой код (пользовательский код как обязательство)

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

  1. Использование языков более высокого уровня для повышения производительности

Производительность неплохая сама по себе - не так ли?

  1. «Инструменты» разработки на основе графического интерфейса, которые значительно упрощают «программирование» и не требуют, чтобы люди понимали, как работает код.

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

(Числа здесь автоматически пересчитываются неправильно. :))


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

Все зависит от ваших требований. Когда мне не нужна тонко настроенная специальная техника сортировки для специально распределенных данных, я могу отлично использовать библиотеки с некоторым алгоритмом быстрой сортировки. Почему я должен выучить это прежде, чем оно мне понадобится? Может быть, мне нужно время, чтобы узнать что-то еще - шрифт, доступ к базе данных, GUI-дизайн ... - вы называете это. Навыки приятно иметь, но у тебя слишком много умений. Иногда правильно сказать: ЯГНИ.
пользователь неизвестен

1

Визуальное программирование не менее актуально или заслуживает презрения, чем текстовое программирование.

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

Если у вас есть возможность попробовать Labview, вы можете увидеть потенциал (или даже специализированный вариант в среде Lego NXT). Хотя не без недостатков или недостатков, есть наследственные преимущества. Видеть значит верить.


0

Практика программирования не только повышает производительность и снижает затраты на определенные типы разработки (ваша гонка на дно), но и увеличивает возможности приложений и ожидания клиентов (таким образом, поощряя гонку на вершину). Обратите внимание на бонусы, которые Goole и Facebook платят, чтобы получить лучших технологов.


0

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

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


-2

Если мы возьмем практику:

  • Не тратить время на внедрение лучших практик
  • Максимально используя чужой код (пользовательский код как обязательство)

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

Если мы возьмем практику:

  • Не тратить время на внедрение лучших практик
  • Не использовать чужой код в максимально возможной степени (пользовательский код в качестве обязательства)


1
@NoahRoberts: ваша правка изменяет значение второй маркированной точки. Это также не является подходящим ответом на вопрос и должно было стать комментарием.
Адам Лир

@ Анна - это не было редактированием, конечно. Вот почему это не выглядит как изменения исходного вопроса. Это ответ, потому что он касается ошибочной предпосылки в вопросе.
Эдвард Стрендж

Какова предпосылка?
q303

3
@NoahRoberts: Это немного странно сформулировано, но я считаю , что список соответствует своему значению - Q303 принимает « с помощью других людей существующего кода вместо написания кода в доме» в качестве опорной точки в его аргументации.
Адам Лир

@ q303 - Очевидно, что использование кода других людей - это плохая практика. Это то, что я бы вычеркнул из вашего списка в любом случае.
Эдвард Стрендж,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.