Do you want to become a professional PHP developer at ⋮IWConnect, but don’t know where to start from? This complete A-Z guide will give you precise directions and will surely help you!
IW is one of the leading companies in the country, offering different services to clients around the world. As an outsourcing company, it has a huge portfolio of clients including some really big companies in the world.
Currently, the company counts 140+ people, with offices in Bitola and Prilep.
The company has established Practices, each Practice represents an organizational entity which has a well-trained pool of resources in one or a set of technologies.
One of the Practices is the PHP practice.
The Road to becoming a PHP developer
Having a big number of projects and requests from the clients, the company is seeking for new senior developers or promising beginners. The million-dollar question is How to become a developer? – a question which is asked very often. What is important to be noted here is that it is not an easy job, especially not for newbies. The college degree or the certificates are rarely enough for you to start a career as a developer. Starting a career requires more – you must invest in yourself with self-education in the IT area. And if you are already reading this, then it means that you really are interested in learning and becoming a web developer. This blog is intended for those who want to start learning development or for those who have some beginner experience and want to become part of our company.
One of the most important things that you must know is that in order for you to become a developer in the IT industry it is not enough just to know any programming language, any framework etc. The most important is to know the basics of the computer science, how the web works and some other “under the hood” stuff that will be useful through your whole IT career.
Let’s see this thing from a different perspective. Imagine you have a hammer and you open the hood of the car. If you don’t know anything about how the car works, the hammer in your hand is useless. In our situation, the hammer is the programming language (PHP, JAVA) and under the hood of the car is the computer science.
This guide is what you need! We will help you in separating the important things that you need to put your focus on from the not important ones.
Web
As mentioned above, most of the beginners make the biggest mistake: learning a particular programming language without understanding the basics of how the web works. This is not a long-term solution.
Ask these questions to yourself and check the level of your knowledge:
- What is Internet and how it works?
- What is a server and what is a client?
- What is URL, domain and DNS?
- Generally explain what is happening when you type the URL in the browser.
- What is HTTP and how it works?
- What is HTTP request and response?
- How can you see the HTTP request and response details on the browser?
- What is the purpose of sessions and cookies?
If you still don’t have answers to some of the questions, don’t worry, you are still at the beginning of the journey. Learn the answers in the resources shared below or simply search on Google.
Below, you will find some helpful resources we highly recommend you to read and learn them before going further in learning development:
- https://www.edx.org/es/course/cs50s-introduction-computer-science-harvardx-cs50x
- https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/How_the_Web_works
- https://www.tutorialspoint.com/http/http_overview.htm
- https://stackoverflow.com/questions/11142882/how-do-cookies-and-sessions-work?#answer-11143263
HTML & CSS
Probably you want to become a backend developer. Although the backend development job primarily includes work on the server side, in the Web development area you must, at least, know the basics of HTML and CSS. With good organization of your time and commitment, you will master the basics of HTML and CSS in one week.
Ask these questions to yourself and check the level of your knowledge:
- What is the basic structure of HTML document?
- List at least 10 HTML tags and their purpose.
- What are meta tags?
- What form input types exist?
- What is CSS and what is it used for?
- What kind of CSS selectors exist?
- How do we include CSS to HTML document?
- What is the difference between block and inline element?
- What is Responsive Web Design and how it works?
Useful resources:
Development environment
After talking and giving some directions related to the general knowledge of the web, we are ready to go forward and setup the development environment.
For the development of PHP applications, you need a web server (Apache) that can execute the code and also a server for database (MySQL). If you are a beginner in PHP development, one very helpful thing for you would be a useful solution such as WAMP or XAMPP. With one installation, everything will be set up for you and you will have a complete server up and running.
Useful tools that you can download and install are:
- WAMP or XAMPP (Windows)
- LAMP (Linux)
- Text editor – Visual Studio Code, Sublime Text, Atom
- phpMyAdmin
PHP
The next step is self-sustained systematic education from the resources available on the Internet or through courses. What we highly recommend is visiting the laracasts.com website or learning from w3schools.com. However, there are a lot of other useful resources and courses on the web that you may find more helpful and more appropriate for you.
Once you understand the basics of the PHP programming language and all the technologies related with it, you are ready to go further. PHP’s Language Reference is part of the official PHP manual and from there you can learn everything related to PHP, strings, arrays, control structures, sessions, cookies and a lot more which will be part of your daily work (you don’t need to read all the documentation, you just need to learn the definitions and meaning).
After you gain good knowledge of the PHP language, and you feel that you are ready to continue with something more advanced, then you can start learning about the Design Patterns in PHP: Factory, Singleton, Observer, Adapter and Dependency Injection.
During the learning process, you will acquire experience to build your web application. With developing that application, you will see your progress in development. The way you approach the problems and solve them, will be a good indicator of your progress.
⋮IWConnect is a long time on the market and has a good experience with beginners. What we suggest you to do is build an application (on your own). It doesn’t matter if it is your first or 5th application. What we, as a company, will pay attention to is the way you think about solving the problems, how the code is written and organized.
Ask these questions to yourself and check the level of your knowledge:
- What are the global variables in PHP?
- How do we control and manage Session and Cookies in PHP?
- Explain the process of authentication (login) of a user in any PHP application.
- How are the passwords stored in a database?
- What is a class and what is an object?
- What is the difference between public, protected and private variable or method?
- What is an abstract class and what is an interface? What is the difference between them?
- Explain why and how do we use Interfaces in PHP.
- What is PDO?
- What are the design patterns in PHP? What design patterns do you know?
Useful resources:
- https://laracasts.com/skills/php
- https://www.w3schools.com/php7/default.asp
- https://www.guru99.com/php-tutorials.html
MySQL
Very often, there are some candidates that don’t have basic knowledge of MySQL. It is important not to skip the step of learning the basics of MySQL. MySQL is a relational database management system. We highly recommend to, through your process of education, pay attention and focus on learning and trying some examples with MySQL. It will not take more than 2-3 weeks to master it.
*Note: During learning MySQL, don’t use a programming language. Use the native operations with MySQL only.
Ask these questions to yourself and check the level of your knowledge:
- What data types exist?
- What is the difference between CHAR(16) and VARCHAR(16)?
- What are primary, foreign and unique keys and what are they used for?
- What is the purpose of escaping HTML?
- What is MySQL injection?
- What types of JOIN’s exist?
- What is the difference between LEFT JOIN and INNER JOIN?
- What is the purpose of GROUP BY?
- What is Index and when is it used?
Useful resources:
- https://laracasts.com/series/php-for-beginners/episodes/11
- http://www.ntu.edu.sg/home/ehchua/programming/sql/mysql_beginner.html
- https://www.tutorialspoint.com/mysql/
- http://www.mysqltutorial.org/
JavaScript
In today’s web development, it is hard imagining to work as a web developer without having, at least, basic experience with JavaScript. What we suggest is to start learning the basics and fundamentals of vanilla JavaScript. After that, you can start with learning jQuery, that is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling. With good understanding of JavaScript, you will understand the concepts of jQuery in 1-2 weeks. Don’t waste more time on jQuery.
Ask these questions to yourself and check the level of your knowledge:
- What is DOM?
- When the DOM ready event is executed?
- What is a JavaScript scope?
- What is Ajax request?
- How do we include JavaScript file to an HTML document?
- How do we include jQuery to an HTML document?
Useful resources:
- https://www.w3schools.com/js/
- https://laracasts.com/skills/javascript
- https://javascript.info/
- https://learn.jquery.com/
- https://www.tutorialspoint.com/jquery_for_beginners/index.asp
Other
If you are interested in some other technologies which will be useful in your career and that you will for sure work with, check the following:
- Git – Install and try it to see what is its purpose. Create account on GitHub or Bitbucket.
- Composer – Explore what is it and what is its purpose. Install and try it.
Promote yourself!
The technical knowledge is very important, but also you have to promote yourself on the Internet. There are a lot of reasons for it. There are a lot of communities throughout the Internet that have the same experience with you, share the best ideas with you etc. It is good to meet such people with whom you can communicate, help each other resolve different problems and share some programming techniques, tips and trends in the industry.
From another point of view, the visibility on the Internet is important for future potential employers. For example, if you have a couple of projects, you can add them to particular repositories on GitHub and you can include those projects in your CV.
If you see yourself as a future PHP developer, these are some great websites that we highly recommend you to open accounts and use them:
Task
This guide would not have been full if we didn’t include a task in it. We have prepared this task so the beginners can have an insight into the functionality of a modern PHP application and the functionalities related to that application. Solving this task improves the chances for employment because it directs you to the fundamental knowledge you need to have to be part of the web development.
For whom is the task:
- You are starting with learning and you do not have any projects behind you;
- You have a project behind you, but you do not understand everything completely.
Requirements (how to create an application):
- It must be written in object oriented vanilla PHP, i.e. not to use a PHP framework.
- Must follow the MVC pattern:
- Must work in PHP 7.2 and use MySQL database.
- You need to use an autoloader to load classes:
- Use PDO to communicate with the database:
- It is necessary to use the Git version control system and regularly commit:
- The code must be posted on a Git repository hosting service:
- All names of variables, classes, functions, comments in the code, commit messages, etc. must be in English.
Optional:
- Frontend framework
Pay attention to:
- Password hashing;
- Data types, primary / foreign / unique keys, cascades and indexes in the database;
- Cross-Site Scripting (XSS);
- Coding standard:
Shared gallery
Create a web application that will contain 3 pages for unlogged users:
1. Home
- An arbitrarily arranged front page + button that shows the total number of images (not showing the image itself) of all users together without a page refresh (Ajax request) for all users (logged or unlogged).
2. Login
- There will be a registration of users and login of already existing users;
- Remember me (use cookies).
3. Registration (put the link on the login page that leads here)
- The user will create the account (required fields, username, email, password, repeated password).
And additional 2 pages for logged in users:
1. Management
- The logged-in user will be able to upload the images (exclusive to .png and .jpg format);
- The uploaded images from all the users will be displayed in a table along with the username of the user who uploaded them, his email and address. It is possible to display multiple uploaded images per user. The table must have a “remove” button that will delete the image, but the image can be deleted only by the user who put it, other users should not be able to delete the image, and the “remove” button should not be displayed to them. The data required for the table must be retrieved in only one MySQL query.
2. My account
- The user will be able to change his / her password;
- The user will be able to delete his account by pressing the “Remove Account” button, and all that is related to its account (even the images).
Database:
You need to specify the number of tables, the most logical data types for fields, find when to use and use primary / unique / foreign keys where necessary, cascades (user deletion must delete all data related to it, as well as images uploaded to the server by the user).
Optional: you need to create a PHP script that, when starting, determines whether there are tables in the database. If there are no scripts, the script should create and prepare the database for working with data (create tables, fields and their relations).
Note
Please resolve this task with understanding. In a later interview, we will examine the understanding of what has been done, and any copying of a third-party code will not help in hiring.
How to apply for a job at ⋮IWConnect?
The need for ambitious developers – seniors and/or perspective beginners is always high. No matter whether we have an open job application or not, if you have read everything that is written above you can send us your CV at hr@iwconnect.com. If you have even solved the task and attached it to your CV that is a bonus for you!
We will respond to you and will even call to get to know you, and give you directions for further improvement if needed.