Python

Так, всем спокойно. Это не очередной диспут на тему что лучше PHP, Java или ваш любимый язык. Я хочу поговорить о корпоративных технологиях, например Java Enterprise, и о том, как они могут похоронить ваш интернет-стартап или малый/средний веб-бизнес. Более того, речь идет о серьёзных технология вроде PHP (или Ruby, Python, Perl и т.д.), которые могут спасти его и поднять на новый уровень. Я мог бы взять любые два языка или технологии. Я попросту выбрал два самых-самых, чтобы донести суть, и немного потроллить вас.

Это не технический отчёт для технических специалистов, а комментарии о бизнес-деятельности (для не технических специалистов), о том, что нужно молодому, малому/среднему веб-бизнесу и что в конце концов может его погубить.

Все что нужно малому веб-бизнесу, неважно, насколько большим вы его представляете, так это LAMP. Для тех, кто не в курсе LAMP — это акроним, который определяет операционную систему, веб-сервер, базу данных и язык программирования. В этом случае Linux, Apache, MySQL, и PHP. Допустим вы основатель бизнеса или старший руководитель (не технического отдела), и вы полагаетесь на советы других, касательно технологий. Тогда, вероятно о LAMP (особенно о PHP и MySQL) вы слышали следующее: это не совсем современно, не достаточно хорошо, “слишком просто” и вы не получите той производительности, которую ожидаете. Это полный бред. Факты:

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

Проектирование! Архитектура и проектирование системы куда важнее чем выбор языка или чего-либо еще. Бесполезно выбирать «правильный» язык или технологию если у вас плохо спроектированная система. Java — компилируемый язык (от части) и как таковой быстрей чем PHP. Но на практике, в вебе, PHP быстрее (как правило). Потому что PHP создан для веб. Фреймворки PHP спроектированы для корпоративных веб решений. Корпоративное решение — это прежде всего архитектура, а не технологии и языки. Когда кто-то навязывает вам язык (например Java), без полной оценки и обсуждения архитектуры — это похоже на покупку дома, которого вы никогда не видели, только потому что его строили с помощью самого лучшего молотка (или кувалды, в случае с Java EE).

Язык — это инструмент. Инструмент вы выбираете для работы. А архитектуру и проект для своей конечной цели. Язык — это инструмент. Вот и всё. Говорить, что язык не корпоративный всё равно что сказать: «молотком нельзя строить небоскрёб, потому что им строят дома». Я слышал немало заблуждений в духе MBA (степень магистра в менеджменте) вроде: «PHP годится разве что для семейного бизнеса». Нет. Слабый проект сгодится для семейного бизнеса. PHP отлично работает в умелых руках того кто знает как проектировать корпоративные решения. У PHP нет ограничений, которые препятствуют этому, а в случае с веб —  у PHP есть много преимуществ перед другими языками.

Если вы сосредоточитесь на инструментах, вместо архитектуры — это закончится тем, что вы будете забивать гвозди тараном (Java), когда молоток (PHP) был бы более уместным. Также, вы быстро потеряете деньги, инвестируя в инструменты и персонал, которые не нужны. Если вы хотите построить небоскреб, то проектируйте небоскреб. Сильные корпоративные решения зависят от хорошей архитектуры и проектирования, а не конкретного языка.

Будьте проще. Что бы вывести бизнес идею на рынок, вам нужно простое, быстрое и недорогое решение, которое будет работать сейчас и масштабироваться позже. Лишнее может навредить и привести к плачевным результатам. Если у вас не будет сайта размером с Amazon буквально в тот момент, когда вы только начинаете, то лучшим решением будет сильная архитектура и PHP (или аналог) в среде LAMP, а не чудовищное раздутое решение Java Enterprise.

Учитывайте масштабируемость, но масштабируйте позже. Не слушайте, если вам советуют сразу начать использовать инструменты, которые понадобятся, когда вы дорастете до масштабов Amazon или Facebook (оба кстати широко используют PHP и похожие языки). Что вам нужно сейчас, так это хорошее проектирование, простота и недорогие инструменты. Если вы все сделаете правильно при проектировании, то легко масштабируетесь позже. Facebook запускали на PHP, и он до сих пор его использует, и похоже, что всё превосходно масштабируется. Wikipedia тоже на PHP, и с этим у них тоже все в порядке.

Необходимые действия для учредителей и предпринимателей, без технических навыков, запускающих веб-бизнес…

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

Не переусердствуйте с технологиями. Я видел так много проблем в компаниях и проектах, которые начинали с командой Java Enterprise программистов, потому что кто-то «продал» им скорость Java и корпоративные возможности вместо того, чтобы уделить внимание реальной оценке ваших потребностей и ресурсов. В один местный стартап (я с ними общался) привлекли 14 Java программистов и персонал поддержки, чтобы запустить компанию. Они были уверены, чтобы конкурировать в корпоративной среде, им нужен Java. Команда такого размера обходится примерно в 2 миллиона долларов в год в США. У них не было такого бюджета, поэтому специалистов наняли в Индии всего за $100k в год (проигнорировав мой совет). Короче говоря, эта катастрофа длилась пять лет и стоила компании миллионы, а в итоге они получили раздутый, устаревший, бардак «корпоративного уровня». Ещё хуже, когда всё уже случилось, знаете какой новый (правильный) язык они выбрали для своего приложения? Python. Они так и не оправились. То, что им было нужно, можно было сделать с двумя хорошими LAMP (P значит Python в этом случае) разработчиками и одним сильным ведущим разработчиком/архитектором. Команда за $300k в год, которая смогла бы быстро вывести их продукт на рынок, так они смогли бы адаптироваться и развиваться.

Отбирайте технических специалистов тщательно. Нет ничего важнее этого. За 20 лет работы в разработке ПО, я встречал гениальных программистов и бездарных. Они сидят рядом, работают над одним проектом, за одни и те же деньги. И ни один менеджер (без технической подготовки) не видит между ними разницы. Правда, и технические менеджеры тоже иногда не видят. Я встречал очень плохих программистов, которых называли «лучшими», только потому что они быстрые, а когда смотришь на их код, видишь бред, с которым невозможно работать. Если вы учредитель или руководитель без технической подготовки, и вам нужно набрать программистов — обратитесь за помощью. Человек, у которого следует консультироваться, должен иметь три квалификации без исключения: степень в области компьютерных наук, большой опыт на должности software engineer, и опыт руководителя команды разработчиков. Такие люди -проверенные технологи-практики. На меньшее не соглашайтесь. Не полагайтесь на технических рекрутеров и советчиков, которые разбираются в технологиях, но не написали ни строчки кода и не проектировали системы. Они могут убедительно говорить, но не стоит слушать их советов, если у них нет аккаунта на Github или Bitbucket наполненного кодом, и образования, чтобы подкрепить свои слова.

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

 

Перевод статьи: Alexander Katrompas Java will kill your startup. PHP will save it