
When I see friends who drive twice as much and earn four times less, the conversation begins every time:
- And you would not like to work as a programmer? You're really smart. Maybe you're just not in your place?
As a result, I retrain my friends and acquaintances to programmers. The whole process takes from two to three months. 25 lessons for 4 hours. Then everyone was able to get a job programmers.
This article is not about how to learn, rather a simple description of the process that works.
About me: ten years of programming. Half of which was programmed in Java. In total, I retrained eight people to programmers. Three more are teaching right now. I retrain only if I see that such work will suit a person.
About students: 3 guys and 8 girls. Half have a technical education. There is also a lawyer, economist, accountant and historian. Some have already worked somewhere, some have just graduated from the university. Nobody was engaged in programming from school. Frequent history: finished (a) university, and by whom and where to work - xs.
Why programming?
Before teaching a person programming, it is better to explain what it gives and why it needs it.
1 Simple interesting work.
Programming is a simple and interesting job. There was an opportunity to compare with what economists are doing in the bank. It is heaven and earth. The bank is much more boring. Yes, and to comply with the dress code in the 30-degree heat is not a very pleasant thing.
2 Well paid.I am just pleased to see how my friends after 5 years of work began to buy cars or apartments for themselves.
3 Flexible schedule.Hard schedule is unpleasant. This will be confirmed to you by anyone who was standing in a traffic jam at rush hour, or who was fined for being 5 minutes late. What about the opportunity to come to work at 11 am and leave at 5? Tell me a dream? For most programmers, this is a reality. Cope with your work, and no one will tell you the words. In many offices you can not come to work, and work from home.
4 Professional growth.In almost any organization, in order to get a prestigious position and earn well, you need to make a career. A programmer simply needs to remain a programmer. You do not need to relearn from a programmer to an administrator or fight for the position of chief. You can just grow professionally. Programmers with five to ten years of work experience get great salaries.
5 High international mobility.The three highest paid professions in the west are: lawyer, surgeon / doctor and programmer. But our lawyer abroad will be useless: other laws, case law, etc. The doctor needs to learn the language, re-take exams. The programmer will not have to learn anything. Same language. The same standards. Often, even customers are the same.
')
Why Java?
The combination of the following three factors made me retrain people to javists.
1 Java is one of the easiest languages to learn.I manage to teach a person for three months.
2 Great demand in the labor market.You can get a job without experience. Firms willingly hire intelligent beginners and are engaged in their further education.
3 The highest salaries in the industry.One of the highest. Especially true for novice programmers.
Key principle
There is such a good rule to pack a backpack on a camping trip:
1 Make a list of all necessary
2 Cross off everything you can do without.
Approximately imagine what java junior will have to do in the first year of work. Knowledge, without which you can do in the first year of work - we exclude!
I threw out of the training a lot of interesting and good things. To become good programmers they will have to learn. But I give a sufficient minimum to get a job. One theory without practice is often ineffective.
This is what I advise java junior to do in their first year of study:
1 Rejoice that there is a good job.
2 Study the project.
3 Read smart books.
Class format
At the same time I teach 2-3 people. The optimal group size for me is three people. Three months. Two classes per week for four hours. Only 25 lessons.
I explain everything only with examples. Visibility is our everything. For example,
to understand the collection, we wrote our ArrayList & LinkedList in class . I give homework to secure the material.
Where better to start?
From Pascal. As practice shows and my subjective experience, everyone in school studied pascal. Depending on the situation, I allocate 2-4 lessons of remembering pascal.
1 Variables and ReadLn / WriteLn.
2 if, for, while, arrays.
3 Functions and procedures.
4 Consolidation studied.
Lesson format
Usually I tell a new topic for 10-20 minutes.
I sit down at the computer (the others sit next to each other) and write working examples of the story. Then, all in turn I give tasks on the current topic. Everyone for such a lesson has time to do 3-5 small tasks.
I encourage you to tell each other (teaches team work).
You can spy old examples. Copy-paste is impossible.
Summary of the first lesson in Java
(may not be the first of all, if there were preliminary lessons on pascal)
1 I am telling you what is Java, JVM, JDK, J2SE, J2EE
2 Install JDK, IDE (my choice is Intellij IDEA)
3 Creating the first program. I show it once, then the people repeat.
4 Input / Output, work with variables. I draw analogies with pascal - it helps a lot. It is much easier to understand the material when there is an analogy with what you know.
Alternative Techniques
Participation in free projects is an ideal tool for self-development. A person who can work well, but is not a fan of programming, fits poorly.
What i teach

Only the most necessary <b> Programming </ b>
OOP
Inheritance: extends, implements
Polymorphism: overriding, overloading
Encapsulation
Interfaces: interface
Abstract methods and classes: abstract
Packages: package
Rest
Variable scope
Variable overlap
Hiding methods by other methods.
mutable, immutable
Cloning, contracts.
<b> Language Syntax </ b>
Operators
if-else
for, for each
while, do while
switch-case-default
try-catch-finally return
throw, throws, catched & uncatched exceptions
synchronized
instanceof, (type cast)
operator priorities: + * ++ - [] = ==! = && ||
finalize
Modifiers
public, protected, package, private
static
final x3
Data types
Primitive types: boolean, char, byte, short, int, long, float, double
Reference types: Object
autoboxing
hashCode, equals
Generics
<b> Libraries </ b>
java.lang
Marker Interfaces: Cloneable, Serializable, Remote
Integer, Real, Double, Character, ...
String, StringBuilder, StringBuffer, StringWriter
Thread, ThreadLocal, ThreadGroup
Throwable, Exception, Error, RuntimeException
java.io
Serializable
InputStream, OutputStream
Reader, Writer
FileInputStream, FileOutputStream
BufferedReader, PrintReader, Scaner
DataInput, DataOuput,
ObjectInput, ObjectOutput
java.util
java.util.Date
java.util.Iterator
List
java.util.ArrayList <E>,
java.util.LinkedList <E>,
java.util.Vector <E>,
java.util.Stack <E>.
Queue / Deque
java.util.ArrayDeque <E>,
java.util.LinkedList <E>.
Set
java.util.HashSet <E>,
java.util.LinkedHashSet <E>,
java.util.TreeSet <E>.
Map <K, V>
java.util.HashMap <K, V>,
java.util.LinkedHashMap <K, V>,
java.util.TreeMap <K, V>,
java.util.WeakHashMap <K, V>.
Multithreading
Thread, Runable, join, interrupt, sleep, daemon, yield, wait, notify
What I do not teach
1 Algorithms, graphs, etc.
The winner of the heap Olympiad. For 10 years of real work it took nothing.
2 UI, applets, etc.
Most likely, future projects in the life of my students will be associated with Tomcat, JBoss, WebLogic
3 html / javascript
Non-core skills. I recommend to engage in self-study.
Job

I can not teach everything, and I do not try.
My goal is for a person to get a job, a firm is a promising employee, and both parties are interested in his further training.
How to get a job. Key points.
1 Correctly make a resume.Imagine what a contract can make a professional lawyer, and what - the usual unprepared person. In important things do not hesitate to contact the professionals. So here: you should not make a resume yourself, but ask a knowledgeable person.
2 InterviewI do some test interviews. And sending "graduates" to be like interviews in several offices - for the experience.
3 ExperienceIn the resume should be from 3 to 6 months of work experience. This adds confidence to the person who decided to hire you.
Go to work only in IT offices.
And even better in large IT offices. Only they are engaged in training beginners.
The goal of the first year of work is to gain as much experience as possible, not money. Already in the middle developer position, demand exceeds supply, and wages begin to rise sharply.
Stories from the life of students
How to ask for a raise.The story of one of my students.
- I once received a salary of $ 2,400. Another term for salary review has come. I want 2800, but how to agree?
I decided to ask for $ 3,000, so as to bargain for 2,800. However, when it came to discussing the new amount, it turned out that they did not want to raise more than 2,600. Am I not worth more? - I thought, and signed up for an interview in a third-party company.
A couple of days went for an interview, they offered $ 3,000.
I come to work the next day, printed out a job offer, and a manager for a conversation. He thought, called somewhere. Half an hour later he came up and offered $ 3200.
Satisfied I called the company where I had an interview and said that I couldn’t work for you, because they offered 3200 at their current job. They offer 3400. They are completely out of the rut. I was already in the mood to continue working, and here is the news. But since fighting mood was still, again went to the boss. As a result, received $ 3,600.
Much more likely to get an increase in salary, if both (I and the chef) are sure that I am worth more.
The fastest career in history.
Story number two. I tell from the first person.
I decided to get my first job. Compiled a resume for the position of java junior, attributed 4 months of experience in a nonexistent form and went for an interview.
Have taken. Worked for three months. He taught java and understood the project. But the company did not like. Three months later he quit. I sat at home for a month, did some work, and went for an interview again. This time I was already looking for the position of java middle and, according to the resume, I had a year of work experience. Worked for two months. The project is about a dozen years old, professionals are coping, but a newbie on such a project is very boring. Resigned.
Found a new job. Now in my resume was a half year experience. This time the project was completely satisfactory, but I wanted to develop another salary. There must be somewhere the company I'm looking for - I thought. Worked for three months.
On his last job, got a position senjor java developer.
Three years of work in the resume inspired respect. For three years I have been working in the firm I liked. Exactly what I was looking for. I am satisfied, the customer too.
The main thing is not to stop. No need to endure silence if you see that it is not yours. Do not be afraid to quit. Perhaps the perfect job from you in one interview. Well, or two, three, four.
Subtle moments
To be a good programmer you need to learn a lot. It is impossible to do this without the desire to learn and love for programming.
I interweave the desire to learn / develop in the learning process itself. These are not strangers to me: I put my heart in, I give interesting tasks. They are engaged not because they should, but because they are interested. Like a pleasure forgotten from childhood, when you do something new, and you succeed.
In our industry it is very important for a beginner to gain experience and continue to learn. Therefore, large offices that are engaged in further training of juniors are our everything. My goal is for my student to go to such an office and realize himself there.
My students are convinced that programming is easy, interesting and creative. And it becomes so for them!
About interviews
A person can be assessed only by the results of his work, and not by a resume, where
everyone wants what he writes . Salary is often assigned based on the results of an interview, which takes place before the person was seen in the work. As a result, an error often arises in assessing the qualifications and contribution of a specialist to a job, especially if the employer carelessly treats the interview. With a fair estimate of a salary of $ 700, you can work for a year at $ 1,000 a month, or you can at $ 500.
I do everything so that this error, if it arises, was in the direction of the candidate - my student.PSToday, my first student (field five years of work as a programmer) has the first day of work as a team leader. I am proud of her.