S
S
Semisonic2012-11-25 14:03:25
Programming
Semisonic, 2012-11-25 14:03:25

Formation of a programmer's outlook and motivation for self-study among beginners?

Hello gentlemen readers.
I would like to turn to your experience and ask for advice on the well-worn topic of teaching beginners to program, but from a somewhat specific position. So let me give you a little introduction first.
My friend has a niece, a 15-year-old ninth grader. The child is smart, able to be diligent, but somewhat uncollected and undisciplined. A year and a half ago, I saw a little stray I wrote on my knee for my own entertainment - a utility for automating aiming in one simple flash toy - and her eyes lit up, “this is cool, I want to be able to do that too.” I started studying with it, giving it some basics, as we were once taught in computer science: the schematic architecture of a computer, number systems, basic syntactic elements of programming languages ​​using C as an example. But with such an approach, when instead of “do cool and interesting” I had to learn to convert numbers from the decimal to the binary system on a piece of paper, the child's motivation quickly faded and the classes had to be stopped.
A year passed, she went to the 9th grade, they began to learn Pascal, the knowledge on number systems gained a year earlier came in handy and added inspiration, and it seems like the programming process is pleasant. Plus, I was inspired by another craft of my performance - a bot for winding up votes, which I made for some kind of competition. He turns to me again, "would you mind programming with me again." The child has become more mature, smarter, and most importantly - at the moment he has a desire. This time I want to do everything right.
And now, actually, to the essence of the issue.
On Habré, topics such as what language to learn programming in or what language to teach at school have already been discussed many times. And more often than not, the most popular answers are advice to teach not a language, but algorithms.
This is all great, but this approach is not for everyone. First of all, those whose motivation for learning is strong and who at the very least imagine the ultimate goal. And for people whose interest in programming is driven more by curiosity and the wow effect of someone else's work, this approach is more likely to kill the fuse and instill a feeling of boredom: "I just wanted to learn how to make video games."
computer-science-major.jpg
Therefore, what I want to do - and where I need your help - is to show the beginner the world of programming in all its diversity. So that he knows that there are desktop applications with beautiful interfaces, server software without interfaces at all, programming of microcontrollers, databases, mobile devices, web applications, etc., and that all these different programming application areas require a different approach. So that a person not only learns to distinguish a programming language from a compiler, and built-in language features from libraries, but also learns that programs are not always compiled in principle, and what are the pros and cons of this fact. And at the same time, he felt inside himself which approach is closer and more interesting to him and what goal he wants to strive for.
That is, I would like to give a look not deep into the development process, but in breadth - to the entire programming industry as a whole - and of course with good and accessible examples of how each segment of this industry is specific. For example, for programming microcontrollers - a small piece of code with explanations "and this is a special command for a particular piece of hardware that does this and that", and for the web - a piece of similar size with explanations like "with this function we request the web -page at such and such address. And with some working examples - so that you can feel into what sort and scale things turn into approximately the same portion of code in terms of volume. Something like this.
If you have ever come across resources with information submitted in this way, please share your findings. Or even your recipe for action - if you have ever solved a similar problem. Feedback on any positive experience involving intelligent, but not very motivated people in programming is very, very welcome - even if the method you choose is different from what came to my mind. After all, it may be that the scheme described by me is good only on paper, and someone's experience has already shown that some completely different method works well for beginners.
If suddenly you have a successful experience of instilling a love for programming to adults who have never done it before, I also ask you to share it. Because in this case, the main problem is not the young age of the trainees, because in my opinion at 15 you are already able to understand almost any concept, namely the creation of motivation for further independent development.
Thank you!

Answer the question

In order to leave comments, you need to log in

11 answer(s)
M
MrMig, 2012-11-25
@MrMig

I have a couple of success stories, despite my age :)
A few years ago I was writing bots and just utilities in the form of userscripts. And he developed a script with a bunch of useful things for vk.com. On the basis of this script, I received several interesting acquaintances and valuable experience.
So, closer to the point. Once, a 19-year-old guy knocked on my PM. It turned out that he was very impressed with the very possibility of "expanding sites" and adding functionality. He asked me to tell him how it's done. The guy had only a school education, he didn’t enter a university or a vocational school, he didn’t have a job (there were personal reasons for this).
His training started with javascript. I took him to the "team" - to help me with the script. For my part, I explained to him the basics of programming with specific examples: algorithmic thinking, loops, conditions, simple algorithms, etc.
Most importantly, all these concepts were visual . Having a minimal understanding of the Javascript API in reserve, not knowing what CSS and HTML are, a person, nevertheless, could see the result of his experiments , and this result brought some benefit, and was not another hello-word.
Now a friend works as a javascript programmer in a certain Moscow company. In addition to javascript, a person is interested in all related technologies - serverside languages, layout, desktop applications, algorithms, and the list goes on.
Experience based on experiments with friends shows that the following pattern works for the majority of those interested:

  1. Determine what exactly hooked the person (what technologies should be introduced to him in the first place)
  2. Introduce him to the basic concepts (cycles, variables, conditions, drawing up algorithms)
  3. Give him a tool for experiments - a simple language in which you can write things that are useful for the person himself, with a simple API.
  4. Show a person a real example of code (correct his code) and explain thoroughly the course of his thoughts during development or design. At the same time, you will first answer the questions “how?”. Gradually, they need to be completely reduced to “why?” questions. The question "how" a person should decide for himself.
  5. Minimize the idea-implementation-result cycle . It is very important! It's fuel for motivation.
  6. The main question is what idea to implement. It depends. It is best for the trainee to come up with what problem he will solve. If motivation is not based on the thought “I urgently need money, so I will become a programmer” or other thoughts about the future, then writing “template” programs will be at the expense of motivation.
  7. As soon as a person learns to sculpt the code on his own, he will begin to go beyond your training. Here it is important to teach a person to receive information (yes, not everyone knows how to use Google and stackoverflow. And don’t forget about books)

  8. It's subjective, but this approach works for me. I am a web programmer, and the "guinea pigs" gravitate towards these technologies.
    But in general, no one likes a dry theory. Seeing and “feeling” the result is priceless :)

U
un1t, 2012-11-26
@un1t

Oh, this academic approach ...
All this theoretical crap is not needed at this stage. You need to learn from simple practical examples. For example, we want to make a simplified version of Arkanoid. To begin with, let's simplify it to such an extent that the ball flies across the screen and is repelled from the walls. We sit down and write. No number system or computer architecture is needed here. All that is needed here is the concepts of variables, cycles, and some kind of API for drawing a simple figure. It is necessary to select an example that will be interesting to the student, it may be something else.

H
Huey, 2012-11-25
@huey

Here is the Russian siteIt's just there for students. What can I say about creating a concept for further self-development. One of my teachers started his course with hh salaries. Another said that console applications are cool. I can say that if you want a motivated approach at the age of 15, then the girl clearly needs people around with the same interests. Send to courses and not the fact that they will give a result, then send again and it would be better if her peers were there. Another very important point is the rooting in the mind of the fact that it is really necessary that this is "Cool and Cool". Let her look at the social network, listen to Jobs' speech, and send her an invite to Habr, she can spend 30 minutes on it instead of one VK. A must read for anyone just starting out, I can recommend the Head First series to people who don't fall asleep while reading. And the fact that you want to show her the whole world of programming is commendable, but just let the sachala understand the simplest concepts. Variables, loops, arrays, functions, OOP. Many consider js to be the ideal for me, it was python, then js. I will now say my purely IMHO because I can be very wrong. First, let them learn how to mark up a page (html, maybe it’s already advanced for you), for motivation, you can say that you don’t know how it works. And since it's just that she learns quickly, and this will motivate her for further education. Then styles (css) are also not very difficult here, and you can analyze a lot of beautiful examples. Then you can already try to give js with the basic concepts. After that, you need to explain the concept of relational databases and talk about, I don’t know, php, python, ruby on rails? Generally show the concept of server programming. After that, you can try some kind of python + pyqt + sqllite on the desktop. You still wanted that type of microcontrollers. For example, the integrated programming environment ICS08GPZ is suitable for you, we had labs on it.Of the site where you will find the download if necessary. The most important thing is not to try to give everything at once. Explain the whole concept that you will need to go through and then slowly but surely go through each stage.

L
LuciferOverLondon, 2012-11-26
@LuciferOverLondon

Based on the experience of self-study, I personally deduced for myself one rule, which, it seems to me, is neglected both at school and in universities, and in independent attempts to master anything.
Need feedback. You need to understand what you can come to as a result, and where you are now. Preferably even before the first line written and the first book read. And in the process we check whether we have moved forward and what we can do now. And this is not in the diary and not in the head of the teacher, but in his own. Otherwise, there is no understanding of what is happening and there is no motivation.
Unfortunately, I realized this process only in the tenth year after they stopped teaching me and I began to study on my own. Therefore, I can only assume that it is worth telling what the knowledge of algorithms leads to, for example, and what the study of website usability leads to.
Well, then - in web programming, for example, I absorbed all the literature until I began to feel whether the next book gives me something new or not. And practice, yes.
In any case, a person will not program well and with interest because he reread the entire headhunter and monster.com, meditated on numbers and requirements for Java programmers, and learned Knuth. If suddenly he is hooked by a fruity loop, in which he will figure out on the second day which knobs to turn the oscillators for what, then this is a musician, and only then anyone else.

N
Nikolai Turnaviotov, 2012-11-25
@foxmuldercp

Try to go through this list Here is a link to several solutions www.zdnet.com/blog/btl/programming-resources-for-kids-101/65932
Maybe in the answers to this question you will stumble upon something interesting habrahabr.ru/qa/ 29023/
It's just that I once started with BASIC, Pascal in college and C passed me by, to programming as a hobby after 16 years of Windows administration and 7 years of Linux, I returned only at the beginning of last year - C# - WPF, WinForms, last month I am actively learning asp.net mvc4 on the example of a home accounting site.
Maybe the girl will be interested in writing some toys, maybe websites - catalogs,
Try to write some useful thread with her - an alarm clock hanging in the tray - a reminder, the same expense management program
let her see what it will be easier for her to mess around with - I have a girlfriend who was fond of mathematics, after which she went into 3D and modeling all sorts of beautiful fractals.
A friend from Chernivtsi has a daughter who actively writes websites.

I
Ivnika, 2012-11-25
@Ivnika

Check out this O'Reilly book - E. Stillman, J. Green - Learning C#. Including C# .NET 4.0 and Visual Studio 2010 (for example, you can find it here: rutracker.org/forum/viewtopic.php?t=4167432 )
I really liked the approach in the book, instead of the traditional “output to the hello world stream”, everything is much clearer and more interesting. Those. The reader is immediately involved in an interesting work that gives a visible useful result. Plus, I liked the design and presentation of the material.

W
Webfave, 2013-11-27
@Webfave

I teach computer science for grades 8, 9, 10 at school. Of course there is a difference in the education of schoolchildren and students. But for me it's not big. The bottom line is that you can give everyone the same material, only schoolchildren in a simple form with simple examples, and students can be given more complex forms with complex examples.
The most advantageous option is:
Find out what is interesting for the trainees and analyze these examples in practice. And so that there is more practice, during which you supplement the theory. Then the theory is better perceived and assimilated.
wow effect. You do something and immediately see the result.
You can tell students as much as you like what the Internet, ip, protocols, and other theory are, all the same, the result will be deplorable. If the student has an interest, desire, aspiration, then he himself will finish everything that is required in the course of developing something interesting.
For example, learning the blind typing method on the keyboard. It seems simple, but at the same time boring thing. How can you generate interest here? Easily!
1. Students are given real life examples. For example, do you use social media? Chatting with friends? (Questions are asked to find out interests and so that the student answers positively to all questions). And in response, examples are given of what will be affected if the student learns the blind typing method.
2. Use the gameplay. Game and competition. there is a site clavogonki.ru, it is shown as an example. That you can play there, you can buy cars and develop. How to buy? Very simply, the better you print, the more money.
As a result, from the first lesson, the students' eyes light up, excitement, they begin to compete. They come running to the second lesson to tell who has which car and what results. And of course, the result itself - from a non-blind method of 50 characters / min, in a week they are already typing with a blind method of 120-160 characters per minute.
The most surprising thing is that while playing with my students, I accelerated from my 200 cpm to 470 cpm (blind typing) in a month (5-10 minutes a day).
When I was taught the blind typing method in my first year, the first 1-2 weeks were quiet horror. Sit in Word and type. The boring stuff was the same. The only thing that fueled interest was the competition between classmates and the teacher. All.
Basically, learn as you play. :)
And what is now in the school computer science program is a quiet horror. For example, to create a website with the help of Word ... Or, first, what is a database, then Pascal, then what is WWW.

H
hryx, 2015-11-11
@hryx

To motivate the development of a programmer's view and the independent further development of adolescents, I recently opened a whole site dedicated to this labyrinth.3dn.ru . He is still very young, he was born a month ago. I want to try to get everyone into programming with a simple motivation - a game! Psychologists say that the game is the best motivation. But the game is not simple, but a virtual constructor, where anyone can create their own labyrinth game and play it alone or with friends. Read more, who are interested, on the site...
Personally, I was motivated in childhood by programming very simply, also by playing.
Once upon a time, in the magazines "Technique of Youth" of the 80s, various game programs for programmable microcalculators such as MK-51, BZ-34, etc. were printed in each issue. As luck would have it, my father had a programmable calculator, but BZ-21, for which, according to the law of meanness, there was not a single line of code in the magazines ... But what do children want? That's right - play! So I was no exception. I also wanted to, but I could not - the programs did not fit. The elbow is close, but you won't bite. There is a program, there is a calculator, but you can’t play! That's motivation! This prompted me to start trying to understand the code in order to remake it for my calculator model - this is how I learned the principles of algorithms! Then, having studied the BZ-21 instructions, I realized that I was no longer interested in the games that are in the magazine, because I know how to create my own! And the process began - I began to invent and write games for the BZ-21. I wrote a couple dozen in total and it's time to study the basics of BASIC at school ... And what do you think? It turned out to be elementary for me. Even then, the syntax of the language was not fundamental for me, because I understood how to create an algorithm. As a result, by the end of school, I mastered BASIC and Pascal. I already easily mastered C++ at the university, where already in my first year I wrote my first checkers game under DOS... Here is the story of my motivation... Then there was OpenGL under VisuaL c++... Even then I understood (when I tried) that creating a game is more interesting than playing it! As a result, by the end of school, I mastered BASIC and Pascal. I already easily mastered C++ at the university, where already in my first year I wrote my first checkers game under DOS... Here is the story of my motivation... Then there was OpenGL under VisuaL c++... Even then I understood (when I tried) that creating a game is more interesting than playing it! As a result, by the end of school, I mastered BASIC and Pascal. I already easily mastered C++ at the university, where already in my first year I wrote my first checkers game under DOS... Here is the story of my motivation... Then there was OpenGL under VisuaL c++... Even then I understood (when I tried) that creating a game is more interesting than playing it!
Therefore, I invite everyone who is not indifferent to the development of modern youth to take part in the free project "Creator of labyrinths". The site has a forum where you can share your experience and ideas regarding programming, 3d modeling and graphics.
Let's tear the youth away from stupidity in social networks together and motivate them to engage in activities that are much more useful!
labyrinth.3dn.ru

I
ixSci, 2012-11-26
@ixSci

I think you should learn her C#+WPF(XAML). With a minimum amount of code, quite nice things are created. If she likes it, then she will climb into the depths herself and figure it out, if not, then it’s not her.

H
HEm, 2012-11-26
@HEm

Well, you gave two examples where knowledge of programming helped you in real life (even if it's a flash shooter ;) ). Find opportunities to make life easier by programming, first together, then let yourself. Show how sometimes this suddenly leads to the development of a product that can also be sold for money.

P
Pon4ik_v_pudre, 2014-04-28
@Pon4ik_v_pudre

Oh, I didn’t have such a teacher = (Dad didn’t allow me to go to study as a programmer, so now, having honestly cut off 6 years of evenings as an economist, I want to return to the dream of programming =) Guys! Who needs an apprentice? Maybe someone is ready to share their knowledge (I’m also considering a non-free option), or I don’t know where to go, to the university? courses? private lessons? and they won’t hire a round zero for work. and 20t.r. money. I don’t know where to start, but I’ll be glad for any information, I’m from Moscow, so personal communication is welcome, but not necessary!)
e-mail: [email protected]

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question