Как писать на php и не стать быдло-кодером
DESCRIPTION
- почему PHP программисты снискали дурную славу; - что делать, чтобы стать хорошим программистом; - как писать идеальный код; - что такое командная разработка проекта; - учет позиции бизнеса при разработке проекта; - основные задачи, который должен решать программист;TRANSCRIPT
Как писать на PHP и не стать быдло-
кодеромby Kirill Kovalchuk
Что такое программирование?
Программирование - это процесс создания компьютерных программ.
Что такое программирование?Programming is one of the only things in the world that you can do where you can sit down and make something new from scratch … whatever you want
© Mark Zuckerberg
Язык программирования PHPPHP — это маленькое зло, созданное некомпетентными новичками,в то время как Perl — это большое и коварное зло, созданное умелыми, но извращёнными профессионалами.
© Jon Ribbens
Почему PHP-программисты снискали дурную славу?
● Освоить процедурное программирование на PHP не составляет труда
● Хорошая документация● Запустить свой первый сайт - без
проблем
Низкий порог вхождения
Уровень “программиста” — “Интересующийся”
● Не нужно думать● Не нужно программировать● Куча плагинов
CMS
Уровень “программиста” — “Настройщик Джумлы”
● Делаем как Вася посоветовал● Копи-паста с форумов● Много уже существующего
говнокода
Не с кого брать пример
Уровень “программиста” — “Ctrl+C – Ctrl+V”
– Я пишу на PHP, можно ли мне искупаться в проруби на крещение?
– УТОНЕШЬ, ПЁС!
Что делать?
● Баги● Бессонные ночи● Красные глаза● Бессонница● Сорванные сроки● Социофобия● и т.д.
Оно мне надо?● Удовлетворение● Интерес● Творческий
процесс● Одобрение● Тебе повезло ©● $$$ :)● и т.д.
● Синтаксис языка● ООП● Декомпозиция● и т.д.
Основы
Уровень программиста — “Новичок”
● Клон Твиттера● Свой блог● Любой сайт на интересующую
тематику
Поставьте себе задачу
Уровень программиста — “Перспективный новичок”
● Быстрая разработка● Учитесь на хорошем примере● Поддержка сообщества
Изучите фреймвёрк
Уровень программиста — “На правильном пути”
● lynda.com● teamtreehouse.com● codecademy.com
Онлайн материалы
Уровень программиста — “Назад дороги нет”
● github.com● bitbucket.com
Изучение чужого кода
Уровень программиста — “Уже в пути”
● Работа стажером в крупной компании
● Уроки Васи● Курсы
Научите меня!
Уровень программиста — “Хочу всё знать”
● SOLID● Паттерны проектирования● Соглашения
Будьте основательны
Уровень программиста — “Делаю всё, как надо”
● Расширяется кругозор● Появляются новые идеи● Портирование готовых идей на PHP
Изучите другой язык
Уровень программиста — “Yeah, baby! Nerds are sexy!”
Работа над проектом
на примере работы на одним проектом
Идеального кода нет!● Борьба с перфекционизмом● Сначала сделать, а потом довести до
совершенства… почти довести● Пока в Виларибо прогоняют тесты
на Continius Integration сервере, в Вилабаджо уже зафигачили всё в продакшн и разгребают баги
Просто сделай это● Хочу своего клона, который
выполнит этот таск пока я буду играть в танчики
● Один из лучших подходов к задаче – просто выполнить её
● Работа сама себя не сделает всё-равно
Ответственность● Не бойтесь брать ответственность на
себя● Не перекладывайте её на кого-то
еще● Проявляйте инициативу● В общем, — взрослейте
Технический долг● В какой-то момент поддерживать
существующий legacy-код станет почти невозможно
● Разработка нового кода взамен старого
● Рефакторинг● Тестирование
Командное взаимодействие● Главное в разработке – отношения
между людьми● Все бывают не в настроении● Не будите программиста!● Вместе мы сила
Скованные одной цепью● Вы и вся команда должны понимать
цели проекта● Позиция бизнеса - зарабатывать
деньги● Приоритетные задачи —
приоритетные
Смотрите шире● Паттерны – это хорошо, но не
панацея ● Эспериментируйте● Ваш мир заканчивается там, где
заканчивается ваше воображение● Не будьте ретроградом и
консерватором
Идеальный код
почти...
SOLID● Облегчает поддержку кода● Уменьшает технический долг● Уменьшает количество хардкода
Design Patterns● Решает типичные проблемы в
программировании● Не старайтесь использовать
паттерны там, где их не нужно использовать (там, где нет проблемы)
TDD● Улучшает качество кода● Делает ваши классы удобными в
использовании● Сами тесты сразу являются большим
плюсом● Модифицируйте код не опасаясь его
сломать
7 раз отмерь● Сначала подумай● UML● Mindmaps● Списки Todo
KISS● Хороший программист не тот, кто
может написать длинный однострочник
● Хороший программист пишет понятный другим код
● Пишите обфусцированный код только для олимпиад по обфускации… или просто пишите на Perl
DRY● WET - плохо● Shotgun surgery - типичный
антипаттерн при несоблюдении принципа DRY
● Проектирование● Рефакторинг
Code reuse● Унификация● SOLID
Документация● Само-документированный код● JavaDoc● Правильное именование● IDE● Ссылки на документацию
Пишите код так, как будто сопровождать его будет
склонный к насилию психопат, который знает, где вы живете
© Martin Golding
GTD
Мозг● Хранит 7 +/- 2 единиц информации в
оперативной памяти● Не заставляйте мозг решать вопрос
о том, выключили вы утюг или нет● Оперативную память легко
разгрузить — просто запишите текущее состояние где-то еще
Разгрузите мозг● Список рабочих задач и их
приоритеты● Купить молоко и хлеб● Посмотреть видео на youtube● Прочитать статью на лурке● Позвонить другу, спросить как дела
Можно не хранить постоянно в голове!
СконцентрируйтесьОчень важно сконцентрироваться на одной задаче● Погружение (5-15 минут)● Процесс (0.5 - 2 часа)● Внешнее воздействие или усталость● Отдохните немного
О докладе
● Основано на своем опыте● Совет — это форма ностальгии,
способ выуживания прошлого из мусорной кучи, закрашивание свежими красками нелицеприятных моментов и переработке их в нечто более ценное, чем оно было раньше
Обо мне
nemoden
nemodus
kirill.kovalchuk
Kirill Kovalchuk
Уровень программиста —
“Когда будет готово???”