Javid Karimov
Yaxşı PHP proqramçı olmaq üçün nələri bilməli

Hər gün PHP proqramçıların sayı artır. Bəs yaxşı php proqramçı olmaq üçün nələri bilmək lazımdır ?
Yeni başlayan proqramçılara aşağıdakı resurslar kömək ola bilər:
İngilis dilini orta səviyyədə bilmək ;
PHP 7 imkanlarından xəbərdar oilmaq;
Heç olmasa baza səviyyəsində HTML/CSS bilmək.
Kod yazarkən (PSR-2, PSR-12) standartlarına əməl etmək. Burada ətraflı oxuya bilərsiniz: PHP Standarts Recommendation;
Version Control sistemləri olan Git və знать GitFlow bilmək: Burada baxa bilərsiniz: Pro Git Скотта Чакона и Бена Страуба, Git Flow, Habrahabrda məqalə «Удачная модель ветвления»;
Composer ilə işləyə bilmək. Burada baxa bilərsiniz: getcomposer;
HTTP(S) protokol prinsiplərini başa düşmək;
Konsolda Linux ilə işləyə bilmək;
Veb serveri ayarlaya bilmək (Nginx, Apache);
Docker və Vagrant.
Qeyd olunan veb freymvorlərin heç olması birini bilmək - Yii, Laravel, Symfony, Slim Framework;
Deployment alətləri ilə işləyə bilmək. Məsələn: проект Deployer и введение в работу;
RDBMS/NoSQL (MySQL, PostgreSQL, MongoDB, Redis) ilə işləyə bilmək;
Növbələmələr (Queue) ilə işləyə bilmək (Redis, RabbitMQ и т. д.). Nümunə: Очереди сообщений на RuHigload, «Сервер очередей» ;
Fon rejimində məsələləri idarə edə bilmək (supervisord, cron, systemd и т. д.);
Keşlə işləyə bilmək;
REST API layihələdirməni bacarmaq. Bu məqalə kömək ola bilər «Разработка web API» və «Архитектура REST»;
API dokumentasiya edə bilmək (API Blueprint, Swagger);
SemVer bilmək;
OOP (Obyektyönlü proqramlaşdırma);
SOLİD prinsiplərini başa düşmək və tətbiq etmək. Məqalə:«Шпаргалка по SOLID-принципам с примерами на PHP» , SOLID, From stupid to SOLID code;
GRASP prinsiplərini başa düşmək və tətbiq etmək. Məqalə: ООП для ООП: GRASP;
Digər prinsiplərdən heç olmasa məlumatı olmaq: CQS, DRY, YAGNI, KISS və s. Məqalə: This is not the DRY you are looking for, «Три ключевых принципа ПО, которые вы должны понимать», Command-query separation;
Dependency Injection mexanizmini bilmək və Dependency Injection Container ilə işləməyi bacarmaq. Məqalə: «Инверсии зависимостей управления впрыском»;
Patterns of Enterprise Application Architecture(ActiveRecord, DataMapper, UnitOfWork, Repository, ValueObject, Domain Model və s.) başa düşmək və tətbiq edə bilmək;
refactoring nə olduğunu bilmək və onu tətbiq etməyi bacarmaq;
Səliqəli kod yaza bilmək. Məqalə: «Чистый код»;
Başqasının kodunu başa düşüb onu səliqəyə sala bilmək;
Çətin məsələlər üçün sadə və optimal həllər tapa bilmək.