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

Инженер-программист против разработчика против программиста

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

Важность отладки

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

Качество программного обеспечения

Качество программного обеспечения можно измерить долговечностью и стоимостью использования и обслуживания части программного обеспечения. Это подразумевает хорошо поддерживаемый, документированный, протестированный и легко отлаживаемый код. Гениальный код бесполезен, если только вы не пишете какой-то новый алгоритм, о котором никогда раньше не думали (очень маловероятно). Примечание. Многие разработчики в отрасли сбиты с толку или разочарованы из-за того, что они считают отсутствием возможностей. В основном они хотят, чтобы кто-то сказал им…

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

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

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

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

Любая инновация включает в себя и творчество. Это скорее базовая предпосылка интеллекта. Тем не менее, в любой науке, инженерии или даже программировании каждый понимает, что истинная гениальность — это итеративный процесс над частью работы, а не только над набором навыков человека. (Хм!)

Хорошо, давайте предположим, что вы мастер-программист или хакер. С точки зрения мастерства вы довольно много сделали. Однако даже в этом случае; когда вы работаете над своим шедевром, ваше видение того, что должно быть, может меняться с каждой итерацией, чего вы не предвидели, когда начинали. Даже проекты высокого уровня претерпевают некоторые изменения (признай, сука!). Другими словами, процесс более эволюционный. Эволюция — это последовательность испытаний и невзгод, которые выходят за рамки воображения и сталкиваются с реальными и жесткими ограничениями и обратной связью. Художник, на мой взгляд, отличается в том смысле, что художник более свободен с точки зрения своего выражения, а Искусство — это выражение его неразбавленного воображения или абстрактности, которое не должно подчиняться никаким ограничениям. Программирование является итеративным, независимо от того, насколько вы креативны. В программировании (как и в разработке и программном обеспечении) вы можете достичь совершенства только путем повторения и тестирования. Конечный продукт может быть сродни произведению искусства (да), но на этом сходство заканчивается.

Впрочем, что говорить о музыкантах. Музыканты, которых я узнал, также создают музыку в повторяющемся процессе, их музыка ограничена инструментами, которые они выбирают для использования, и т. д. Таким образом, границы размываются; .. однако, поскольку в программировании (наиболее художественном аспекте программного обеспечения) задействовано больше науки, эволюции, больше логики. Я по-прежнему буду настаивать на том, что… программирование или кодирование — это не искусство. Хотя сам Кодекс в его окончательном виде можно считать «формой искусства». Со временем мастерство программиста улучшается и как будто в подсознание быстрее делает правильный логический выбор, но это просто…ну…. глубокое обучение, а не искусство!

Мера инженера-программиста в опережающие времена

Со временем любая система (не только человек) может научиться программировать. Программисты могут стать лишними в не столь отдаленном будущем. Люди могут указать отправные точки и цели, а остальное может быть эвристическим процессом (ИИ). Способность понимать и видеть конечные точки, их плюсы и минусы — вот в чем ценность опытного профессионала. Способность сократить количество итераций, необходимых для достижения конечной точки, — это то, что сэкономит деньги; и что-то, что ИИ потребуется время, чтобы наверстать упущенное*. Вот где вступает в действие мера и ценность Профессионала.

*Почему ИИ не может этого сделать: системы ИИ зависят от четко определенных начальных параметров и целей. Они также подвержены ловушкам локальных максимумов/минимумов. Решения по кодированию и регрессии для отказа от отрицательного выбора по-прежнему очень сложны и дороги даже с ИИ + автоматизацией в обозримом будущем. Существует также случай ответственности, когда неисправная система ИИ не несет никакой ответственности, а ИИ, который пишет код, только усиливает эту ответственность. Следовательно, я не вижу систем искусственного интеллекта, способных полностью заменить работу хорошегоинженера-программиста!