Answer the question
In order to leave comments, you need to log in
Do you really know how to program?
The question is partly provocative, the essence of the question is what does "know how to program" mean,
does it mean "to remember a lot of functions" or does it mean "to remember and know what and where to search in Google and understand everything"?
just the word "Remember" is the most basic thing in this business, but how can you remember so many functions and several languages, when applying for a job there is already a high entry threshold, does every "programmer" remember all the functions, for example, remember the main HTTP headers (often this you need), but how many functions in one language and how many parameters do you also remember everything? And how many different SQL queries do you all remember too? But what if the function is just outdated (well, obviously, google the new one already) ... learned the basics of html, css, js, php, then learn how to configure servers like nginx or apache (configuration files and their syntaxes), then learn sql syntax, is that all does everyone remember this?
But I read different stories of programmers who change jobs and they already require other knowledge, frameworks for example, but what if a programmer knows one framework then he needs to retrain to a new one,
well, it’s physically neither time nor memory is enough, and every programmer (my opinion ) understands that it makes little sense to memorize many functions and you can always go to Google.
For example, it took me (timed) 1 hour plus or minus to write a simple function that will make queries to the database and display the results in html , I connected everything through js, html, PHP and naturally along with sql, just to remember what and how to do, it really took 1 hour, there were tags like, well, who knows, he understands that all this is also not done in 1 minute, it’s physically impossible, at least you need to remember to sit, but of course I don’t know how you are, maybe everything is different with you, you remember everything.
The essence of the question:
do you make notes of some kind important to you, somewhere in text files, in order to go in to peep, the so-called cheat sheet?
Answer the question
In order to leave comments, you need to log in
do you make notes of some kind important to you, somewhere in text files, to go peek , the so-called cheat sheet?
A very revealing question.
And very, very, very revealing answers.
They clearly show how the layman imagines programming:
to remember more "functions", in the advanced version - to write down on a piece of paper, and at the very level of God - to be able to use Google. To search for these very functions.
The word " algorithm " never appeared in the question or in the numerous answers .
And I also thought it was such caustic sarcasm when I compare the foot mass with the artists. Since they do not program in the classical sense of the word, they draw, diligently displaying the memorized commands in order. Well, or collect figures from Lego. I looked in the video course on YouTube in what order to upload them - and that's it, "Mom, I'm a pragramist!"
And the only way to solve problems with the received "code" is to dump it on the toaster in its entirety, accompanied by the eternal question "tell me what the problem could be." Since the concept of debugging for artists is something like the microflora of Venus, it exists somewhere in a parallel universe.
But it turns out not only the infantry mass, and not sarcasm, but the harsh truth of life. On the whole toaster for half a day there was not a person who even roughly imagines what programming is. Some artists.
In general, I thought here that the difference between a programmer and such a "draughtsman" (as I was rightly reproached in the comments, I offend real artists with my comparison) is very simple - the draftsman is afraid not to remember all the functions, and the programmer writes his own . Once you've written your first function to avoid routine repetition in a standard operation, you've taken the first step towards becoming a programmer. And oops - you can already forget a dozen standard functions, since you already have only one that does the work of those ten. in fact, the programmer's job is, in a sense, not to use (and - accordingly - not to remember) standard functions. It has a library of its own functions
does it mean "remember a lot of functions" or does it mean "remember and know what and where to search in Google and understand everything"?
The question is a clear example of my assertion that "teach" is a bad word. In our brain, it is associated with memorizing something. That's just memorizing something to master it will not work. But nevertheless, the word "learn" is extremely common: people try to learn programming, learn languages (C# or English), and we are put on to learn the multiplication table from elementary grades. You don't have to learn. It's useless. Poems can still be taught, understanding the author's thoughts will not give it, but memory will train. But programming, languages and the multiplication table do not need to be taught, you need to understand. True, many primary school teachers themselves do not understand the multiplication table, but stupidly memorized it, and continue to pass it on to students, nothing has changed since the 19th century.
You can learn the syntax of a language, but it's just a husk, an abstraction, a set of rules on how to transform that language into another. Without understanding, knowledge is absolutely useless. Well you know that exist in some conditional language if, for, while. But can you make some program out of this without understanding what it is and why. And memorization will not give you this understanding.
You can learn the functions of the standard library, but this is again husk. These functions are written by someone, often in the same language that you use them in. But without understanding what they are doing, you will not be able to create programs with them.
How are you going to learn how to write algorithms? Yes, many now have the opinion that this skill is not needed, that all algorithms have already been compiled, but this is an illusion.
And the skill of problem solving, how to memorize it?
Well, I’ll still answer the question, what, in my opinion, is the ability to program.
Firstly, it is the ability to solve the problems of people or organizations using computer technology (computers, smartphones, microcontrollers, etc.), automating some activity.
Secondly, this is the ability to compose an algorithm leading to the solution of a certain problem, that is, to the automation of some activity.
And only in the third - to write this algorithm using various tools, such as programming languages, libraries, frameworks, etc.
That is, everything that you are going to learn is just tools. Tell me, will what you memorize make you a carpenter, what does a hammer look like, but what does a planer look like? On the other hand, a carpenter may not know how to work with a particular machine, but will quickly start working with it if you give him the documentation for this machine. It's the same with programmers.
To be able to program is to be able to solve tasks quickly and efficiently by writing code.
And how much of what you remember or don’t remember is not so unimportant if you do your job well. If cheat sheets help you solve problems - write cheat sheets, if something else helps - do something else.
I don't think at all that memorizing keywords and function names, even from the standard library of any language, can make someone a programmer. Moreover, languages and libraries tend to become obsolete, and new languages come to replace them. I started with BASIC, then Fortran, then C, then Pascal, then pluses, then C-sharp, then JS, then Python. Of course, I don't remember half of what I knew. But as before, I think I have the right to call myself a programmer, because, albeit with great difficulty, I can write in pure asma, moreover, having datasheets, on any platform, but, of course, in real life I don’t do this in practice never. However, knowing how your program code ends up executing, what exactly happens in the processor, how logic gates are assembled from transistors, how these gates are then organized into processor blocks, how data is stored in memory, how the TCP / IP protocol stack works, allows me to consider myself a programmer, although I do not have a formal education in this area. In addition, this knowledge allows me to apply almost any programming language to solve problems. Yes, of course, I don’t know the intricacies of many languages, and many specialists will simply give me a “nut” when it comes to writing code for speed. However, over the years of practice, I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. how these gates are then organized into processor blocks, how data is stored in memory, how the TCP / IP protocol stack works, allows me to consider myself a programmer, although I do not have a formal education in this area. In addition, this knowledge allows me to apply almost any programming language to solve problems. Yes, of course, I don’t know the intricacies of many languages, and many specialists will simply give me a “nut” when it comes to writing code for speed. However, over the years of practice, I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. how these gates are then organized into processor blocks, how data is stored in memory, how the TCP / IP protocol stack works, allows me to consider myself a programmer, although I do not have a formal education in this area. In addition, this knowledge allows me to apply almost any programming language to solve problems. Yes, of course, I don’t know the intricacies of many languages, and many specialists will simply give me a “nut” when it comes to writing code for speed. However, over the years of practice, I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. how the TCP / IP protocol stack works allows me to consider myself a programmer, although I do not have a formal education certificate in this area. In addition, this knowledge allows me to apply almost any programming language to solve problems. Yes, of course, I don’t know the intricacies of many languages, and many specialists will simply give me a “nut” when it comes to writing code for speed. However, over the years of practice, I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. how the TCP / IP protocol stack works allows me to consider myself a programmer, although I do not have a formal education certificate in this area. In addition, this knowledge allows me to apply almost any programming language to solve problems. Yes, of course, I don’t know the intricacies of many languages, and many specialists will simply give me a “nut” when it comes to writing code for speed. However, over the years of practice, I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. this knowledge allows me to apply almost any programming language to solve problems. Yes, of course, I don’t know the intricacies of many languages, and many specialists will simply give me a “nut” when it comes to writing code for speed. However, over the years of practice, I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. this knowledge allows me to apply almost any programming language to solve problems. Yes, of course, I don’t know the intricacies of many languages, and many specialists will simply give me a “nut” when it comes to writing code for speed. However, over the years of practice, I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes. I have accumulated a good repository of almost ready-made solutions for almost all occasions, which were written not by Vasya from stackoverflow or github, but by me personally. If you like, my "Projects" folder is my notebook where I keep my notes.
Everyone is well aware that human memory is imperfect. So, each of us can forget something.
It makes no sense to sit and memorize all the methods, classes and abstractions. It is better to write code and understanding will come over time and you will better remember their purpose. Of course, you must know the purpose of libraries, their advantages or disadvantages, in order to be able to apply them in your work if necessary. And of course, no one canceled the documentation for these libs. You need to be able to read technical literature in English.
The ability to solve the task, abstracting from the code, in my opinion, is the main task of the programmer. Writing code is only part of what a developer should be able to do.
Are there any basic knowledge that you should have depending on your level, specialization
In general, I sometimes confuse json_encode and json_decode in php.
The ability to program is, first of all, a kind of ability to think abstractly. This is an opportunity in the mind to compose a sequence of actions leading to the desired result and write it down in a programming language.
On top of this, knowledge of data structures and algorithms and a good knowledge of the programming language, its libraries and structures are added. But all this knowledge is secondary. You don't need to know all this by heart. It is enough to have an idea that the language has vector for arrays and set for sets. Specific functions can be peeped in the help or Google.
As you gain experience, these standard parts of the language and algorithms will become a base and be remembered.
But the main difference between those who can become a good programmer and the rest is the ability to think abstractly.
All this is the noise of crackling and flapping wings!
The main ability of a programmer is the ability to algorithmize a task!
And the second ability is the ability to write for people !!!
That is, write in such a way that your programs do not annoy the user,
but create a comfortable environment for him to communicate with the machine.
And this skill comes with years, with experience.
Without these two abilities, you cannot become a Programmer,
but you can only become a coder, which, unfortunately, is now the majority.
I try not to keep a lot in my head so that my head is clear, mostly it’s Google and pieces of the previous code, of course, for many years an effective system of approach to solving any customer problems has already developed.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question