Pull to refresh

Стоит ли смотреть в сторону PHP тому, кто решился только со второй попытки научиться прилично программировать?

PHP *
Здравствуйте, друзья. С большой осторожностью касаюсь столь холиварной темы, но хочу рассказать свою небольшую историю о том, почему я, будучи уже далеко не в студенческом возрасте, решил всё-таки изучать программирование, и от чего же я собираюсь (о, боже) использовать для реализации своих намерений PHP. Буду рад получить от вас, коллеги по IT-индустрии, ценные советы и наставления.

Забегая вперёд скажу, что в комментариях к топику (кроме холиваров о языках) сказано много полезного. За что огромное спасибо хабровчанам.

Личный опыт

Моя карьера складывалась не самым типичным образом: я постоянно работал сразу в нескольких организациях и почти всегда на свободном графике. Почему меня всюду терпели? Похоже, что за универсальность: мог своими руками проложить сеть, настроить офисный сервер на Debian`е, мог в CorelDraw нарисовать аккуратную листовку, подготовив её к печати с цветоделением, мог обучать пожилых сотрудниц «входить в интернеты», мог нарисовать и сверстать шаблон для CMS и в одиночку за пару недель развернуть для компании небольшой сайт, мог чего-то по месту автоматизировать написанными на коленке программами, когда становилось ясно, что несколько рутинных операций в разы тормозят весь рабочий процесс отдела или конторы в целом. Мог и всё это делал.

Гордиться тут особо нечем, как вы понимаете, узкоспециализированным профессионалом ни в одной из затронутых отраслей я так и не стал, а стал этаким универсальным IT-многоборцем, человеком-окрестром среднего звена, который появляется и максимальную пользу приносит там, где в небольшом коллективе надо решить сразу много проблем. На жизнь, впрочем, вообще не жалуюсь, потому что некоторое время назад удалось запустить свою небольшую, но развивающуюся региональную веб-студию. И там я сам себе проджект-менеджер. Разрабатываем мы, в основном, на CMS Drupal и реже на фреймворке Yii, которые, как известно, на PHP писаны.

Сейчас мне, откровенно говоря, немного неловко управлять парой достойных программистов, чей JS и PHP код я понимаю лишь на 20%.

Университет и многие места работы научили меня основам трёх языков: C++, Java и PHP. Ну, как научили, я всего-то знаком с базовыми алгоритмическими конструкциями, могу отсортировать массив десятком методов (из-за курсовика, написанного по этой теме), понимаю как устроены стеки и очереди, на уровне концепций и учебных задач знаком с ООП. В общем, программированием владею как заурядный, но прилежный студент средненького технического вуза. Зато на практике почему-то меня всегда выручал именно PHP, притом заманивая своими самыми жжёными печеньками с тёмной стороны.

Я писал на PHP шелл-скрипты для коррекции длинных табличных отчётов через PHPExcel, парсил сайты без API сначала регулярками, а потом уж и с использованием phpQuery, быдлокодил (мешая вёрстку с логикой) веб-странички выводящие в интернет актуальные цены из локальной MSSQL-базы складской системы, мастерил всякие конвертеры из разряда «вот сюда вы неправильный файлик загрузите, а потом правильный по этой ссылочке скачаете и там уже сумма будет прописью». В общем, сколько бы я не заставлял себя использовать правильный язык и правильный подход при решении какой-то практической задачи, всегда всё скатывалось к тому, что решение, достаточно быстро и безобразно на уровне архитектуры (без всяких ООП и MVC), создавалось на PHP. При этом снаружи решение выглядело работоспособным и вело себя, увы, тоже как вполне работоспособное. Это всех устраивало, даже меня, потому что придаваться рефлексии и проклинать себя за несоблюдение эстетики — было некогда.

А вот сейчас я решил, что пора остепениться. Мне уже не стать профессиональным программистом, но до уровня junior`а с правильно поставленными мыслями и руками мне бы очень хотелось дойти. Немного времени у меня для самообучения есть, а, главное, я уже умею заставлять себя делать нечто ре-гу-ляр-но, что должно положительно сказаться на образовательном процессе. При этом, я так благодарен много раз выручавшему меня PHP, что хочу теперь по-правильному освоить именно его. Не верю я, что отсутствие строгой типизации, может мне испортить вторую попытку.

Но с чего заново начать, чтобы расти правильным программистом? Вот этого я — не знаю. По PHP я вообще не читал книжек, а учился по коду из статей с комментариями, разбросанному в сети. По Java помню книжку, которая мне понравилась — её автор Хабибуллин. Но эта книжка не учит стилю и правильным подходам, хотя и доступно знакомит с языком и платформой. И книжка не про PHP.

Что делать?

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

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

P.S. И, чтобы два раза не вставать, задам уж совсем, наверное, смешной вопрос: какую IDE вы посоветуете использовать? Я, стыдно признаться, все мегабайты своего кода написал в PSPad и протестировал в браузере кнопочкой F5, читая про ошибки и нотисы и возвращаясь снова их исправлять в редактор. А как и в чём отладку ведут правильные программисты?

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

1. Приведите минимальный пример, который иллюстрирует модель MVC, так чтобы были видны практические профиты от её применения?

2. Говорят: пишите безопасный код. Но каковы базовые правила? Я, например, понимаю, что если то, что пришло через GET или POST без проверки и обработки отправлять в SQL запрос, то быть беде. Но какие ещё бывают типовые косяки в безопасности, которых стоит сразу же бояться и не допускать как SQL-инъекций?

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

Промежуточные результаты

В комментариях Juraseg посоветовал «Совершенный код» Стива Макконнелла и сразу несколько человек посоветовали «PHP Objects, Patterns and Practices». К сожалению, английский мой слаб, поэтому буду читать перевод.

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

Многие люто рекомендуют и поддерживают JetBrains PHP Storm в качестве самой правильной IDE для PHP.

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

Ну, и, многие советуют таки забить на PHP и смотреть в сторону других языков, в основном, в сторону Python. На эту тему понравился философский комментарий от LayneBuchyn о том, что для того, чтобы толсто троллить объективно критиковать PHP, надо отлично знать PHP.
Tags:
Hubs:
Total votes 66: ↑39 and ↓27 +12
Views 31K
Comments Comments 138