A job as a junior/mid PHP developer at Droptica
At Droptica, we have been regularly recruiting PHP developers for quite some time now. We often get asked what exactly does one have to know in order to join our team, mostly by people who are starting their careers as developers or who want to switch jobs or even industries.
The extent of “PHP development” knowledge is vast and our expectations regarding our candidates may not be obvious for some. In this article, we will describe in detail what we (and many more companies in the industry) are looking for in our recruits.
Fluency in using basic elements of PHP is paramount. Our candidates are expected to quickly solve basic programming tasks, and by basic tasks I mean coding exercises and problems that appear during first three semesters of Computer Science studies.
The examples of such problems are:
- data types, program flow control instructions
- loops, switching loops, loops within loops, looping through many-dimensional arrays
- string operations, removing string elements, changing strings
- functions, best practices in creating functions
- recurrence, a good understanding of tasks requiring recurrent functions
- basics of object-oriented programming, creating classes, inheritance, interfaces, abstract classes
- simple sorting algorithms
- data structures, fifo and lifo queues, trees
We believe that the list above is simply a must-have since we consider it easy to learn new programming languages and frameworks as long as you have these solid foundations.
How to learn the basics in a good way?
Solve problems and a lot of them. If you’re reading a basic book, do ALL the problems. Learning programming is not a race, so don’t try to go through it as quickly as possible. It does not matter that you understand the example provided by the author. You need to go through other examples and problems before you are able to use a given element of the language fluently. If you have to, code “hello world” in ten or twenty different ways until you understand every single character of the code that you just wrote.
I would also recommend using university problem lists, as they often contain 15-30 tasks for every single subject, for example, loops or flow control instructions. By solving such a great number of problems, you will definitely learn how to use the elements of a programming language.
Solving just two or four problems is not enough.
Go from specific to general, not the other way ‘round
I will describe this in more detail based on Drupal because that’s what we are working with (although Symfony Framework appears in our projects more and more often). The example applies to any other large system.
We get many candidates who are able to “build” a website on Drupal using the core, several ready-made modules and some PHP code; however, more often than not they do not understand it at all. They just copy and paste a snippet from StackExchange or other websites and check if it works, without understanding what they just did. That way, it is sometimes possible to deliver a website or an application to the client, but more often than not it won’t work exactly like the client wants it, other things won’t be done up to specification. This is because usually, they are simply unable to deliver a system working according to the client’s needs and serving their business purposes.
We get some recruits who have been working with Drupal and building websites for more than five years while being unable to change a loop from foreach to while.
Knowing Drupal is important and valuable, however, having fundamental programming knowledge is far more important. Thus, if you want to learn Drupal, learn the basics of programming along the way. If you already know Drupal, but you don’t know the basics of programming... Well, it’s time to learn! :)
Be an application designer, not a code monkey
We believe that programming is all about the implementation of business processes using code. This is why we require that our candidates are able to translate business processes into application code – interfaces, data structures, class diagrams, etc.
During job interviews, we ask our candidates about the way they would design a simple application. For example: “How would you design a web application for booking visits at a vet?” Here, we expect a general answer regarding building such an application, the technologies that would be involved, actions available in the system and so on, as well as the ability to describe the programming tasks involved in the implementation of such an application.
We do not require anybody to design very complex systems, but our candidate should be definitely able to produce a preliminary design of a small application based on several interconnected data tables.
What language should you learn?
English. The English language is really important for us, particularly since 90% of our clients are located outside Poland. We want to build great software for clients from all over the world, and building great software requires great and constant communication with our clients – in English. This is why each job interview checks our candidates’ command of the English language.
We require only four things:
- solid foundations
- using advanced systems and understanding how they work
- the ability to design applications
- command of the English language at the B1/B2 level
If you want to join us and you meet the requirements, please visit our "Careers" page at https://kariera.droptica.pl
If you would like to know more about our recruitment process and the requirements, ask us via [email protected] or messenger https://m.me/grzegorz.bartman https://m.me/maciej.lukianski