I now wonder how many people like me. Those who, during their time in the IT sphere, wrote many websites, a couple of web services, several online stores and, in spite of all this, they understand that they are not a professional programmer, but only a so-so programmer. No one recognized yourself in this description? For example, I - such! It's about me!
I have been tormented by such thoughts for a long time, and lately they have hardly allowed me to live in peace. All this stupid ideology about who you are, who needs it, what is unique, what you can do, etc.
So what am I talking about? I'll tell you more about myself and my problem, and you dear Khabarovsk people, maybe you will see, and maybe not, yourself in a similar situation!
About five years ago, I started website development. Made sites completely from scratch. Developed design, verstal, sculpted flash drives, programmed, etc. Now I don’t want to talk about all my versatile “abilities”, because my confession is about programming only.
In those days, I began to learn PHP from
Koterov’s book. This allowed me to quickly enter the topic, get acquainted with the language, syntax, features (after studying at the university, I knew C ++ superficially, Assembler, Basic - well, in general, I had some idea of ​​what programming is, I learned on IT specialties ). Reading the book, began to write. Created the first simplest site. There is an index file index.php, in which the simplest code takes the parameter “page” of the address bar (for example, index.php & page = main) and includes the same page from the templates folder (main page) in index.php. It was my first php site, which supported loading different pages into the main index.php template depending on the parameters passed in the address bar. The page that was loaded already had the necessary content.
')
Next, I raised my knowledge of SQL (remembered university courses), and the same book by Koterov (if I am not mistaken) helped. This was my second step with creating dynamic websites. And so my next site was similar to the first one, with the exception that the content was no longer contained in the loadable pages, but was taken from the database. And in the page itself there was a function that made a request to the database, retrieved data and displayed them on the page.
The third site has become even "cooler." Now there was an administrator part, through which the admin could edit the content in the database.
As a result of such ordeals, built entirely on self-study, I created my CMS system. More precisely, to say a primitive similarity or a parody of a CMS. Then I improved it. A couple of three years brought to mind many nuances. Corrected errors in future as well as in existing projects. Tried to patch security holes.
As a result, I have my own system, on the basis of which I have developed several dozen sites. The system is working. All is well! But one moment does not give rest. No matter how much I wrote in PHP, no matter how many websites I made, I never grew up to be a professional, strong programmer. There are reasons for this. As I wrote above, I deal with many aspects of web development - as a typesetter, designer, content manager, flasher, programmer, SEO specialist, etc. The company in which I work is not IT. This is a company that has its own retail outlets (smartphones, accessories, etc.), wholesalers, several online stores, etc. The company has several sites and a couple of web services that I actually do. I developed them, I support them, I develop them. I am in my company and a designer and programmer, etc. all together. But now is not about that ...
And the fact that in the end I did not become a professional programmer did not develop this orientation in myself. Also, due to the fact that I never worked in an IT team, I had nowhere to gain experience (except for Ineta, with whom I, however, began to be friends quite late). All that I have achieved - I came to this myself (of course, with the huge help of books and Ineta). This is both a big plus for me and a big minus. Plus, it is obvious - if he himself managed to figure out in many ways, to develop certain qualities in himself, then apparently I am worth something. A minus is that it has not received development in any particular single area. Did not become a professional in any of the areas. And at the moment I am talking about this in the context of programming.
So I stopped at the fact that I developed my own engine, on the platform of which there are several dozens of websites created by me in the internet.
I understand that if an experienced programmer looks into my codes, he will spit. He would call me amateur, bydlokoderom, pornographer and other bad words.
Sometimes the absence of a language at a rather deep level gives rise to complex, illiterate and unaesthetic ways of solving certain programmer tasks. This is about me! I suspect that many things in my functions and classes are implemented so clumsily that ... I don’t want to talk.
I read blogs, forums, articles and see how real programmers communicate. I meet a bunch of unfamiliar terms, a bunch of solutions that I can't figure out or just talk that I can't support.
Recently in this
post I found a link to a test for programmers, I began to solve it and already on the first 5 questions I realized that I didn’t score 100 points (when the programmer gains 200 there as an average lousy). And this once again proved to be a confirmation of my words. Actually, this was the last straw that pushed me to write this article.
One verdict - I'm not a programmer! More precisely, I’m a programmer (since I’m a programmer, you can probably call me that at all), but probably a bad programmer. And it gnaws at me very much! Next, I will try to explain what I mean. I have created (I’m not afraid of this word) not one good (I think) website. On my platform in nete now there are several online stores. At the same time, one of them is really good (I will not name names, but this is a fairly well-known store), which has attendance of 4-6 thousand people per day and several dozen orders per day. Brings income of several million rubles a year. There is a whole company working around this store: the purchasing department; order managers; warehouse workers; couriers, etc. The store has a rather complicated structure. The ordering procedure is quite flexible. Many subtleties (displayed payment methods depend on the chosen delivery method; activation / deactivation of certain delivery methods or payment depending on various conditions, such as address, order amount, discount, availability of a certain product in the order, etc.). Flexible discount system (promo codes, coupons, certificates, customer groups, point system, etc. Personal account, order history, order actions (view statuses, print invoices, pay with electronic money or plastic card through an integrated payment system), and many other moments that are not in the well-known CMS. On the admin side, there are dozens of times more functions: a detailed panel for working with orders; the possibility of printing various forms, invoices, etc. (that is, full automation of work, for example, with Russian Post or EMS ); a bunch of useful chips for managers who process orders (reminders, forgotten orders, discounts, etc.); interaction with 1C; statistics; work with pre-orders and many others. In addition to the “shop” part, there are many modules : news, articles, reviews, etc. I’m not trying to praise myself and the store I’ve created, but it’s actually quite “serious” in its stuffiness. At first it was created on my engine, then I improved it many times. As a result, many codes were written very crookedly and not structured in violation of the given architecture. I admit, the code is very mixed with the presentation. If initially the site had a more or less beautiful structure (libraries, templates, etc.), then as a result, over time, after endless additions and postscripts (sometimes in haste), a bunch of “bydlokoda” appeared. Sometimes, in order not to seriously redraw the structure or add any module, I simply added as I could. A stranger probably half a year will understand. In short, in terms of code, I think the site is far from perfect. But, nevertheless, the engine developed by me for several years, which WORKS, is its basis.
I often meet on Ineta such concepts as design patterns, various types of architecture. Take for example the well-known MVC. Honestly, I just recently learned what it is!
I even wondered if my system looked like MVC or any other architecture. I wonder what I eventually created that! In my development I came to some right things or stayed at the level of a primitive person. Maybe someone will even tell me that I did it anyway. To do this, in a nutshell I will describe my system:
There is an entry point index.php. This is the basis of the site. The main template. It contains the site framework. The NC request from the address bar is converted into an array by simple manipulations in .htaccess (mod_rewrite), the elements of which are CNC elements (separated by slashes). The index.php at the very top includes the main class lib.php, which in turn connects all the other classes that are stored in the lib folder. There is a main class class_navigation.php, which actually steers everyone. He takes an array (obtained from the CNC) processes it and “understands” which class needs to be used and which functions need to be called to process the received data. For example, the parameter “news” was transferred to the CNC (i.e., you need to load the “news” page). Then the navigation "understood" that you need to work with the class "class_news". Called the necessary functions of this class. These functions interact with the database (extract data from the database) and perform other necessary calculations. Then, after receiving data from news, navigation calls the desired template from the templates folder and displays the necessary content in it. So, speaking in a nutshell, my system is functioning.
I don’t know whether this is similar to how they write in the 21st century or not. I came to this myself, no one taught me this, so it’s hard for me to understand whether it corresponds to modern trends or not. I even tried to present my system in the form of MVC and it seemed to me that navigation was like a “model”, the other classes such as class_news are “controllers”, and “templates” is a representation. I do not know how far I am from the truth.
In addition to everything, there is one more thing that worries me no less than anything else. Security. Let the sites my curves inside, but from the outside it is not visible. The client is satisfied, he does not care what's inside. In terms of speed, everything seems to be ok too, because it's still not a super loaded project. But security is here! There is always the fear that my ignorance may have consequences right here! After all, do not go to the fortuneteller, it is clear as daylight, that most likely in my web development a lot of holes! I once googled this question. Googled a lot of interesting things. There are all sorts of SQL injections, XSS vulnerabilities, etc. Read how to properly organize the authorization, to avoid problems as much as possible, etc. Many advice then heed and applied them in practice.
For example, in several of my first sites I did not even check the URL entered by the user for the presence of any “bad things” there, for example extraneous http-headers, etc. In my first sites I didn’t check the data entered to users in the forms at all until I found out about XSS attacks. Then he wrote a class to deal with such things. In short, I was a little enlightened in this topic and adopted something, but I am afraid that there is still a lot that I don’t know about and that an experienced programmer can easily break my applications.
Here I am still crying, crying, but at the same time I earn money by creating websites. Sites work. Many of them bring joy (and maybe even profit) to their owners. Many, of course, are already dead (usually the fault of the owners). Some earn good money. Like the same online store, which I so colorfully described. He really brings a solid income and this is my pride. I understand that I made a big working project, commercially successful (pah-pah).
You can reassure yourself with thoughts: do not care what's inside, the main thing is working and not bad working! Someone, of course, says that it works, but this is as long as the load is low or no one has compromised security. But then you can come up with an answer: yes, I agree, if the project becomes even more popular, visits and is active, then all the clumsiness in the code will make itself known. The worse (the illiterate) the code is written, the slower it works. Is not it? But the engine can be modified in connection with the new circumstances. There are bottlenecks, but not so many. Optimize SQL queries, rewrite a couple of functions more competently and truncate! Is not it? This is not some Facebook! It's all down to earth! Well, about security - even easier. Created a precedent, for God's sake, patch the hole! In the end, hire a good scrambler to test your site for strength, then use the data, work, correct! Reasoning this way, again, it seems like it turns out to reassure itself that all is not so bad.
But here, damn it, anyway something is haunted! The fact that no matter what kind of mountains it does, what it wouldn’t work out, but the specialist from me (the programmer) is just the same anyway! In the architecture and codes of this successful project, everything is very sad and clumsy. And a good programmer would just shake his head if he saw my codes, and I told him that I was a programmer.
And I understand that if I want to get a job as a programmer (I, of course, would hardly want, because programming is not my main occupation and not the most interesting for me, but if purely hypothetical), then at the first interview I will fall . The first more or less difficult question put me in a dead end. And then explain to the employer: “look at this online store, because I wrote it from scratch, it works, it is convenient, users like it, it brings income to the owners,” they either don’t believe it or they don’t understand anything at all: “they say for such things - dude zero in programming, but muddied this kind of like not even a bad project, something here is not clean ... "
Yes, in my firm I am a king, a superspecialist, I have no replacement. All knowing, all able. But it is necessary to get into the programmer get-together and I will immediately be promoted. For the management of my company, I am cool, but for an ordinary good programmer, I am no one. Not to mention the leadership of some IT-firm.
Why do all these questions torment me so much? Maybe you need to calm down and not to bathe? To think not about how “bad in the codes” you are, but about how good the result is? After all, I have no plans in the future to go to work for programmers in any company. I have slightly different plans ... But what the hell is not joking. How life still turns, no one knows. Yes, and years are not enough for me. Not a student. Thirty is coming!
So what's the result? It seems there is no reason for panic, because no plans to become a programmer, but the whole thing in psychology. Whatever one may say, I have been doing this for a very long time and managed to do a lot and therefore it is very disappointing that I cannot call myself a programmer of a pro. So who to call? Dropout?