Hello, friends. With great caution I touch such a holivarny theme, but I want to tell my little story about why, being far from being a student, I decided to study programming, and from what I am going to (oh, god) use to implement my
PHP intent. I would be glad to receive from you, colleagues in the IT industry, valuable advice and guidance.
Looking ahead, I will say that in the comments to the topic (except for holivars about languages) a lot of useful things are said. For which many thanks to habrovchanam. Personal experience
My career did not develop in the most typical way: I was constantly working at once in several organizations and almost always on a free schedule. Why did they put up with me everywhere? It seems that for universality: he could build a network with his own hands, set up an office server on Debian, could draw a neat leaflet in CorelDraw, prepare it for printing with color separation, he could train older employees to “go online”, could draw and design a template for In a couple of weeks, CMS alone deployed a small website for a company, could automate something on-site with programs written on his knee, when it became clear that several routine operations at times slow down the entire workflow of a department or office as a whole. He could do it all.
')
I don’t have much to be proud of here, as you understand, a highly specialized professional in any of the affected industries, but has become a kind of universal IT all-rounder, middle-level human being who appears and brings the maximum benefit where in a small team solve many problems at once. I don’t complain about life at all, because some time ago I managed to launch my small but developing regional web studio. And there I am my own project manager. We develop mainly on CMS Drupal and less often on the Yii framework, which, as you know, is written in PHP.
Now, frankly, it is a little awkward for me to manage a pair of worthy programmers, whose JS and PHP code I understand only by 20%.
The university and many places of work taught me the basics of three languages: C ++, Java and PHP. Well, as taught, I am only familiar with basic algorithmic constructions, I can sort an array of a dozen methods (because of a textbook written on this topic), I understand how stacks and queues are arranged, at the level of concepts and learning tasks, familiar with OOP. In general, I program as an ordinary but diligent student of an average technical high school. But in practice, for some reason, PHP always helped me out, while luring me with my darkest cookies, my most burned cookies.
I wrote shell scripts for PHP to correct long table reports through
PHPExcel , parsil websites without API, first with regulars, and then using
phpQuery , bydlokodil (interfering with the layout with logic) web pages displaying actual prices from the local MSSQL database in the Internet the warehouse system, made any converters from the category “here you will upload the wrong file, and then you will download the correct one by this link and there the amount will be written.” In general, no matter how much I force myself to use the right language and the right approach when solving a practical task, everything always went so far that the solution, quickly and ugly at the architecture level (without any OOP and MVC), was created in PHP . At the same time, the solution from the outside looked efficient and, alas, also behaved as quite efficient. It suited everybody, even me, because reflexion and cursing myself for not observing aesthetics were given - there was no time.
But now I decided it was time to settle down. I no longer have to become a professional programmer, but I would really like to get to junior level with the right thoughts and hands. I have a bit of time for self-study, and, most importantly, I already know how to force myself to do something pe-gu-lyar, which should have a positive impact on the educational process. At the same time, I am so grateful to PHP for helping me out many times that I now want to master it properly. I do not believe that the lack of strict typing can ruin my second attempt.
But where to start again to grow the
right programmer? This is what I do not know. In PHP, I did not read books at all, but I studied by code from articles with comments scattered online. According to Java, I remember a book that I liked - its author Khabibullin. But this book does not teach the style and the right approach, although it is accessible to acquaint with the language and the platform. And the book is not about PHP.
What to do?
What is the diagnosis, colleagues? Is it possible, in your opinion, to re-learn programming, or, hurrying to solve routine tasks quickly, I irrevocably branded myself for the role of the eternal “poofy bydlokodera”?
What first steps, in your opinion, should I take now: what to read, what practical tasks to solve, which taboos to put on myself?
PS And, in order not to get up twice, I’ll ask you quite, probably a ridiculous question: which IDE do you recommend to use? I am ashamed to admit that I wrote all the megabytes of my code in
PSPad and tested it in the browser with the F5 button, reading about errors and notices and returning to correct them again in the editor. And how and in what debugging are the right programmers?
PPS It is easier to treat a patient for known symptoms, so perhaps I will give a few examples illustrating the mess in my head. I will ask some stupid questions that bother me:
1. Give a minimal example that illustrates the MVC model, so that practical profits from its use are visible?
2. They say: write a secure code. But what are the basic rules? I, for example, understand that if what came through GET or POST without checking and processing is sent to the SQL query, then be in trouble. But what other typical shoals are safe, which you should immediately be afraid of and not allow as SQL injections?
3. I met several different code formatting guides. They sometimes postulate conflicting things. Is there at least one Russian-speaking guide somewhere where each item would be explained in the spirit of “it is necessary to arrange it like this, because it solves such and such problems”?
Interim results
In the comments,
Juraseg advised Steve McConnell's “Perfect Code” and several people immediately advised “PHP Objects, Patterns and Practices”. Unfortunately, my English is weak, so I will read the translation.
Cord gave links to specific Russian-language articles and even shared his own “lessons” program, in which he is preparing his team.
Many people strongly recommend and support
JetBrains PHP Storm as the most proper IDE for PHP.
Also, many people write that since everything went well without ideologically correct programming, then there is nothing to be angry with fate, we must continue to do what I do, swaying managerial skills.
Well, and many advise to still score on PHP and look in the direction of other languages, mainly in the direction of Python. On this subject,
LayneBuchyn liked the
philosophical comment that in order to
tat objectively criticize PHP, you need to know PHP well.