preface

Some time ago, a senior majoring in computer science who was about to graduate followed my official account and asked me a series of questions, expressing his confusion about the future:

I am a two undergraduate course of this year's unripe, graduate this year, want to know what kind of Android skills need to master ability to work? I have watched a lot of android teaching videos on B website, many of which are about 16 years old, and the content is very old. I want to know what else I need to add before I start work after I finish learning these videos. Very confused!Copy the code

I took a closer look at his questions, and they boiled down to this: What skills does a new computer science major need to land an Android job?

I believe that there are many students who have such doubts, so today I will combine my practical experience to briefly introduce what courses we need to do as a graduating computer major in order to help us find a job related to Android faster.

To introduce myself

Before I begin, I would like to briefly introduce myself:

I graduated from Grade 12 network engineering of Nantong University, a second-rate local university. I graduated in 2016 and joined the internship company I found in October 2015. During this period, I changed jobs to several companies and have been engaged in the development work related to Android for more than 5 years.

Usually like to hang around Github, see nuggets, free to maintain the open source project on Github, have no time to write articles, complain, is the most ordinary loser of the program ape.

To say these experiences of mine, I just want to tell you: WHAT I can do as an ordinary second-rate undergraduate student, everyone can also do. So you don’t have to worry, as long as you can do according to my guidance, you can be more excellent than me!

Master solid basic skills

As the saying goes: the foundation is not firm, the earth shakes.

As a fresh graduate, because there is no actual project experience, so in the interview process, employers will pay more attention to the degree of basic knowledge and development potential of fresh graduates.

Therefore, as a fresh graduate, we must give priority to the improvement of basic skills. So what do we need to know to become an Android developer?

  • Basic subject knowledge. Such as computer composition principle, data structure, computer network, operating system, database design, digital circuit and so on. These subjects introduce us to how computers work and help us better understand the nature of programs.
  • Java basics. Including language features, syntax, norms, etc. Examples: Java data types, operators, object-oriented, collection classes, generics, annotations, reflection, multithreaded concurrency, Java Virtual Machines, design patterns, and more.
  • Android basics. For example: Four components of Android, Activity lifecycle and startup mode, animation, custom View, features of different versions of Android, SQLite, memory leak, ANR, Context, Handler mechanism, View rendering mechanism, event distribution mechanism, etc.

If we can keep a firm grip on the above list, then outside companies will definitely want you.

Recognize the gap between school and society

Don’t assume that if you learn everything you learn in school, you’ll get a job, and don’t assume that everything you learn in school is useless.

As a fresh graduate, it is necessary for us to recognize the gap between school and society.

  • They teach very important, basic things that I call professionalism. These things are very important and directly determine where the ceiling of our future development lies.

  • What society teaches is the knowledge of specific job areas, which I call vocational skills. These things help us do our jobs better.

Therefore, in addition to the school to learn the content of solid, but also need to contact the society as soon as possible, find the corresponding internship work, master the necessary professional skills.

When we are looking for internship units, we can refer to the following points:

  • Whether it is a big factory or a small one, you can gain something when you go in. Entering a big factory, we can gain a good resume and contacts (which is very useful), learn excellent management system and process control, and improve the depth of technology. In a small factory, you can sharpen your will, gain more control, more freedom, and expand the breadth of your skills.
  • The first internship unit may greatly affect the personal view and values of the workplace, the choice should be careful. Do not go to small and micro enterprises or entrepreneurial companies, because such companies may linger on the edge of bankruptcy every day, so they do not pay attention to talent training.
  • In the choice of internship units, to understand and master the information of the enterprise, go to the formal channels. Don’t go if you’re not regular or reliable. Don’t go to any company that asks you to pay for any reason before you get hired.

Improve your hands-on skills

Do technology to engage in development, hands-on ability is always needed as the primary ability to cultivate. Unless you’re a recognized technology leader in your industry, showing off your code is the best way to prove your prowess.

A lot of small white in the entry of a certain language or technology, usually is to buy a net class or buy a entry book to look, copy a copy of the source code in the video or book, naively think that they have been thoroughly mastered. What they don’t know is that these are just scratching the surface, and when the conditions change a little bit, they are completely at a loss.

So how do you get out of this mess? It’s very simple. Code a lot, practice a lot, think a lot, practice makes perfect.

Here are a few simple examples to give you some inspiration:

  • If you learned how Android customizes View controls today, then you can write your own control that Android doesn’t provide to us yet, or that is a copy of XXX, etc.
  • If you learn Android’s event distribution mechanism today, you can try to resolve several levels of complex event conflicts.
  • If you learned today about the Jetpack framework component that Google provides for app development, then you can try to write your own app using the Jetpack component.

How to improve their hands-on ability

As the father of Linux once said, “Talk is cheap. Show me the code.” Saying it a thousand times is not as impressive as going into the code and stroking it.

Having said that, some friends may want to ask: for a person who has never had any specific project experience, how to start?

I still recommend that you go to Github or Gitee to find some excellent open source projects. Many of these projects are high-value projects that have gone through various complex business tests. Copying their code can greatly improve our technical level and coding level.

So how did I hone my coding skills? Here IS a brief introduction for your reference:

  • 1. First, find the target project suitable for yourself on the open source hosting platform.
  • 2. Read the code of the project and have a preliminary understanding of the implementation principle and architecture of the project.
  • 3. Create a new project by yourself, and then implement a similar project according to your own understanding. If you don’t understand, you can refer to or copy the code of the target project (the target project is similar to the reference answer).
  • 4. The lowest requirement is to be able to run normally and achieve the main functions of the target project, while the higher requirement is to be able to have some optimization points or features of their own.
  • 5. Finally, summarize the project you have done. If you are better, write a README introduction or principle analysis.

If you can write four or five projects back and forth as I mentioned above, your hands-on skills will definitely improve.

The last

Here, I would like to give some advice to novice friends: most of the time, a lot of things are not as simple as you imagine, do not think it is simple and unwilling to do, a lot of things only after you do it, you will find that things are not as simple as you initially thought.

I am Xuexiangjys, a technical leader who loves learning and programming, and is committed to Android architecture research and experience sharing of open source projects. For more information, welcome to wechat search public number: [My Android open Source journey]