Здравствуйте, дражайший читатель.
Вот, наконец-то добрался и до сайта. Знаете ли, решил осветить кое-какую проблему, нет, пожалуй, даже проблемищу, возникшую в отрасли разработки ПО — вот только не знаю когда возникшую, наверное тогда, когда языки программирования и средства разработки выбрались из застенков лабораторий. Выбрались, и попали в руки к неквалифицированным кадрам. Попав в эти, пока до конца не распрямлённые образованием и, что главнее, опытом, руки — они, языки, начали плодить ужасных уродин :) А пользователи — волей-неволей расхлёбывают плоды функционирования этих программ-франкенштейнов. Да, речь пойдёт о разработке ПО, и, в частности, для веба. Вообще, для начала — а что такое программное обеспечение, в понимании пользователя? Что разрабатывают разработчики, дизайнят дизайнеры, и юзибилитствуют юзабилисты, а потом рекламят рекламщики и анализируют маркетологи? В моём понимании, как программиста-пользователя, ПО, это средство достижения поставленных целей быстрее и удобнее, чем делать те же операции вручную. Вот, скажем, раньше — художнику, чтобы нарисовать картину, надо было брать кисти, холст (а ещё пигменты, основу типа льняного масла, скипидар или иной растворитель, кучу лаков, грунтовок, и иных ухищрений), и нарисовав несколько набросков, по ним уже — рисовать картину. Сейчас эту проблему решает, частично, фотошоп и графический планшет, подключенный к компьютеру. Т.е. фактически произошла замена инструментария, при сохранении конечной цели — готового изображения.
Аналогично с программами в вебе — раньше, чтобы почитать новости — надо было выйти на улицу и купить газету. Чтобы купить, скажем, кофеварку, надо было ходить по магазинам и выбирать, чтобы оплатить счёт по квартплате — выйти из дома, отстоять очередь в сберкассу, и потом отдать деньги девушке, сидящей в окошке приёма платежей, а чтобы купить билет на самолёт… Ну, в общем, вы понимаете. Теперь есть лента.ру, яндекс.маркет, и куча платёжных систем. Продавцу, чтобы продать товар, не надо ежедневно выходить с лотком на улицу, и там стоять в дождь и мороз (ха ха, а представьте если это ещё и одновременно?!), чтобы поймать покупателя. Достаточно грамотно открыть интернет-магазин, и дать его рекламу, опять же в интернете. И, кстати говоря, люди торгующие чем-то, это оценили и поняли. Сейчас в сети достаточно много интернет-магазинов, в которых есть всё, что душа пожелает: «В этой маленькой корзинке — что угодно для души…». Вы кликаете пару кнопок на сайте, и, обычно в течении 24 часов для Москвы, к вам едет добрый курьер-узбек, который везёт вашу покупку. Вы получаете товар, отдаёте деньги, и все счастливы (по крайней мере я уже несколько лет делаю покупки бытовой техники именно таким способом). Хорошо? Идиллия? Как бы не так!
Нет, в настоящее время стало довольно много качественных интернет-магазинов, информационных ресурсов, и прочего. Однако, время от времени мы встречаем просто жуткие примеры интернет-сайтов (и не менее жуткие примеры цен, по которым их сделали — в смысле маленькие). Да, да, дорогие мои. Иной раз вёрстка — плывёт, картинки товара/дизайна сайта — такие, что лучше бы их вовсе не было, тексты — переоптимизированы под SEO (типа жёсткие диски жёсткие, купить диски, купить HDD, наши диски жёсткие самые, самые лучшие диски, диски, терабайт, 1,5 терабайта, терабайты, SATA IDE SCSI, никакие другие жёсткие диски не пережестят наши жёсткие диски купить которые вы можете…», и так далее. А уж вывод глюков PHP в общий поток (равно как и само их наличие) — производит тягостное впечатление. Спасибо Яндекс.Маркету, что он такие сайты не принимает в каталог, этим и спасаемся… А владелец ресурса — продавец, т.е., страдает от того, что у него кривая админка, и он не может в ней эффективно работать — всё наперекосяк, без логической структуры, глючное и неудобное. Почему так?
Для того, чтобы ответить на этот вопрос, стоит сделать небольшой экскурс в рынок веб-разработки. Как вообще создаются многие сайты, что для этого требуется, и кто этим обладает? Формально (ещё раз подчеркну — только формально) требуется человек, который знает PHP/HTML/CSS/JS, умеет работать с различными БД, и так далее… Плюс дизайнер, если надо. Так вот, фишка в том, что набор средств для «веб-разработки» — он очень легкодоступен. На начальном этапе это PHP IDE — типа NuSphere PHP Editor — и какая-нибудь программа для вёрстки — типа Adobe Dreamveawer (не будем строить иллюзий насчёт барьеров дороговизны этого ПО в рамках этой страны). И вот,
Вообще, давно выведено эмпирическое правило: «Дёшево — качественно — быстро» — и никогда не бывает всех трёх сразу, только какие-то два. Скажем, дешево и быстро — но говно, быстро и качественно — но дорого. Дешево и качественно — долго… Короче вот так. А всё почему, не задумывались? У квалифицированного разработчика, который имеет за плечами хотя бы 5 лет работы, для начала существует его привычная рабочая среда, которой он умеет хорошо пользоваться — обкатанная. Например у меня такой средой являются уже упомянутый NuSphere PHP Editor + отладчик, Denwer либо своя собственная серверная сборка (которая делается очень просто, но по характеристикам — куда лучше денвера, обычно, потому как делается под себя, свои нужды), обязательно редактор SQL запросов (ибо работаю чаще всего с MySQL, то таковым является MySQL Workbench). Кроме того, это Adobe Dreamveawer для вёрстки макета (которую я вообще говоря не делаю, но иногда — редко, крайне, исключительно — приходится), и Firefox с кучей плагинов, самые важные из которых это Firebug и HTTP Headers Viewer, ну и HTML валидатор. Плюс навыки разработки, знание подводных камней и маяков (5 лет это не только приобретение навыков в использовании всяких IDE, чтобы красиво тыкать по кнопкам перед заказчиком). Это подразумевает качественный продукт на выходе, который стоит дороже, чем написанный студентом — ну, раз в 10 как минимум, и то, при куче условий. Плюс мы привередливы достаточно к техзаданию, наличию материалов (например товарных позиций для магазина), и прочее, прочее. И вообще, не стоит строить иллюзий, что если вы платите 50 к хорошему программисту — он вам напишет с нуля потрясный сайт. Сайт с нуля, со своей системой управления, и прочим — стоит от 500 000 рублей, и лишних «опечатных» ноликов в указанной цифре нет. Причем разрабатывается такой ресурс не одним человеком, и не только программистами — нужны хотя бы пара программистов, дизайнер, верстальщик… Короче только на пару месяцев их работы уйдёт энная сумма. + Некоторый Профит. Если дешевле — стоит уже задуматься, как правило дело будет нечисто. Да и вообще… Рабочая среда программиста требует довольно неслабого железа (я уж молчу о её стоимости в лицензионном софтоисчислении). Нет, есть конечно извращенцы, которые оптимизируют среду выполнения — у операционки там что-то отключают «лишнее»… Но это просто значит, что у них нет денег (читай заказов или иных источников выделяющих «свободные деньги») на новое железо. Стоит ли связываться? А ведь связываются заказчики, обычно по неопытности…
С одной стороны я прекрасно понимаю человека, который открывает очередной стартап, у которого есть некоторый капитал, и ему хочется минимальных издержек. 20 000 рублей выглядит очень привлекательно. Также понимаю студентов: «а, хер с ним, что нет опыта — вот как раз будет, да и деньжат сколько-нибудь срублю». А страдаем в результате мы — посетители таких недоресурсов. И предприниматель потом, как ни странно, страдает — когда производится рефакторинг системы (т.е. улучшение, переделка) — в ресурс вкладываются куда как более серьёзные суммы, исчисляемые уже сотнями тысяч рублей (ибо все мы помним, что исправлять чужое куда как длительнее и сложнее, нежели своё писать). Ведь у вас там уже хранится и клиентская база, и логи заказов, и прочее, прочее… Приходящий в голову вариант найти себе разработчика, который всё это будет делать — стоит сразу же отбросить. Штат сотрудников, способных 1. создать дизайн, 2. создать ресурс, 3. провести рекламно-оптимизационные мероприятия — не по плечу стартапу, это 5-6 человек, каждый с зарплатой за 60 килорублей/мес. А нанимать «кухонный комбайн» — когда и чтец и жнец и на дуде игрец за 40 тысяч — это извините глупость и идиотизм — получите эникейщика, читай — того же студента, с результирующим продуктом сходного качества.
В общем, дилемка… А как её решать? Да так, чтобы и по кошельку било не сильно, и продукт качественный получить? Об этом я непременно напишу позже, а пока — хочу выразить основную мысль данной статьи — не надо подпускать студентов и школьников к разработке софта. Нет, бывают уникумы, способные написать чистый, рабочий код [1] и на третьем курсе… Но таких единицы, скажем я писал ту ещё херню, которую сам не мог потом разобрать — обычно это были либо лабораторные, либо «для себя»… Правда мне хватало ума не выкладывать это на всеобщее обозрение. Причем не подпускать должны не кто-нибудь, а заказчики услуг. Это всё равно как студента с юрфака отправить самостоятельно вести процесс в суде. Или второкурсника мед. ВУЗа отправить в операционную, самостоятельно делать аортокоронарное шунтирование. И дело тут даже не в том, что это какая-то там конкуренция: ну какую конкуренцию может составить студент второго курса практикующему хирургу? Просто мне уже исключительно надоело, когда подбрасывают код, который надо либо поправить, либо ещё что с ним сделать… А там просто КАША. Да и интернет-ресурсы такие — уважения не вызывают, и априори вызывать не могут… Равно как и прикладной софт, и прочее, прочее, прочее…
1. Кстати, умиляет требование в разных вакансиях: «Умение разбираться в чужом коде»… Граждане работодатели! Вы хоть понимаете, что для пресловутого «разбирательства» код, в котором «разбираемся» — должен быть читабелен? Если у вас этот код писал какой-нибудь прыщавый восемнадцатилетний мальчик, только что окончивший школу и поступивший в институт — в нём он сам не разберётся через месяц. Чтобы «разбираться» — надо, чтобы предмет разбирательства был написан руками, растущими из плечей, а не ногами, носом, или путём стучания пэнисом об клавиатуру.