V
V
Vladimir Sokolovsky2015-12-11 10:28:18
Python
Vladimir Sokolovsky, 2015-12-11 10:28:18

Search for a solution to a problem that is not similar to the previous ones. Is there an ideal algorithm?

I'll start by saying that I have already raised more than one wave of junior programmers over the past seven years. I think I can work with them. Now these people work not only with me, so this is not only my opinion. In 100% of cases, normal specialists are obtained, who started from the trainee level.
Faced a big problem in teaching somejunior programmers who have been "in work" for a great six months. When faced with a problem that is not very similar to the previous problems, they cannot find any solution. That's right, they can't. These are not some scientific tasks, these are real tasks on real WEB projects. Other juniors solve such problems in less than an hour. As a result, the description of tasks comes down to a complete writing of the solution algorithm, including the names of methods and variables, and sometimes simple code dictation. Sometimes just a little push is enough. But without such a "push" the work stops, people do not get to start working on the task on their own.
There are no problems with the technical base, the guys understand and know everything perfectly. But stupidly "hang" when they see something slightly unusual. Communicating with each other, sometimes they push some completely wild theories. Similar tasks are solved well, the lack of logic is not visible, the problem is something else.
The meaning of this question is to collect as many options as possible and try to create an ideal step-by-step algorithm for solving almost any problem and hear as many opinions as possible on this issue. Thank you!

Answer the question

In order to leave comments, you need to log in

10 answer(s)
D
D', 2015-12-11
@Denormalization

I often come across such people. These are "programmers involuntarily", as I call them.
These people are not interested in programming as such, they are interested in their salary.
Usually such "programmers" memorize the base + a small amount of typical solutions, and with this knowledge they become employees. They simply do not want to learn anything, because they are not interested in this area.
It's hard to do anything with them. No matter how much you hammer into them, they will not become smarter from this, and will also continue to be stupid on non-standard tasks.
If you want to make their delicate brains stir, by no means give them a solution.
Let them think for themselves, let them look for a solution. You can only give tips in which direction to dig, but in no case should you do this:
When you tell them the solution to a problem, they don't learn anything. They stupidly memorize the next decision, perhaps without even delving into its essence.
Make these people THINK. Ask leading questions.
Let them make a crooked decision, which you then force them to redo, but they will have at least some knowledge left in their heads.

D
Dmitry Kovalsky, 2015-12-11
@dmitryKovalskiy

Here you are like an experienced programmer, Senior. But you want to find the "ideal" algorithm for solving any problem. I think that if there was a solution, the P / NP problem would have been sorted out long ago, and a million dollars would have been drunk away. Unfortunately, the IT industry, due to salaries above the average throughout the labor market, attracts people who are not even familiar with the very concept of an algorithm. Clever experts say that "mathematics is not needed", and "higher education only gets in the way." As a result, we have a certain layer of people who have read a couple of books on syntax, solved the problem of bypassing the horse and already consider themselves programmers. With enviable regularity, I find questions like "I'm 16 years old, how to make money as a freelance programmer" on this resource. Yes, perhaps the person is Bill Gates or another industry genius, but then he would hardly have asked the question here. Yes, there may be a different financial situation and people are forced to push for earnings. But the result is an almost complete lack of training in the field of algorithms, architecture, design patterns, and so on, and you already want a good pay in vain. I myself am not without sin in this respect. I wish you patience and talented juniors. But they will be in the minority.

V
Vasily, 2015-12-11
@Foolleren

Let's think apart from programming.
1) in order for a person to do something, he must be forced, no matter what and how, hunger, rent, a desire to show off (psychologists call this self-realization) or get drunk on Friday evening
2) in order for a person to do it qualitatively, he should like it, here is the second point problematic if a person does not like what he is doing, he thinks about it only in the process of working on it, (or even does not think at all), naturally this causes a stupor in an unusual situation when you need to put the whole brain into work, and not think about your own, and my hands are riveting something there,
but let me tell you how I solve my tasks that I have to solve even if I don’t like them
1) you need to decide what should be the output (if I don’t understand what I should get, I can’t do it) therefore, the more accurate the description of the result of the work, the faster and better it will be done.
2) It is necessary to decide on the input (tools and materials - in the case of programming data)
2.1) Voila! we already have a black box. We have an entrance and an exit, but there is no filling.
2,2) The easiest way is when this is a typical task - everything has been solved before us and more than once - you can google it, and sometimes even copy-paste it. -> end
3) After some time asking Google, it turns out that the task is not so simple. This is where the most fun begins - the process of creativity, which is difficult to describe, but I'll try.
3.1) To begin with, since it was not possible to immediately fill our black box with one figure, we divide it into two smaller ones, as a result we already have two black boxes with an unknown input and a known output, and vice versa.
3.2) We are trying to connect them by searching for similar solutions in the head or on the Internet, well ... roughly speaking, maybe someone has already done something similar, but with other materials or tools, and what can be done with the available tools and materials. (you can dig from either end or from two at once) we find a bunch of black boxes.
4) Checking how our sets of smaller black boxes fit together, did it fit? -> end,
4.1) do not add up? We take the most suitable set of black boxes and look at their contents
4.2) we find the cause of the inconsistency, try to remove the excess or look for another black box that will allow the first two to dock, go to point 4,
summarizing
. First of all, motivation is necessary to interest a person, show him such a way in which his quality work is a good means of achieving him goals, if it works out, he will start doing everything himself. Further, he will only need to suggest the direction, so that he does not go too far off course.

V
Vladimir Martyanov, 2015-12-11
@vilgeforce

A universal algorithm for solving any problem... There are no miracles.

T
trevoga_su, 2015-12-11
@trevoga_su

maybe you just need to put a normal TK? people are stupid, not understanding what you want to get from them in the end.

S
Saboteur, 2015-12-12
@saboteur_kiev

Ordinary situation. 90% of people are stupid.
Programming is a profession like any other, and you don't have to be smart or pass an IQ test of 100+ to program. You can just memorize keywords and syntax, and you get a jun who is able to solve only what he was taught.
It's just that earlier in IT there were fewer such people, now there are more.
Read the article about "functional illiteracy" - it describes well what is happening. And this happens because very few people take care of their children. They are brought up, which basically looks like washed-fed-go-play. And we need to develop. So that the brain learns to solve problems from childhood.

M
MonkAlex, 2015-12-11
@MonkAlex

Not strong in python, but in most cases I need experience in solving similar problems.
In the sense that I need some kind of core, on the basis of which I will begin to build everything else.
I need system to system synchronization - I'll think about the storage system in both systems and how to convert.
We need a beautiful report - I'll remember fastreport (not the best memory, but I didn't saw others).
You need a cross-platform utility for collecting logs - I'll think about python or stupidly about some kind of grep.
Another thing is if you need some unfamiliar topic that I have not encountered, such as writing a server in a client-server model or riveting a simple visual editor of anything. I won't be able to figure out how to do this, because I don't know a single editor control to even roughly understand where to dig.
It's about experience and nothing else. Of course, Google will help with simple questions like "how to generate and transfer a DTO from client to server", but Google rarely helps properly with questions like "how to write a server application for %name on %OS".
And without experience and Google, only mentors remain.
UPD: if I misunderstood the question, then give examples of what they can hang on. Because getting hung up on what can be done in an hour is possible only with a very vague wording.

K
kstyle, 2015-12-11
@kstyle

It is necessary to teach to turn on the brains without cheat sheets (a similar task actually contains a hint). And you propose to create an ideal cheat sheet instead of looking for an ideal teaching method that guarantees the inclusion of brains in six months. It will not work to replace the teacher's work with instructions.

M
mamkaololosha, 2015-12-11
@mamkaololosha

A universal algorithm for solving any problem is experience. The more problems you solve, the more you can solve. Your people have no experience. When will be - will be able to decide. And now be patient.

V
VoidVolker, 2015-12-13
@VoidVolker

It's a very simple algorithm actually. These people clearly do not have enough motivation to turn on the brain and solve a new task for them. The point is not that they cannot find a solution, but that for this you need to turn on the brain and think. If a person is lazy or incapable of thinking, especially creative thinking (and finding a solution and developing a new algorithm for oneself is still a creative process), then nothing will help him except a whip and a stick.
In this case, it is necessary to drive these juniors into a dead end and, under the pressure of stress, make them work. For example, give just such a new task, lock him up in his office and give him an hour or two: all the time that he spends more than an hour or two searching for a solution is deducted from his salary. Or, for example, reduce the premium. And let him decide at least a whole month, but he will decide. I'm sure most will quickly figure out that it's better to turn on the brain and strain a little than to suck your paw or look for a new job later. And what about those who failed to solve such a new problem, even when a fried cock pecked in their ass... I think the answer is obvious - let them look for a profession based on their skills and abilities. For IT and programming is a daily study and assimilation of new knowledge. Without these skills, a person in IT has nothing to do. By the way, programming according to the severity of labor is harder than mining in mines.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question