This is an article I saw in the android development circle of the 51cto technology circle. It feels great to share it with you !!
Web site: http://g.51cto.com/androiddeveloper/88998
I have been developing in the United States for many years and write it to new iPhone developers in China.
Although it is intended for iPhone developers, it is also useful for Android Developers.
Since the beginning of this forum, I have hardly answered any questions about this forum, but in all fairness, this is also the most widely viewed forum. But I have never expressed my opinion, because anyone can become a programmer today. After reading a lot of domestic program forums, I developed a habit of not having to make a positive reply in the forum, not even reply, or even write no articles. Why did we make an exception today? Because they are moved by the attitudes of many new people, they are really sincere in learning.
So far, the preface of Luo liyan. Let me talk about my personal experience first. I have worked as a PPC project manager (maybe now called WM), and I have also done some commercial projects at the beginning of the development of the seban intelligent system, and so on. However, I always thought that my development at that time was not mature. Why? This is because, like many new users, there are some misunderstandings. What is a development program? This mistake is common. Why is developing a program a lot of data processing? from the birth of the first program to today, the program is a lot of data processing. In fact, few Chinese developers have considered this, because they mostly consider their jobs and promotions. So they ignored the most basic things. Most domestic forums do not need to discuss these things. At that time, too.
Why did I mention a lot of data processing at the beginning of my article? That's because of mathematics. Most of the students may laugh here. I am very strong in mathematics. In this way, you and I have entered a misunderstanding. Here I will give myself an example. Before I went to calculus in the United States, I didn't want to, because I got high scores easily, this calculus is an insult to IQ for Chinese people. The first time quiz and midterm proved my idea that most foreigners share more than 60 items, almost all Chinese people are 85 or above. However, I found a problem behind this score, that is, we can solve all the questions. But why must the teacher prove that he tends to be a number repeatedly? He wrote 2.0 full of a blackboard, 1.999, 1.998, 1997 tend to 0, and then he wrote from -. 2.0,-1.999 tends to be 0. In fact, at that time, I thought the teacher was stupid. Is it necessary? If you do this, it will not change the law, nor change any conclusions. And everyone knows the law. Later, I found my teacher and asked her why you want to write it like this? She started to smile and told me that the process is more important than the result, and she personally thinks that in these processes, maybe one day she will see, that is a very tiny number, and his trend may be different. In fact, I still don't understand what she said, and I still think that stupid is more of an ancient topic. However, after finishing all my science subjects, I finally had a very subtle change, that is, even a simple conclusion should be proved by myself, maybe I can overturn this law one day, because I found a very tiny error. After thinking for a long time, I decided to use this example, because it represents the difference between American and Chinese cultures. None of them is right or wrong. It's just how you look at this issue.
This is also why we need to learn Discrete Mathematics, linear algebra, advanced mathematics, and even physics. if you actually have a fundamental understanding of them, your programming skills are already well developed, even if you are not C. This example proves that many Chinese students, such as many mathematics and physics students in Tsinghua, have transferred their PhD or master students to the CS (Computer Technology) Major, they will have a lot of room for development, and often such people are more advanced than those who read CS from the very beginning.
You may have been discouraged because of your poor mathematics. Mathematics is a shortcut. If we do not have this shortcut, we still have ideas. This is easy to say. Looking at the software industry in China, we can see that there is no creative software. Just a little farther away, you may use Baidu to search for a technical reference. There may be 1000 to 2000 results, however, the 1000 to 2000 results are repeated. If you break this keyword into Google's U.S. server, I can clearly tell you that its low repetition rate is hard to imagine. Why are the search results associated with the idea. Because plagiarism first kills creativity, and what is creativity, that is not a profound idea, or more things that conform to the mathematical or physical logic, that is a pure idea.
Most programmers are bound up with good ideas, encryption, and how to start a business to make money quickly. Haha, It is very consistent with Chinese characteristics. In fact, once you bind your ideas to these additional things in the initial stage, they will begin to fall, unless you have a strong company to support them, for example, Google, Ms, or apple. Therefore, with a good idea, it is the belief of a programmer to go forward at any cost. Even if the market is not good, you should finish it first. After a while, you may be noticed, in other words. even if it is not successful, no one pays attention to it. For programmers themselves, this is also a kind of accumulation of experience, because as long as you write code, you will find that you need a lot of knowledge. The fear is that the position of a small semicolon (;) Pendulum changes, and there may also be qualitative changes in the program. Therefore, just do it if you got good idea.
Let's start with some development details. I have read that most people like to ask this question. Which languages do I need to develop Apple programs or Java programs.
In fact, my answer is nothing. For Java Development, objectc development, and even PHP, C is not a necessary foundation. In other words, you will c and will not be the same. Why do many people emphasize that C is required for whatever you want to learn? There are many arguments in China. They say yes, because their teachers may say so, or his senior or senior student said the same thing. But in fact, most people in China have not given a reason why they want to learn C. In fact, after reading many British documents, you will know that C is a thinking and I have not translated this word, thinking represents many thinking, not just an idea. Thinking includes your culture, your personal experience, and even your understanding of other majors. My personal understanding of C is that it is the cornerstone of a large program, but it is just a common program for you, can you. Because the current textbooks for English computer development are all explanatory, what is explanatory, the author explains the boring things with their own experience and strength in the simplest language. So you don't need any other foundation. Just like Twitter, it takes a lot of time to follow as a writer you like.
The development language is really nothing to say. You just need to remember those things, and OOP is just something. In other words, it is inheritance, polymorphism, and encapsulation. The most difficult thing is C ++, because it is only an incomplete OOP or imperfect Oop, so it is difficult because it does not fully follow the rules or principles of OOP. It is much easier than Java, because it is pure oop. However, if you know the essence of OOP, or you have mastered her, you will find that she is a reasonable thing, but it is not difficult or difficult to understand, thiniking is equivalent to some of the sentences that the author has repeatedly said in Java. Everything is an object. This object is what we encounter every day in real life. For example, you have some basic requirements for your other half. For example, if you are a male, you must be over 20 years old, if it is too small, it is your field. with field, some functions are needed. For example, if a man needs to have money, it is necessary to make money. Of course, it is necessary to implement a human function. It's that simple, just the basics of OOP. There are also a lot of in-depth work. It takes two to three days to get started, so it's not hard to ask at the beginning. Remember, in such a difficult environment in China, you can survive. What else can be considered difficult.
If you have C basics, you still need to look at objectc. Because many definitions are still different, it means that you have C ++ and may have used C ++ for many years, but when you first came into contact with Java, you also had to be somewhat uncomfortable. For example, in inheritance, you cannot inherit multiple base classes and use interfaces. More specifically, logic is more practical, such as instanceof (). There are many examples, but to put it bluntly, it is more convenient for you to develop quickly. Now that fast development is mentioned, I will start this topic here. As a newbie, don't think too much about it. Use your existing resources to implement your ideas, even if it is VB, don't worry too much about whether the Java I learned today is out of date or whether objectc is too unportable. Please give up this concept in your mind. Everything will be outdated, but thinking will not change much. We want the master or handle to be thinking.
This is another thing I learned in the United States. In fact, anyone can discuss that my other half is biological, and I don't understand computer programming at all, but I like to ask him, what do you think of this? He often makes me angry with his answers. For example, in his own project, sometimes other people write in Java, and he will be angry if his browser does not install anything that can open the Java program, why do you do not simplify the process. I was also very angry at the time. People wrote something wrong with Java, But I calmed down and thought about it. He is an end user. Although his requirements do not conform to computer principles, but at least he is bored with this program, and the person who writes it in Java can use Ajax and PHP for improvement, this makes it easier for non-programmers to understand this issue. At least it is easy to open. So if you talk to anyone and chat, you will get a lot of things. Those things you cannot learn in books all your life, but they will certainly bring your programs closer to users. If you have a chat with your grandmother (if your grandmother had a computer) for a while, they will also give you what programs they need, instead of looking for inspiration everywhere, because inspiration is on your side.
The last point is the post-discussion identity. Chinese people do not like to recognize others and always think they are better than others. However, after coming to the United States, I began to gradually acknowledge others. This is very important in the future team work. There are not many teams in China, so it is hard to understand that a team member, A good leader or even a Manager requires extra flexibility. The basis of this flexibility is to recognize others, because they will say something you don't know or don't think about at any point in time, and this prompt may be a turning point in your software project.
The conclusion of this article is: although the society makes you helpless, as a "person", we must respect and understand everything around us before doing anything, in this way, you can become a person, at least a person who is helpful to others, while a programmer uses a program to help others, rather than staying at the level of self-satisfaction.