I retrain people on Java programmers


When I see friends who inject twice as much and earn four times less, each time a conversation begins:
- Would you like to work as a programmer? You're really smart. Maybe you're just out of place?

As a result, I retrain my friends and acquaintances as programmers. The whole process takes from two to three months. 25 lessons of 4 hours. Then everyone could get a job as programmers.
This article is not about how to learn, but rather just a 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 as programmers. I'm teaching three more right now. I retrain only if I see that such work is suitable for a person.
About students:3 guys and 8 girls. Half have a technical background. There is also a lawyer, economist, accountant and historian. Some already worked somewhere, some just finished university. No one has been programming since school. A frequent story: graduated from a university, and with whom and where to work - xs.

Why programming?

Before teaching a person programming, it is better to explain what this gives and why he needs it.
1 Simple interesting work.

Programming is a simple and interesting job. There was an opportunity to compare with what the economists are doing at the bank. It is heaven and earth. Everything is much more boring at the bank. And to comply with the dress code in a 30-degree heat is not a very pleasant thing.
2 Well paid.
I am just glad to see how my friends, after 5 years of work, began to buy cars or apartments.
3 Flexible schedule.
A tight schedule is unpleasant. This will be confirmed by everyone who was in a traffic jam at rush hour, or who was fined for being late for 5 minutes. What about the opportunity to come to work at 11 in the morning and leave at 5? Tell me a dream? For most programmers, this is a reality. Cope with your work, and no one will say a word to you. In many offices, you may not come to work, but work from home.
4 Professional growth.
In almost any organization, to get a prestigious position and make good money, you need to make a career. It is enough for a programmer to simply remain a programmer. You do not need to retrain from a programmer to an administrator or fight for the position of boss. You can just grow professionally. Programmers with five to ten years of work experience receive gorgeous 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, take exams again. The programmer does not have to learn anything. The same language. The same standards. Often even the customers are the same.

Why Java?

The combination of the following three factors made me retrain people as Javists.
1 Java is one of the easiest languages ​​to learn
. I manage to teach a person in three months.
2 Great demand in the labor market.
You can get a job without experience. Firms are willing to hire intelligent beginners and are engaged in their further training.
3 The highest salaries in the industry.
One of the highest. Especially relevant for novice programmers.

Key principle

There is such a good rule to pack a backpack:
1 make a list of everything you need;
2 cross out everything you can do without.

I can roughly imagine what java junior will have to do in the first year of work. The knowledge that you can do without in the first year of work is excluded!


I threw out a lot of interesting and good things from training. To become good programmers they will have to be taught. But I give enough minimum to get a job. One theory without practice is often ineffective.

Here's what I advise you to do java junior in your 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 lessons per week for four hours. Only 25 lessons.
I explain everything exclusively with examples. Our clarity is everything. For example, to understand collections, we wrote our ArrayList & LinkedList in class . I give homework to consolidate the material.

What is the best place to start?

From Pascal. As practice and my subjective experience show, everyone at school studied pascal. Depending on the situation, I allocate 2-4 lessons to remember Pascal.
1 Variables and ReadLn / WriteLn.
2 if, for, while, arrays.
3 Functions and procedures.
4 Securing the studied.

Lesson format

Usually I tell a new topic for 10-20 minutes.
I sit down at the computer (the rest are sitting nearby) and write working examples of the story. Then, in turn, I give everyone assignments on the current topic. Each person in such a lesson manages to do 3-5 small tasks.
I encourage you to prompt each other (teaches teamwork).
You can peek at old examples. You can’t copy anything.

Summary of the first Java lesson

(may not be the first of all, if there were preliminary lessons in pascal)
1 I tell you what Java, JVM, JDK, J2SE, J2EE
2 Install JDK, IDE (my choice is Intellij IDEA)
3 Create the first program. I show it once, then the people repeat it.
4 Input / Output, work with variables. I draw an analogy 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, does not fit well.

What i'm teaching


Only the most necessary
Programming
   OOP
        Inheritance: extends, implements
        Polymorphism: overriding, overloading
        Encapsulation
        Interfaces: interface
        Abstract methods and classes: abstract
        Packages: package
    Rest
        Variable Scopes
        Overlapping variables
        Hiding methods by other methods.
        mutable, immutable
        Cloning, contracts.
Language syntax
    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
Libraries
    java.lang
        Token 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,
             java.util.LinkedList,
             java.util.Vector,
             java.util.Stack.
         Queue / deque
            java.util.ArrayDeque,
            java.util.LinkedList.
        Set
            java.util.HashSet,
            java.util.LinkedHashSet,
            java.util.TreeSet.
        Map
           java.util.HashMap,
           java.util.LinkedHashMap,
           java.util.TreeMap,
           java.util.WeakHashMap.
     Multithreading
        Thread, Runable, join, interrupt, sleep, daemon, yield, wait, notify 



What I do not teach

1 Algorithms, graphs, etc.
He is the winner of a bunch of Olympics. For 10 years of real work, nothing was needed.
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 self-study.

Work


I can’t teach everything, and I don’t try.
My goal is for a person to get a job, a company to be a promising employee, and both sides are interested in his further training.

How to get a job. Key points.

1 Make a resume correctly.
Imagine which contract a professional lawyer can draw up, and which one can be an ordinary unprepared person. In important things, do not be shy to turn to professionals. So here: a resume should not be made up by yourself, but ask a knowledgeable person.
2 Interview
I am conducting several test interviews. And I send "graduates" to be like interviews in several offices - for experience.
3 Experience
The resume should have 3 to 6 months of work experience. This adds confidence to the person who decided to hire you.

Going to work only in IT offices.

Better yet, in large IT offices. Only they are training beginners. The goal of the first year of work is to get as much experience as possible, not money. Already at the middle developer position, demand exceeds supply, and salaries begin to rise sharply.

Student Stories

How to ask for a raise.
The story of one of my students.
- I somehow got a salary of $ 2,400. The next term for revising the salary has come. I want 2800, but how to agree?

I decided to ask for $ 3,000, so that I could bargain for 2,800. However, when it came to discussing the new amount, it turned out that they did not want to raise above 2,600. Am I not standing anymore? I thought, and signed up for an interview with a third-party firm.

A few days later I went for an interview, they offered $ 3,000.
I come to work the next day, I printed out a job offer, and I’m talking to the manager. He thought, called somewhere. Half an hour later he came up and offered $ 3200.

I am pleased to call the company where the interview was held and say that I can’t work for you, because at the current place of work they offered 3200. There they offer 3400. They completely lost my track. I’m already determined to continue to work, and here is the news. But since there was still a fighting spirit, again went to the chef. As a result, she received $ 3600.

There are much more chances to get an increase in salary if both (me and the boss) are sure that I am worth more.

The fastest career ever.

History number two. I tell in the first person.
I decided to get my first job. He composed a resume for the position of java junior, attributed 4 months of experience in a non-existent form and went for an interview.

Have taken. I worked for three months. He studied java and knew about the project. But the company did not like. Three months later, quit. He sat at home for a month, exercised, and went for an interview again. This time, I was already looking for the position of java middle and, according to the summary, I had a year of experience. Worked for two months. The project has been around for ten years, professionals are coping, but a beginner on such a project is very bored. I quit.

Found a new job. Now in my resume there was a year and a half of experience. This time the project was completely fine, but I wanted to develop another salary. There must be somewhere the company I'm looking for - I thought. I worked for three months.

At his last job, he got a position as a senjor java developer. Three years of work in the resume inspired respect.For three years I have been working in a company I like. Exactly what I was looking for. I am satisfied, the customer too.

The main thing here is not to stop. No need to endure silently if you see that it’s not yours. Do not be afraid to quit. Perhaps the perfect job from you in one interview. Well, or in two, three, four.

Subtle moments

To be a good programmer you need to learn a lot. It is impossible to do this without a desire to learn and a love of programming.

I weave the desire to learn / develop into the learning process itself. These are not strangers to me: I put my soul in and give interesting tasks. They are engaged not because they need to, but because they are interested. As a pleasure forgotten from childhood, when you do something new, and you do it.

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 for juniors are our everything. My goal is for my student to get into such an office and be able to 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 evaluated only by the results of his work, and not by a resume, where everyone wants to write . The salary is often assigned based on the results of the interview, which takes place before the person was seen at work. As a result, often an error arises in assessing the qualifications and contribution of a specialist to the work, especially if the employer is careless about the interview. With a fair assessment of the salary of $ 700, you can work for $ 1000 a month, or you can work for $ 500. I do everything so that this error, if it arises, is in the direction of the candidate - my student.

PS
Today, my first student (field of five years as a programmer) has the first day of work as a team leader. Proud of her.

Also popular now: