Дельфиний форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Дельфиний форум » Флейм » Программирование - отстой!


Программирование - отстой!

Сообщений 1 страница 18 из 18

1

...Или что-то вроде того.

Программирование — это не забава. Это нудное и скучное занятие, и, уж конечно, никакой не подвиг. Чего бы вы там с ним не делали, программирование совершенно точно не будет «секси».

Я знаю, что вы думаете. Всех, кто так говорит — и уж тем более пишет такое в блогах — нужно немедленно лишить их программерской лицензии, отобрать у них клавиатуры и навечно посадить за микроЭВМ с CP/M, 8"-ми дискетами и модемом на 1200 бод.

Безусловно, многим из нас, включая меня, нравится писать код. Но должно ли нам это нравиться?
Почему мы пишем код?

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

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

Хотя порой грань между «скучным» и «секси» софтом может размываться, «секси-программы» представляют собой то, чем мы с вами пользуемся регулярно, каждый божий день: SVN, Google Maps, Visual Studio, Firefox и т.п. По сути, нам как программерам редко приходится пользоваться каким-то нудным ПО.

Однако с точки зрения процесса разработки картина диаметрально противоположна. Лишь избранным платят за разработку «секси-программ», в то время как большинство из нас погрязло в программировании скучной рутины.
Основы унылого ПО

Для определения скучного ПО есть специальный термин — «информационные системы». И хотя назначение информационных систем варьируется от компании к компании, равно как и конкретные требования, по большому счёту все они одинаковые. В них есть база данных, которая моделирует реальный мир, правила, определяющие то, как данные могут изменяться, интерфейс для работы с базой и уйма различных отчётов.

Формальный процесс создания этих информационных систем впервые появился ещё в 60-х годах, а с 70-х вообще практически не поменялся (Современный Структурный Анализ на диво всё ещё современен). В сущности, вы анализируете проблему, составляете карту потоков данных, структурируете эти потоки, создаёте базу и пишете программы, которые являются интерфейсом для работы с БД.

Мы перешли от «тонких клиентов» в «зеленоглазых» терминалах к «толстым клиентам» в виде приложений для ПК. Затем мы переметнулись к «тонким клиентам» на вебе, а с платформами наподобие Windows Presentation Foundation и глазом моргнуть не успеем, как снова окажемся рядом с «толстыми клиентами». Как бы там ни было, наши системы продолжают делать одно и то же: запись/чтение данных.

Разработка информационных систем особо не поменялась. Не важно, используете ли вы Visual Basic 3.0 или xHTML, принципы остались практически теми же: база данных должна быть представлена взору пользователя в максимально приятном и дружественном свете. Код, который для этого необходим (и всегда был необходимым), довольно уныл:

    txtFirstName.DisplayWidth = 30;
    txtFirstName.MaxCharLength = 50;
    SetTextBoxValidator(txtFirstName, Validations.LettersOnly);
    txtFirstName.Enabled = securityContext.CanEdit;
    txtFirstName.Value = customerRecord.FirstName;

Эти пять строчек кода, просто устанавливают некоторые свойства UI. Повторите это для каждого поля, каждой сущности, а затем умножьте ещё на 1,5, просто потому, что некоторые поля должны быть доступны из двух разных мест. А теперь добавьте весь код, необходимый для валидации и сохранения данных, полученных из UI. Если математика меня не подводит, в результате мы получаем туеву хучу унылого, скучного кода.
Дилемма разработчика

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

Здесь-то и кроется загвоздка. Как выразился Майкл А. Джексон в своих «Принципах проектирования программ» 1975 года, «Программисты… часто находят спасение в их, в общем-то, понятном, но на деле губительном стремлении к усложнениям и ухищрениям в своей работе. Отстранённые от создания чего-либо большего, чем просто программа, они отвечают тем, что делают эту программу до такой степени замысловатой, чтобы она была достойным вызовом для их профессиональных навыков».

Это наблюдение 35-летней давности изо дня в день находит свои подтверждения здесь, на «The Daily WTF». Самый изощрённый код и истории, опубликованные тут, порождены тягой разработчика к достижению мастерства. Эти стремления никоим образом не являются неким заблуждением или результатом злого умысла, они инстинктивны.

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

    private void attachSupplementalDocuments()
    {
      if (stateCode == "AZ" || stateCode == "TX") {
        //SR008-04X/I are always required in these states
        attachDocument("SR008-04X");
        attachDocument("SR008-04XI");
      }

      if (ledgerAmnt >= 500000) {
        //Ledger of 500K or more requires AUTHLDG-1A
        attachDocument("AUTHLDG-1A");
      }

      if (coInsuredCount >= 5  && orgStatusCode != "CORP") {
        //Non-CORP orgs with 5 or more co-ins require AUTHCNS-1A
        attachDocument("AUTHCNS-1A");
      }
    }

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

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

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

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

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

Каким бы унылым это не казалось, наша работа состоит исключительно в том, чтобы принести прибыль работодателю, а не удовлетворение нам. Вот, что означает быть профессионалом.

Я уверен, что многие адвокаты с горящими глазами уцепятся за первый же захватывающий судебный процесс, но также быстро отступят, если такое решение будет лучшим выходом для клиента. Архитекторы мечтают заполучить возможность а-ля Fallingwater, но если проект требует постройки большого склада с разгрузочными доками — это будет единственным, что они нанесут на чертежи. И если нашему работодателю требуется софт для управления платёжными ваучерами, то он должен получить именно его, а не «систему, основанную на плагинах с масштабируемыми и распознаваемыми в реал-тайме шаблонами UI» или в необходимости чего там ещё мы сами себя убедим.
Переосмысление разработки ПО

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

Всё, начиная от платформы ("А давайте попробуем Руби!"), включая архитектуру ("да тут не может быть только два уровня") и заканчивая техниками, которые непосредственно используются в коде ("нам нужен аспектно-ориентированный фреймворк!") могут быть — а часто так и есть — продиктованы больше желанием изучить новую технологию, нежели реальными нуждами бизнеса. Выберите неверную платформу или изобретите ошибочную технику, и проект неизбежно обречён.

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

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

2. Служите интересам бизнеса. Каждый ремесленник хочет использовать самые последние, великолепные и мощные инструменты, но они редко необходимы для работы. Подобно этому практически никогда невозможно мгновенно обновить платформы/библиотеки/языки. Тот код 10-летней давности, написанный на «классическом ASP», не устарел — его просто не так прикольно сопровождать.

3. Учитесь вне работы. Саморазвитие — это главный принцип любой профессии, но заниматься этим следует «вне работы», то есть не во время разработки информационных систем. Вместо этого учитесь, создавая приложения для себя, вашей команды, или даже для каких-то open source проектов. Пояснение: «Вне работы» не означает, что вы вообще не должны учиться в процессе работы. Обучение важно, но не занимайтесь им в процессе разработки информационных систем для заказчика. Приберегите это для ваших собственных или внутрикомандных проектов.

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

5. От скуки не уйти. Никакие O/R-мапперы или генераторы кода не смогут избавить вас от факта, что записи, поля, валидаторы и т.п. должны быть прописаны вручную, по крайней мере, в двух местах (фронт-энд и бэк-энд). И UI, генерируемая из базы — это также плохо, как база, генерируемая из UI.

6. Ищите удовлетворение повсюду. Если ваш единственный источник получения удовольствия — это написание сложного кода, тогда вам никогда не стать хорошим и довольным разработчиком приложений. Лично я счастлив от мысли, что помог конечному пользователю увеличить его продуктивность и/или открыл новые возможности для какой-то организации.

... и, если ничто не помогает, ...

7. Найдите себе другую работу. Возможно, вы достигли своего максимума на этой работе. Или может вас просто тошнит от такого типа программирования. Как бы там ни было, существует целая масса программерских возможностей, которые не включают в себя скуку и информационные системы. Конечно, конкуренция будет намного выше, поскольку шедевры наподобие «The Brilliant Paula's bean» рождаются только в недрах IT-корпораций.

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

Оригинал: http://thedailywtf.com/Articles/Program … t-To-.aspx
Перевод: 21csm (http://21csm.com)

ВОПРОС
Кто что об этом думает? Мне вот рассылкой с rsdn пришло... имхо пахнет немного бред'ом

2

Lumos написал(а):

Это нудное и скучное занятие...

мб, поэтому я и отказался от поступления на ПОВТ (ИЭИС) после школы...

Отредактировано Cheetah (2009-03-07 13:43:33)

3

хз...мя как-то онтое таковым совершенно не кажется:) Хотя деятельность, связанная с Д была бы гораздо приятнее...

4

Программирование — это не забава. Это нудное и скучное занятие, и, уж конечно, никакой не подвиг. Чего бы вы там с ним не делали, программирование совершенно точно не будет «секси».

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

уж конечно, никакой не подвиг

а с этим категорически не согласен

5

ща соберусь мыслями напишу рецензию про твой ликбез!  :canthearyou:

6

Я соглашусь только с мыслью, что программировать бесит то, что не хочется программировать :) Или то, что уже настолько ******

7

Сорри за долгий запоздалый ответ но тока тока освободился ))
и так по порядку!
Очень интересный обзор  на самом деле!
Ну так вот по поводу програминга и коды и прочей этой "Дряни"
Lumos а кто сказал  что программировать будет так легко? кто?
Пример взять того же Лабораторию Касперского! Ведь создал же этот человек а он на самом деле  заканчивал много чего и бошкавитый человек! и что теперь он имеет на выходе?
Много денег
Живёт за бугром
А тут в России  тех поддержка и этот изгаженный форум  про то что у меня тормозит антивирус  альфа версии бетка и прочие...  Финал конечно я жду с нетерпением!
И что мы имеем? Средненаписанный Антивирус да глючит но не  катастрофически! Жить можно так сказать!
Вообще если уж пошло на то то  программы сейчас Боже упаси пишутся на 3 не больше! Почему я  оцениваю всё это на столь низкий бал? мне  не стоит говорить правильно! Как некоторые успели догадаться это Глюченность П.О ! А всё почему? всё потому что давай быстрее пиши ну что ты так долго  надо  бетку уже выкладыватьа  вы тут всё не как не скомпилируете код... это пример  по моей работе сказали написать прогу простенькую правда ну написал правдо на Дельфях шефу не понравилось ему видители подавай С++ Хех я такого на 1 .к не  проходил мнея обучили Дельфя Юзать а ему  видители С ишь какой!Губу раскотал!
Ну так вот к чему всё я это к тому что сейчас выпускают что попало и ради Денег (Баблоса)  а раньше ведъ согласитесь п.о  может и было но оно было качествнное.
А сейчас что имеем на выходе? Имеем следующее
Пример есть Виста  да выпустили её в продажу всё гуд  ну установили   дальше больше- это кривость  багость   О.С и.т.д и что же делаем Мелкософт? (терпеть его не могу !)  выпускаем очередные апдейты!
Да блин выпутили  Обновили и что на выходе? правильно BSOD-ы охх как же они мне нервишок потрепали!Почему я всё это говорю да потому что сейчас офф не выпускается сервак под 2003 виндовс щас Тока 2008 а это хуже 2003  его!
2003 был простенький понятный  годами работающий!  не верите? я как Админ могу  полно скринов привести у моих клиентов!
а щас 2008 это та ещё (_._)
  чтобы понять как она работает а интерфейс там Вистовский надо прочитать книженцию да чего там читать вы скажете 1000 с  хреном страниц  дык так ещё надо понять как она работает
И вот обновляем эту 2008  требует перезагрузку перезагружаем дальше больше! после ребута система падает сервак вешается ни  безопасный режим ничё не помогает  как быть?
Всё можно вешаться спокойно ! поднимать Домен  почту Эксчендж 2007 а он падло заточен под Линукс т.е   всё из коммандной строки- курсы пройди вникни в то и.т.д
Дальше больше благо есть такое понятие как Бэкапы мы смело поднимаем всё это  как в том анекдоте из баша(с)
Есть Админы которые не делают Бэкапы и  которые уже делают бэкапы ))
1 С подними настрой я два дня провозился не емший тока кофиёк и шоколадка по бытрому купленная по дороге на работу. и то смог  кое как но поднять канторка так на 50 чел. сервера упс все дела... ужас короче!!!
К чему всё это вышемною написанное да Крик души это всё!
Я и так  уже устал по всякой фигне  нас трогают мо Мышка  не работает  ну позвонили ну проконсультировал ну  **** твою *** переткни ты разъём  - не может придётся отрывать 5 тую точку от крсесла и ехать по пустяковой проьблеме- бехгалтерша мол не может дотянуться... ппц в общем!
Теперь немного от себя напишу чуть не по теме но всё же- программ пишется очень много! ну очень что времени нету их  фиксить  юзать и.т.п 
Вообще меня конкретно бесит 1 С 7.7 ничего так а вот 8.1 и выше вообще бяка помню  на работе весь день в 1 с ку по VPN+RDP зайти не мог почему? да потому что  база данных полетела  к чёртовой бабушке начали наши программеры разбирать в  чём дело оказалось криво обновилось... дальше больше ... кое как восстановили и откатили  обратно   на более позднюю версию - заработало!
Ну так вот закономерность такая интересная  то  что стоит у  клиентов то  и у нас  ну там сервера 1 с  консультант  БАНК КЛИЕНТ СБЕРБАНК И ПРОЧИЕ... про сбер напишу чуть погодя мыслей очень много пытаюсь всё уложить...
И так  падает  сеть не работает  1 С  сеть есть 1 с обнавляется базы РФО и прочие обновилось требует ребут  ребутаем  синий экран "красота"   :angry:
В общем сначала падает у нас потом у  них или наоборот   50%  именно стока    отделяется вирусам  они тоже активно учавствуют в падение  рабочих станций и серверов...
далее   вирусы эти   на столько умные пошли что отследить их реально бывает турдно да есть всякие там Доктор вебы и прочие куреты ит эт программы  ну они частично помогают  порой приходится лезть в   реест и там копаться  кошмар!
А вобще ели у бух-шы стоит Наш Клиент банк  Сбербанк и + ещё 5 филиалов банка на разные   названия так после падения  кроме локальной базы нужно установить все эти сберы 1 с настроить сеть  и прочие  это тот ещё гомор! я сталкивался с этим! убил 2 дня! почему? дык,потому что как обычно ключи теряют сертификаты и прочие -  лезешь на офф сайт а там мануальчег так на 120 страниц и это всё как установить программу ужасс!!! не верите?  в аську вышлю я вам этот мануал !  Я ВООБЩЕ   поражаюсь  так пишут программу  что сами  не понимают как оно это так работает!  Это пример и разговор с тех поддержкой Люблинского филиала Сбербанк Москвы...

ТЕПЕРЬ  по пункту 7.
Да  я уже нахожусь на этой точке  кипения! НО БЛАГО щас сессия  хоть немного но отдыхаю !
С Другой стороны есть + компы я  знаюс  9 лет  программы сеть  защита и .т.д
И что я могу сказать мне это ох как  помогает   жизни!И я хоть скверно   но говорю шефу спасибо за тот опыт который он мне дал за 3.5 года! а он немалый!+в трудовой это отражается! Тут глядишь  уже   на носу диплом  если получится пойду дальше на Компьютерную безопасность при правительстве Р.Ф есть  связи...
Вот вроде  бы и всё...
ах да!  ЛЮМОС СПРОСИ У Флипера  что такое С++ и как пишутся нынче программы! он те всё расскажет .
Вот всё рассказал немного! На пунктуацию не обращайте внимание не до неё сейчас...
Ё  моё время 5 час... надо идти спать иначе не встану!
Все удачи! и помните Не вами должна руководить судъба а вы ею! И  как вы будете относиться к ближним так и они к вам...
охх ё чёт меня не в  ту сторону повело))

Всем удачи я  спать!

8

Чуть не  забыл вот в  шопе  накалякал пару Бсодов ))) оххх стало немного легче  :D
Типа я за работой ))

http://keep4u.ru/imgs/s/2009/03/25/01/01b85ede89dc9532ff.jpg
Увеличить

http://keep4u.ru/imgs/s/2009/03/25/5e/5ef77a0105a1cbbeff.jpg
Увеличить

http://keep4u.ru/imgs/s/2009/03/25/53/534e4d7548160af09d.jpg
Увеличить

http://keep4u.ru/imgs/s/2009/03/25/4f/4fda0a3a08465b32d9.jpg
Увеличить

http://keep4u.ru/imgs/s/2009/03/25/b5/b52bfed1e644cc9de3.jpg
Увеличить

пару Бсодов над которыми мы ****ся каждый деть точнее через раз    :x

На шефа похож когда он в  ярости   :tired:
http://keep4u.ru/imgs/s/2009/03/25/4d/4d2ce66c27a8216fcd.jpg
Увеличить

БОЛЕЕ ОПЫТНЫЙ КЛИЕНТ КОТОРЫЙ понимает что дело Труба  :canthearyou:

http://keep4u.ru/imgs/s/2009/03/25/cb/cb5f9ac4219ed60cbc.jpg
Увеличить

Страх когда не можешь определить проблему  и всё это вводитв  ступор простой пример =((

http://keep4u.ru/imgs/s/2009/03/25/4b/4b9634a36fd0d632a6.jpg
Увеличить

FATAL ERROР

И тут на помощъ приходим мы   :surprise:
смайлик  в тему  приедет или нет))

http://keep4u.ru/imgs/s/2009/03/25/5d/5d21f606b4558acc04.jpg

Увеличить

вcё  а  теперь точно ущёл спать http://pic.ipicture.ru/uploads/090325/gSR6BhO4LB.gif

Отредактировано {{{AqUa_MaN}}} (2009-03-25 04:28:55)

9

Картинки такого стиля...90-х наверно:)

10

Lumos написал(а):

Картинки такого стиля...90-х наверно:)

угу плазменных  экранов и мизерных этих как там  процессоров)) нету ))

11

{{{AqUa_MaN}}} написал(а):

мизерных этих как там

Ухаххахахах

12

Да я с Флипом постоянно на эти темы разговариваю : )

13

http://imgs.xkcd.com/comics/bored_with_the_internet.jpg

14

Re: картинки.

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

15

Картинка в чем-то отражает две мысли. Твою и мою. Мою - что для меня все соц. сети эта пустая трата во времени в основном. Сейчас я рассматриваю интернет чисто с финансовой точки зрения. Ну и портал дельфиний надо бы доделать.

16

Lumos: зря ты эту тему начал, если бы не программирование и не программисты ты бы сейчас не сидел бы на этом форуме и не писал бы сообщение. Зачем выражать презрение к этому замечательному труду? не нравится - не программируй

17

Дельфин Экко, а кто презрение т выражает? Тему читал?

18

Не все программисты одинаково бесполезны!

Вот этот человек например, Трэвор Викс (Trevor Weeks), оказывается уже давно помогает диким* животным, как своими собственными руками, так и  оплатой врачей, организацией людей вокруг, без преувеличения "на всех  фронтах". Я про эту, сухопутную, часть его пути и не знал...

http://www.wildlifeambulance.org/news/2 … ct-09.html

*диким в смысле живущим в природе. Причём не только животным-млекопитающим, но и птицам. Такие программисты Змеле нужны!


Вы здесь » Дельфиний форум » Флейм » Программирование - отстой!