SlideShare a Scribd company logo
1 of 45
Как писать на 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
Язык программирования PHP 
PHP — это маленькое зло, созданное 
некомпетентными новичками, 
в то время как 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 
Уровень программиста — 
“Когда будет готово???”

More Related Content

What's hot

серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016Roman Ivliev
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...Dakiry
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016Roman Ivliev
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Алексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPАлексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPOleg Poludnenko
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?PyNSK
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствВладимир Кожаев
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Sergey Polazhenko
 
автоматизация тестирования огурцом
автоматизация тестирования огурцомавтоматизация тестирования огурцом
автоматизация тестирования огурцомVadim Glebov
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuVladimir Rudnyh
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...SBTech
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2SBTech
 

What's hot (19)

серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Slides
SlidesSlides
Slides
 
Алексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPАлексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHP
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
Чем Python плох для стартапа?
Чем Python плох для стартапа?Чем Python плох для стартапа?
Чем Python плох для стартапа?
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройств
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
 
автоматизация тестирования огурцом
автоматизация тестирования огурцомавтоматизация тестирования огурцом
автоматизация тестирования огурцом
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.Ru
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Keyword driven testing
Keyword driven testingKeyword driven testing
Keyword driven testing
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 

Viewers also liked

Don't worry, do automation
Don't worry, do automationDon't worry, do automation
Don't worry, do automationVitebsk Miniq
 
Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Ontico
 
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...
 Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт... Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт...
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...web2win
 
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?CodeFest
 
TMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsTMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsIosif Itkin
 
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...web2win
 
Php архитектор - кто он?
Php архитектор - кто он?Php архитектор - кто он?
Php архитектор - кто он?phpdevby
 
HTML5 as a game console
HTML5 as a game consoleHTML5 as a game console
HTML5 as a game consolemichalbu
 
Think php 10, parsing with PHP
Think php 10, parsing with PHPThink php 10, parsing with PHP
Think php 10, parsing with PHPPavel Polyakov
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
Intro to AngularJS
Intro to AngularJSIntro to AngularJS
Intro to AngularJSAaronius
 
Dependency Management with RequireJS
Dependency Management with RequireJSDependency Management with RequireJS
Dependency Management with RequireJSAaronius
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAlexander Lisachenko
 
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,..."Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...Yandex
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90minsLarry Cai
 
Know yourengines velocity2011
Know yourengines velocity2011Know yourengines velocity2011
Know yourengines velocity2011Demis Bellot
 

Viewers also liked (18)

PHP
PHPPHP
PHP
 
Don't worry, do automation
Don't worry, do automationDon't worry, do automation
Don't worry, do automation
 
Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)
 
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...
 Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт... Максим Лагутин, "Угрозы безопасности для  интернет-магазинов и бизнеса в инт...
Максим Лагутин, "Угрозы безопасности для интернет-магазинов и бизнеса в инт...
 
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
Эффективная, вовлеченная команда энтузиастов. А ты готов к этому?
 
TMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsTMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class Diagrams
 
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
Денис Донченко, 1С-Битрикс: "Масштабирование интернет-магазина: какие бывают ...
 
OOP
OOPOOP
OOP
 
Php архитектор - кто он?
Php архитектор - кто он?Php архитектор - кто он?
Php архитектор - кто он?
 
HTML5 as a game console
HTML5 as a game consoleHTML5 as a game console
HTML5 as a game console
 
Think php 10, parsing with PHP
Think php 10, parsing with PHPThink php 10, parsing with PHP
Think php 10, parsing with PHP
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
Intro to AngularJS
Intro to AngularJSIntro to AngularJS
Intro to AngularJS
 
Dependency Management with RequireJS
Dependency Management with RequireJSDependency Management with RequireJS
Dependency Management with RequireJS
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHP
 
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,..."Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90mins
 
Know yourengines velocity2011
Know yourengines velocity2011Know yourengines velocity2011
Know yourengines velocity2011
 

Similar to Как писать на PHP и не стать быдло-кодером

Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobАліна Шепшелей
 
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"Inhacking
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source ProjectsAlexei Yuzhakov
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложномуIlya Bolkhovsky
 
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiAlexander Makarov
 
Что сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьЧто сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьТранслируем.бел
 
Трудности повторного использования
Трудности повторного использованияТрудности повторного использования
Трудности повторного использованияDev2Dev
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидахОмские ИТ-субботники
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...Python Meetup
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаPavel Veinik
 
Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Alexey Rybak
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest
 
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?Krivoy Rog IT Community
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в ITSam Faktorovich
 

Similar to Как писать на PHP и не стать быдло-кодером (20)

Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a job
 
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source Projects
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложному
 
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
 
Что сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьЧто сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделывать
 
Трудности повторного использования
Трудности повторного использованияТрудности повторного использования
Трудности повторного использования
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
 
Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
 
Как разраба
Как разрабаКак разраба
Как разраба
 
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
kranonit S14E02 Серёжа Пономарёв: kranonit’у уже год. Полёт нормальный?
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Первый шаг в Open Source
Первый шаг в Open SourceПервый шаг в Open Source
Первый шаг в Open Source
 

Как писать на PHP и не стать быдло-кодером

  • 1. Как писать на PHP и не стать быдло-кодером by Kirill Kovalchuk
  • 3. Программирование - это процесс создания компьютерных программ.
  • 4. Что такое программирование? 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
  • 5. Язык программирования PHP PHP — это маленькое зло, созданное некомпетентными новичками, в то время как Perl — это большое и коварное зло, созданное умелыми, но извращёнными профессионалами. © Jon Ribbens
  • 7. Низкий порог вхождения ● Освоить процедурное программирование на PHP не составляет труда ● Хорошая документация ● Запустить свой первый сайт - без проблем Уровень “программиста” — “Интересующийся”
  • 8. CMS ● Не нужно думать ● Не нужно программировать ● Куча плагинов Уровень “программиста” — “Настройщик Джумлы”
  • 9. Не с кого брать пример ● Делаем как Вася посоветовал ● Копи-паста с форумов ● Много уже существующего говнокода Уровень “программиста” — “Ctrl+C – Ctrl+V”
  • 10. – Я пишу на PHP, можно ли мне искупаться в проруби на крещение? – УТОНЕШЬ, ПЁС!
  • 12. Оно мне надо? ● Баги ● Бессонные ночи ● Красные глаза ● Бессонница ● Сорванные сроки ● Социофобия ● и т.д. ● Удовлетворение ● Интерес ● Творческий процесс ● Одобрение ● Тебе повезло © ● $$$ :) ● и т.д.
  • 13. Основы ● Синтаксис языка ● ООП ● Декомпозиция ● и т.д. Уровень программиста — “Новичок”
  • 14. Поставьте себе задачу ● Клон Твиттера ● Свой блог ● Любой сайт на интересующую тематику Уровень программиста — “Перспективный новичок”
  • 15. Изучите фреймвёрк ● Быстрая разработка ● Учитесь на хорошем примере ● Поддержка сообщества Уровень программиста — “На правильном пути”
  • 16. Онлайн материалы ● lynda.com ● teamtreehouse.com ● codecademy.com Уровень программиста — “Назад дороги нет”
  • 17. Изучение чужого кода ● github.com ● bitbucket.com Уровень программиста — “Уже в пути”
  • 18. Научите меня! ● Работа стажером в крупной компании ● Уроки Васи ● Курсы Уровень программиста — “Хочу всё знать”
  • 19. Будьте основательны ● SOLID ● Паттерны проектирования ● Соглашения Уровень программиста — “Делаю всё, как надо”
  • 20. Изучите другой язык ● Расширяется кругозор ● Появляются новые идеи ● Портирование готовых идей на PHP Уровень программиста — “Yeah, baby! Nerds are sexy!”
  • 21. Работа над проектом на примере работы на одним проектом
  • 22. Идеального кода нет! ● Борьба с перфекционизмом ● Сначала сделать, а потом довести до совершенства… почти довести ● Пока в Виларибо прогоняют тесты на Continius Integration сервере, в Вилабаджо уже зафигачили всё в продакшн и разгребают баги
  • 23. Просто сделай это ● Хочу своего клона, который выполнит этот таск пока я буду играть в танчики ● Один из лучших подходов к задаче – просто выполнить её ● Работа сама себя не сделает всё-равно
  • 24. Ответственность ● Не бойтесь брать ответственность на себя ● Не перекладывайте её на кого-то еще ● Проявляйте инициативу ● В общем, — взрослейте
  • 25. Технический долг ● В какой-то момент поддерживать существующий legacy-код станет почти невозможно ● Разработка нового кода взамен старого ● Рефакторинг ● Тестирование
  • 26. Командное взаимодействие ● Главное в разработке – отношения между людьми ● Все бывают не в настроении ● Не будите программиста! ● Вместе мы сила
  • 27. Скованные одной цепью ● Вы и вся команда должны понимать цели проекта ● Позиция бизнеса - зарабатывать деньги ● Приоритетные задачи — приоритетные
  • 28. Смотрите шире ● Паттерны – это хорошо, но не панацея ● Эспериментируйте ● Ваш мир заканчивается там, где заканчивается ваше воображение ● Не будьте ретроградом и консерватором
  • 30. SOLID ● Облегчает поддержку кода ● Уменьшает технический долг ● Уменьшает количество хардкода
  • 31. Design Patterns ● Решает типичные проблемы в программировании ● Не старайтесь использовать паттерны там, где их не нужно использовать (там, где нет проблемы)
  • 32. TDD ● Улучшает качество кода ● Делает ваши классы удобными в использовании ● Сами тесты сразу являются большим плюсом ● Модифицируйте код не опасаясь его сломать
  • 33. 7 раз отмерь ● Сначала подумай ● UML ● Mindmaps ● Списки Todo
  • 34. KISS ● Хороший программист не тот, кто может написать длинный однострочник ● Хороший программист пишет понятный другим код ● Пишите обфусцированный код только для олимпиад по обфускации… или просто пишите на Perl
  • 35. DRY ● WET - плохо ● Shotgun surgery - типичный антипаттерн при несоблюдении принципа DRY ● Проектирование ● Рефакторинг
  • 36. Code reuse ● Унификация ● SOLID
  • 37. Документация ● Само-документированный код ● JavaDoc ● Правильное именование ● IDE ● Ссылки на документацию
  • 38. Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете © Martin Golding
  • 39. GTD
  • 40. Мозг ● Хранит 7 +/- 2 единиц информации в оперативной памяти ● Не заставляйте мозг решать вопрос о том, выключили вы утюг или нет ● Оперативную память легко разгрузить — просто запишите текущее состояние где- то еще
  • 41. Разгрузите мозг ● Список рабочих задач и их приоритеты ● Купить молоко и хлеб ● Посмотреть видео на youtube ● Прочитать статью на лурке ● Позвонить другу, спросить как дела Можно не хранить постоянно в голове!
  • 42. Сконцентрируйтесь Очень важно сконцентрироваться на одной задаче ● Погружение (5-15 минут) ● Процесс (0.5 - 2 часа) ● Внешнее воздействие или усталость ● Отдохните немного
  • 44. ● Основано на своем опыте ● Совет — это форма ностальгии, способ выуживания прошлого из мусорной кучи, закрашивание свежими красками нелицеприятных моментов и переработке их в нечто более ценное, чем оно было раньше
  • 45. Обо мне nemoden nemodus kirill.kovalchuk Kirill Kovalchuk Уровень программиста — “Когда будет готово???”