On the Internet, almost all web programming courses begin to learn html / css / js / php. But after the interview where I was asked what is REST, and they heard only silence, what other technologies / patterns you need to know and understand the developer? My short list is:

  • HTTP and methods
  • REST
  • MVC

Closed due to the fact that it is necessary to reformulate the question so that it was possible to give an objectively correct answer by the participants Dmitriy Simushev , Visman , D-side , cheops , aleksandr barakin 11 Jun '16 at 9:24 .

The question gives rise to endless debates and discussions based not on knowledge, but on opinions. To get an answer, rephrase your question so that it can be given an unambiguously correct answer, or delete the question altogether. If the question can be reformulated according to the rules set out in the certificate , edit it .

  • OOP, patterns, sql - in any case, they will be asked at the interview - Boris Pobezhimov
  • Well, SQL and OOP are understandable, but using patterns you can specify which ones? - Hardc0re
  • one
    Firstly, what types of patterns do you know, well, and then on the most popular list ... Singleton, factory, builder, prototype ... For some reason I was constantly asked about them - Boris Pobezhimov
  • one
    AJAX, WebSockets, RPC, microservices, React, Flux, SPA - andreymal
  • 2
    What is the result of i = 0; i += i++ + ++i; i = 0; i += i++ + ++i; . What are bad global variables. What is O (N) and what generally happens from this area. Etc. Actually, this means that, for all of the above, we should not forget that we still need to be able to program ... - PinkTux

1 answer 1

It depends on the level you are applying for. An approximate list of topics that I touch upon when interviewing developers (I’ll clarify what PHP developers mean):

Patterns :

  • Gang of Four (GoF) format. At least the main ones.
  • more about generating patterns. Why do we need all sorts of factories and factory methods?
  • Continuing the theme of generating patterns: singleton. When to use? When not worth it? Features of implementation in a specific language. What are the problems with it?
  • Structural and behavioral patterns. Decorator, Deputy, Visitor, Linker, etc.
  • Outside the format of the gang of four: Object-relational mapping patterns - Table Gateway, Row Gateway, Active Record, Data Mapper, Unit Of Work. What is the difference between Row Gateway and Active Record? Active Record and Data Mapper? When is it more appropriate to use?
  • MVC, HMVC, etc.

Object Oriented Design:

  • SOLID principles
  • L and D in SOLID
  • Dependency Injection
  • Dependecy Injection Container and Service Locator. What is it? What is the difference between them? Why not just create objects everywhere with the new operator?

You can write for a long time, but ... The most practical advice I can give you and which will give quick results: take a few popular frameworks, for example Yii2 and Symfony, and take a couple of months of your life to follow the step-by-step lessons more than enough, try writing a few small projects on each of these frameworks. Starting with simple blogs, moving to some more difficult tasks. Along the way, google incomprehensible terms that you will come across in the lessons, before going to bed, read a couple of clever comments on these topics in order to delve into the question. For the sake of interest, try in one of the training projects as a database to use NOT MySql, but say PostgreSQL or at least SQLite. At least for a tick. If you diligently follow this advice, in a month, you yourself will be surprised at how much new and, most importantly, necessary for employment you will learn. You will have experience with several ORMs, you will know what REST is, you will be able to install packages through the composer, you will have at least a small, but understanding how different databases differ between themselves. And in a month you will be able to claim a junior position or at least a fresher. Do not forget to see how to work with Git, upload your training projects to GitHub (do not forget to include a link to your githab repository in your resume) and go ahead for interviews. The main thing then try to deepen your knowledge and fill theoretical gaps - a developer who is fluent in several tools (knows a couple of libraries and frameworks) is not interesting in the long term, you need a person who is constantly ready to learn and develop.