Why does JAVA have a future?
For the past decade or so, JAVA has basically been the number one language used in the world every year. Millions of IT companies around the world have built a huge JAVA ecosystem, and a lot of software is developed based on JAVA. JAVA is also known as the "computer world of English". The application scope of JAVA involves all industries and most IT companies, forming a huge ecosystem. The following is Wisdom Recruitment in a month, Beijing JAVA talent demand:
The month's demand for 25,121 positions, we recruit 3 people to a position, the total amount is: 25,121,213 = 75,363 * people. That's just Beijing alone. You can imagine the amount of hiring throughout the year, throughout the country, and how large the resulting ecosystem is.
This ecosystem is becoming more and more influential and needs more and more talent. The more people know JAVA, the more software is written in JAVA, which in turn promotes the need for more JAVA talent. This is the famous "Matthew effect", i.e. "the stronger the stronger, the weaker the weaker".
JAVA is currently the mainstream programming language in: enterprise software development, Android development, big data, cloud computing and other aspects. Follow the mainstream, certainly not wrong.
What kind of person is suitable to learn JAVA?
If you learn programming as a hobby, it is suitable for anyone. After all, even elementary school students are learning to program now. If you want to say as a career, whether you are suitable or not is really a problem. I've taught students ranging from junior high school students to PhD students, and even business executives in their 50s, who came to learn JAVA for different purposes. I remember teaching a master's degree in mathematics from Peking University, who came over to learn not for a career, but for scientific research, and hoped to save time through training, and quickly broke through the programming barrier in a summer vacation.
Here, we only explore as a career suitable for you? Here are six realistic and hard indicators to consider.
1. Interest Level
Interest is the foundation. If you have absolutely no interest in coding, you get a big headache just from hitting the keyboard. Then completely block out the programmer this road, do not force, the sky is the limit, another road may be more suitable for you. As the foundation of programmer, at least do not hate the feeling of knocking code, this is the most basic. The more you like the feeling of knocking code, the smoother your future path will be.
Many people say "xxx has talent". I think that replacing talent here with "interest" may be the truth of the matter. If you are interested in doing this, and you are happy doing it, you will naturally spend more time researching, and the growth will naturally be faster; the faster you grow, the more you will naturally be "gifted" compared to normal people.
2. There are no better alternative development paths
Since we are here for career development, we have to be realistic. If the family has a good background, the father has good resources. It is highly recommended that you rely on your father's resources to develop the optimal path. Writing programs can be used as a hobby, not as a main business.
Of course, if it is the ordinary loser masses such as me. I'm not sure if it's a good idea, but I'm sure it's a good idea for me. After all, this is a technical, with the ability to eat career. Technical ability in place to make a million dollars a year in a large number of people.
3. Logical thinking ability
This is the most basic requirement as a programmer. People with poor logical thinking skills are totally unsuitable for programming. Of course, for the general science and engineering students, logical thinking does not have a problem. For literary youth, like to follow the feeling of jumping thinking people, generally not suitable for programmers this road.
4. English
For junior programmers English requirements are not high, in fact, high school English level is enough. If you want to go to the top of the technology, it is necessary to improve your English skills. After all, a lot of technology comes from the United States, and being able to read the original English will give you a leg up.
Personal advice is: English high school enough to mix junior programmer stage. The first thing I'd like to do is to get to the top of the heap, and I'd like to get to the bottom of the heap.
5. Math
We were tortured by the math, learning to program a good news is that "math is not important, unless engaged in scientific research". For software development in the enterprise, a middle school level of math knowledge is sufficient.
If you want to engage in artificial intelligence, big data and other development, some higher mathematics, linear algebra, probability and other knowledge is still a lot of use. Of course, it's not too late to turn the pages when you need them.
6. Stable career development
JAVA after more than a decade, are stable in the first place, the visible future is also a very stable development language. a major feature of the JAVA industry is the stability of the development of space.
As a JAVA programmer salary from: 4,000 monthly salary, 100,000 monthly salary are available. Unlike the previous years of hot IOS, fire for 3 years, and now cliff-style decline. java is like a train, traveling very stable.
JAVA programmers are divided into: beginner, middle, high, architecture, director, 5 training grades. It is enough for me and other ordinary losers to struggle for life.
Divided by years of experience, it is roughly like this:
1). Junior programmer working years: 1-3 years monthly salary: 4K-15K
2). Intermediate programmer work experience: 3-5 years monthly salary: 10K-20K
3). Senior programmer work experience: more than 5 years monthly salary: 15K-30K
4). Architecture level working experience: more than 5 years monthly salary: 25K-40K (annual salary of a million people are also in)
5). Director of work experience: more than 5 years monthly salary: more than 40K (annual salary of a million people are also in)
How to learn JAVA?
JAVA programming learning is divided into: introductory, beginner, intermediate, advanced, architectural several stages.
Introduction
Introduction takes less time, a few hours, a few days. The emphasis is on forming good programming habits and generating enough interest. The biggest failure of college programming classes is that they discourage a lot of people from programming in the first place. Programming is the easiest thing to spark a sense of accomplishment, and can be every bit as fun as gaming.
The JAVA knowledge that you need to know to get started is the installation and configuration of the JDK, the use of the eclipse development environment, variables, control statements, and other basic knowledge.
Elementary
JAVA's primary we need to learn the basics of JAVASE, which is the basis of our future work. In this stage, learn to use the API, understanding object-oriented will be the first beginner to face the problem.
JAVASE need to be proficient in: object-oriented, exceptions, common classes, arrays, containers, IO streams, multi-threading, network programming. These need to be mastered, are the future work must be used in the content.
JAVASE in the only will not work in the use of GUI programming, specifically: AWT/SWING. desktop software development is the short legs of the JAVA language, very few companies use. Of course, if there is plenty of time, it does not hurt to learn, after all, you can make a beautiful interface through SWING. Moreover, the technology is all connected, for learning other GUI technology is also helpful.
Intermediate
Intermediate facing the learning task is more complex, not only to learn JAVA, but also need to learn other technologies. Usually, after the intermediate level, you can participate in the development of enterprise projects, and you can make your own beautiful project.
We need to learn three pieces of knowledge:
1. SQL query and 1-2 kinds of databases (usually: oracle, mysql)
2. Web page technology: HTML5, CSS, JavaScript, Jquery
3. Server programming JAVAEE: Servlet, JSP, database operation technology: JDBC, Tomcat server
Intermediate is a very important stage, across this threshold, in theory, you have the ability to develop projects! Intermediate stage of learning, often become a roadblock for many beginners, after all, too much content, a problem may make you depressed for a day. In the end, the test of your intermediate whether to pass the standard is "can not independently complete a corporate project module development.
Remember: "combat is the only test of strength", "no combat learning, is false learning; no combat test ability, is false ability.
Advanced
Advanced stage is a large number of frameworks for learning and use, after all, this is the actual use in the enterprise. Currently need to master: Spring, Spring MVC, Mybatis, Struts2, Hibernate, Maven, shiro, lucene and other technologies.
The learning of these technologies must be combined with specific projects, otherwise your learning will have a sense of powerlessness. Combined with the popular SSM architecture, do a few projects, naturally, Spring, Spring MVC, Mybatis framework to use familiar. Learning without doing projects is "inefficient learning".
Advanced stage seems to be some framework technology learning and use. For "potential masters", in fact, you will find that this is just "JAVA basic sublimation" only. Just JAVA + algorithms + design patterns of the combination, we go deep into the underlying architecture of these frameworks will find this. When you learn to realize that this time, has reached a very high level. This is what martial arts novels say, "from no move to have a move, and then from have a move to no move".
Architecture
As a JAVA programmer to learn advanced courses have been fully equipped with the basic qualities of junior programmers, and really have 3 years of development experience than the people, you lack of experience, the breadth of technology has been enough.
If you want to go further from programmer, that is, architects and directors. At this time, you must have deep technical skills, rich project experience, rich industry experience.
Technically, you need to learn the following technologies in depth:
Concurrent programming, ActiveMQ technology, ZooKeeper, RabbitMq technology, Kafka technology, MongoDB, high-performance, high-concurrency, Mysql, Netty communication frameworks, the underlying optimization of the JVM virtual machine, Memcached , Redis, Nosql, database underlying optimization, RocketMQ, Dubbo distributed services, Storm, Kafka, Nginx, FastDFS and so on.
(If you look at the eyes, just collect, this is what you need to learn for a few years, not a few days. (This article is only responsible for pointing the way, recommended that you can search for dark horse programmers free of charge according to the system path to learn, the various stages of the supporting tutorial videos and information provided, white whore!!!)
From project experience, generally need 3 large-scale project experience. This accumulation of experience is not a day or two, Rome was not built in a day. Keeping enough patience and persistence will get you there.
If, you can go to the architecture stage. Basically counted into the high-end ranks of JAVA programmers. At this time, the income should be between 500,000 - 1 million (Note: This is the first-line city standards, the second line multiplied by a factor of 0.6, the third line multiplied by a factor of 0.5). Of course, for ordinary losers such as me, it is also considered to have completed the reverse, living a well-off life with a house and a car should be more than enough.
If, your emotional intelligence, marketing ability, management ability in place, at this point you can try to start a business as a boss (if not in place, do not try, or you will be kneeling very ugly). Solid technical strength, rich experience in the industry, should allow you to realize take off. Many of my students entrepreneurial success, years such as millions of N. The times are always the times of the young!