Photo by Ethan Kent on Unsplash

Recently, I often receive questions like “How can I learn Java by myself without foundation” and “how can I master programming” on Zhihu. Besides, I find that my high school classmates are also learning by themselves. Let’s talk about my road of self-study.

Freshman/Sophomore year

The college entrance examination did not develop normally, take an examination of a second-rate school, at that time the score is also only higher than admission score line one or two points, can only choose mechanical major, at that time if the score is high two or three points, or permit above computer major, perhaps now the level of basic knowledge may be different, but who says that?

Back to the topic, the first two years of university, like most of my classmates, basically in the mix, should play games play games, should play truant class. But at the end of the term, I will try my best and get a good grade. Here is a point, it was later found that some students did not prepare for the final, there is no way to do so can only fail. So here is a point, in fact, as long as you work a little bit harder, in fact, you have surpassed many people.

Talk about our professional, with the computer may be associated with the “machine”. Fortunately, there is a compulsory C language course in my freshman year. At that time, I was vaguely interested in programming. I had thought about learning C language and becoming a hacker. But when you get there, you realize that the course is so boring, and you don’t know what you’re going to do. Books only have exercises, and teachers just read from the book. So I lost interest in the course at that time.

Junior year

Junior year is a meaningful year in my life.

That semester, poor can’t, go out part-time, earn the first salary in life. And with this money, register for driving school. It was this money that made me realize how hard it was to make money.

In my junior year, I had to think about what I would do in the future because of the pressure of graduation. Calm down and think about what you should do in the future. I thought about a career in my specialty, but it was nothing more than working in a factory or drawing in graduate school, and I had no interest in it. I really hated CAD at that time.

Here I really thank my girlfriend, who gave me an idea to try to learn Java. Haha, thanks to a certain degree, when searching Java, a full screen advertisement popped up, one point to see XXX graduated in a training class, successfully entered a large company, got a high salary. Yes, it’s really attractive. Then set foot on the road of self-study. I still remember typing the first line of code at home during the winter vacation of my junior year.

    public static void main(String[] args) {
        System.out.println("Hello world");
    }
Copy the code

Tell me how you taught yourself back then. I found a Java-based video course on a self-study website. It’s really old. It was recorded in 2012. I’ll show you the course catalogue.

Then the daily life is basically very boring, in addition to classes, is to study, occasionally also go out part-time. At that time, I basically studied in the school library and borrowed Books related to Java from the fourth floor of our school. At that time, I didn’t know that Java books were classic, so I chose books based on their titles, so I chose books like “Java To Master” and “21 Days to Learn Java”. When I saw these books, I thought the titles were very attractive, and I thought I could learn Java quickly after reading these books. But now in retrospect, these books really pit dad, basically is the online resources copied change, mistake people’s children. If you want to buy a book, don’t buy this kind of book.

In the summer vacation of my junior year, I basically finished learning the basics of Java. Finally, I finished a snake game with the video tutorial. I really felt a sense of achievement at that time.

After learning the Java foundation, we are faced with the problem of learning that direction. At that time actually did not consider much, directly choose the direction of Web background development. After buying a training course of some training class on Taobao, follow its progress study. At this stage, it already feels not as simple as the Java basics. Learning things is not only difficult, but also more, basically all aspects need to learn. I still remember that this course started with Html, CSS, JavaScript, SQL syntax, and finally Java Servlet. At that time, I watched the course videos carefully during the day and typed the exercises line by line in the evening. I tried to make sure that I did all the lessons that day and did not put them off until tomorrow. But sometimes after learning this, you forget the above or you just can’t think of the solution. At that point, I look back at the lecture, see where I’m stuck, and wonder why I didn’t think of that.

internship

I basically finished the course in November. There are no courses in the school, and there is nothing to do in the school, so I just want to see if I can get an internship.

At that time, I had no confidence in my own skills and didn’t know what skills were needed for enterprise development. This led me to think at that time I just want to find an internship, can pay me some money, and then I can enter the study.

I went round and round looking for a job on 58 fair and finally found a company recruiting Java development. After the interviewer asks a few basic questions about Java, the offer is made.

After I entered the company, I realized that this was completely different from what I had imagined. The whole company background development is a person, and my interviewer, not in this company, in another city in another company, listing a development manager position in this company.

I didn’t know the requirements at the time, so THEY threw me a set of table structure design and a set of background code that they had developed before, and I just copied it. Remember that the framework consists of Easyui, Struts2, Mybatis and mysql. Everyday work is to follow this change, if not, search engines. My colleagues were basically from other positions, and none of them could ask questions. At that time, there was no requirement document, and the manager patted his head and came up with it. I stayed there for two or three months and basically didn’t get anything out of it. It was like quitting the company.

It was March, three months before graduation. At that time, I was very nervous. I went to the job fair of my school, but I didn’t see any jobs related to Java. See hang Seng on the net by chance, netease’s spring recruit opportunity, holding the idea of trying, choose to sign up. After signing up, I learned about the written test and found that I had never learned much about it, such as operating system and Linux. But there is no way ah, can only be crazy in the cattle guest network brush, crazy supplement these knowledge. Finally, both companies failed the written test…

Such as netease written test, has arrived in April. Local jobs have also been basically searched, either do not want interns, or the basic salary is too low, to what extent that, a company will give 800 salary for internship every month.

Later, a big company came to our school to preach. I was surprised to hear that they were recruiting Java developers at last, so I signed up for it immediately. After the written test and interview, I went to the city where the company was located and finally got the offer from the company. But in the end, they didn’t choose to go, one is because the salary after graduation is really too low, only 3500, two is because their company is located in the place is too remote.

Unable to find a job locally, I had to look for opportunities in Hangzhou. I searched around for job opportunities, finally found several companies still recruiting interns, sent out resumes, and received several interview opportunities. That day to interview, just as netease spring recruitment interview, see a netease bus to sit to interview, really envy. That day, I met with two companies, and the last one offered me an internship. Talk about that time practice salary, a day 160, at that time really feel good tall, really feel should come to Hangzhou earlier.

After entering the company, I was assigned a senior to guide me. Although he said little, he learned a lot from him and felt for the first time the scope of that technology. During my internship in the company for about one month, I basically used what I learned before. I can review and consolidate what I learned before. Report back to school in May, and then graduation defense, smooth graduation. Later, I joined the company successfully and really entered the development industry.

Summary and Ideas

See here presumably you also see my road of self-study, the following also talk about my idea all the way.

  1. See a lot of friends ask, I now learn programming and do? What I’m saying is that it’s okay to learn programming whenever you want, but you need to evaluate whether you can really put in the time to learn.
  2. What do you need to learn programming? The best way to learn programming is in science and engineering, but if you’re not, it doesn’t matter, as long as you can stick with it and learn it well. I know several colleagues who are also liberal arts majors who have changed their careers. Some of them are outstanding and did not even graduate from high school. But if you’re not interested in this, you’d better give it up. Interest is a good teacher.
  3. Do you need to go to a training class to learn programming? If you have no self-control or want to get started quickly, you can choose a training class. Because in the class, you get a sense of the scope of that learning, and at the end of the class they call you some interview skills and stuff. But I suggest you try to finish the Java foundation before signing up for the class. If you can’t even learn the basics of Java, then you’re not doing well in the end. But don’t one-sided look at the training class advertising, or by some sales after graduation high salary brainwashed, confused on the class. Oneself must consider good, go to choose to sign up for class again.
  4. Now should I learn Java background, Android, Python? It’s really hard to give advice on which one to study. But one way I can teach you is to make a list of things that are worth doing. Make a list of the pros and cons of Android,Java, and Python, and give a score of -10 to 10. Add each column together to get a final score. Choose the one with the highest score.
  5. After the end of the study, to find a job must go to the first-tier cities, north Guangzhou, Shenzhen and Hangzhou. Why are these cities that? Because there are more opportunities and higher wages in these big cities. Although relatively speaking, life is also a little more stressful. But trust me, if you live and work in a first-tier city for a few years, your outlook improves a lot. But if you’re in a tier 2 city a few days ago and you want to go to a tier 1 city because of the salary level, it’s a lot harder.
  6. For those of you who are still in school and studying on your own, if you have a lot of time in school, you must not only learn Java related knowledge, algorithm data structure and so on, this is really important.
  7. If you’re self-educated and looking for a job. Please have confidence and don’t sell yourself short. One or two failures doesn’t mean anything. Summarizing previous failures will help you learn more about yourself.

There is no free lunch, and there is no quick fix. I hope everyone in the school, calm down, good practice code ~