Joke Collection Website - Mood Talk - Write the source code from 1 to 100

Write the source code from 1 to 100

The personal experience of an IT professional, for friends who have lost their way

These days I have been writing a real-time operating system kernel, and it has been completed. When I finish writing it, I will write it all Open to the public, I hope to contribute my own modest contribution to the development of domestic IT. Recently, I have seen that many student friends have the same lack of direction as I did back then, so I wrote down my experience to encourage everyone, hoping to give a little help to friends who are just starting out.

In the blink of an eye, I have been studying and working in the IT industry for more than seven years. During this period, I have made web pages, written MIS, databases, applications, communications software, hardware drivers, and protocol stacks. Until now Doing operating system kernel and IC-related development has taken many detours and suffered a lot.

I went to a third-rate university, and most people in the city didn’t even know about it. Because the school is not good, there is no hope of finding a good job based on the reputation of the school. All my hopes were pinned on my own efforts. I started studying during the holiday before my freshman year. I remember the first book I bought was "Computer Basics DOS 3.0". Don't be scared. In fact, it was already DOS 6.22 has been popularized, but I saw DOS 4.0, 5.0, and 6.0 books in the bookstore. I thought they were volumes 4, 5, and 6 like English ones. I remember looking for DOS 1.0 everywhere at that time. It’s a blessing now that I think about it. I didn't find it:) I finished learning PASCAL before the start of school. At that time, there were neither computers nor anyone to ask for help. I didn't even have the concept of what a program was, so I had to memorize the code by rote and write on paper. I didn't know it until my junior year. I bought a 486. I can’t remember how many programs I wrote on paper before that. I only know that the longest one I wrote on A4-sized draft paper was more than 30 pages. My C language, C++, and VC are all Entered under such conditions. Therefore, the conditions can be overcome. I hope that my experience can give some confidence to students in difficult conditions. The first time I got on the computer was in my brother-in-law's computer room. I was extremely excited, but as soon as I got on the computer I was immediately dumbfounded. They were using the English version of Win3.1, and my little knowledge of DOS was gone. I got on the computer and fumbled around in fear for a while. I accidentally made Word full screen and couldn't get it back. I was so anxious at the time that I thought the machine had been damaged. The first C language program was the classic HelloWorld. I tuned it for several weeks, but had very few opportunities to use it on the computer. There was no book that told me that the development environment (TC2.0) needed to be set up, and I didn’t even know there was a compiler at first. , I even cleverly changed the extension of the program I wrote from .c to .exe, and the results are predictable.

I finished learning C, X86 assembly, data structure, and C++ in my freshman year. Because I spent all my energy on self-study, I failed four courses in my freshman year. Category III schools are good for this, and I can still graduate even if I fail ten or twenty courses. But to put it a bit further, I worked so hard and still failed to pass, which shows how rigid computer education in our country is.

I was preparing to study VC and BC in my sophomore year. It was difficult to choose between them at the time. Later I chose VC, not for anything else but because of the two books in the bookstore. The VC one was 6 yuan cheaper. My efforts were second to none in the class. I studied day and night, especially after getting a computer in my junior year. Many times my father lectured me in the middle of the night and told me that I was desperate. I always felt that my foundation was poor and my memory was not good. The conditions are not good either, so I feel that I can only catch up with others by spending more time. Later, many friends said that I had a talent for learning computers, which made me dumbfounded. I used a 486, 16M memory, and 1G hard drive. At that time, the configurations of my classmates were all P166MMX. It took me an entire night to install Windows NT4.0, and it took nearly two hours to compile a program generated by the BC5.0 wizard. My monitor It was a second-hand one. It radiated very much and sparks appeared on the boot screen. It looked cool:). Once I was writing the program for too long and I thought the white editor background turned purple. I thought the monitor was broken, but later I discovered that my eyes were broken. It doesn’t work anymore, but strangely enough, my vision can still maintain 1.5 to this day, which is really a miracle. But it was that broken machine that stayed with me for two years and allowed me to learn VC, Delphi, SQL Server, etc. Later, that machine was used by my aunt for typing. According to her, one day when she was typing happily, a puff of green smoke mixed with flames came out of the monitor, and then it died.

During the vacation of my junior year, I found an opportunity to intern at a computer research institute. It was more like volunteering than an internship. I worked for two months without getting a penny. But these two months have been of great help to my development and allowed me to understand the society earlier. Of course I knew nothing about it when I first went there. I became familiar with the Internet and learned Delphi and Oracle. Because I worked very seriously and received relatively good reviews, I started working on projects with them under the recommendation of an elder. This enabled me to have my own income during my junior and senior years, and I found two more jobs during my senior year. I worked part-time at an MIS company. Although I didn't make much money, I was very satisfied with the income of more than 1,000 yuan during my student years. I finally used the money I earned to replace my computer. I started looking for a job in my senior year. I already had a lot of work experience (of course it’s very naive now that I think about it). I started to listen to my parents and wanted to go to that research institute. The department I had interned in also wanted me to go, but I don’t know why in the end Let it go, this kind of unit is quite bureaucratic, so I got angry and went to work as a MIS Team Leader in a company where I worked part-time. Between my junior year and one year after graduation, I worked in various MIS jobs, ranging from gas, cigarette factory, public security, railway, catering to colleges and universities. I could do whatever I had money for, and the work was very hard. I often worked overtime and stayed up all night. From the customer's requirements to design, coding, testing, and delivery. At that time, I felt very accomplished and felt that I was pretty good. But now that I think about it, it’s really superficial.

Students who have just entered the workplace can easily be misled. The various development tools are dazzling, and they also feel that they are highly valued by the company. However, working this way will always lead to a low-level developer. Don't tell me how important and difficult system analysis is. Do you think that talking to users about their needs and doing design is system analysis and design? How many companies in China can do it very well and in a standardized way? I am an ISO9000 internal auditor. I have also received many trainings at Rational Company. I have obtained 4 certificates. Another company asked me to do CMM. I have heard a lot of these things, but many things change their nature when they come in. A company cannot be regulated only by passing ISO9000 or CMM. I now work in a foreign company with a history of several decades, and the management inside is not what ordinary domestic companies can do. and. As a student who has never entered the society not long after graduation, it is almost impossible to master system analysis and design in a short time. Object-oriented and UML are just tools. The key is the person's own thinking. It does not mean that you are familiar with C++, Rose You can make good designs. On the contrary, if you have high quality, you can use C to write a more modular program than others using C++.

Speaking further, there is a strange circle in the domestic software development industry. Many people think that VC > Delphi > VB is really funny. I have developed these softwares. To put it bluntly, they are all tools. You should choose which one to use based on the needs of the application, rather than which one you think is superior. If you choose a certain development tool because it gives you face, it only shows that you are very shallow. If we talk about hierarchy, then these tools are not on a higher level, because they are used to use some system APIs. Microsoft friends will not think you are great just because you remember how many APIs or classes they have. You are always just their customer, what they value is the money in your pocket. I have also done system kernel, and I have encapsulated many APIs. Likewise, I will not value customers who use these APIs for secondary development unless they can make their own unique designs.

As for some people who think that C++ > C is even more ridiculous, you might as well go and find out. There are several operating system kernels written in C++, and several real-time systems use C++. C++, of course, I am not saying that C++ is not good, but in the current kernel and real-time systems, C++ cannot compete with C. As for saying that C++ is suitable for the development of application systems, that is another matter. So my point is not what tools and languages ??you use, but what you do. Your design reflects your technical level.

After working like this for a year, I felt very depressed. Most of the work I did was skilled work. There was not much improvement in my personal skills and I couldn't see the direction. So I decided to leave this city and go to Shanghai to seek better development. I also planned to give up my previous job in MIS and switch to the communications industry.

I cannot write this without mentioning my girlfriend. We met half a year before coming to Shanghai. She was an intern in our company in her senior year. The company sent her to write documents for me. Our relationship developed very quickly. quick. She told me a lot of things. Her family was originally one of the first batch of nouveau riche after the reform and opening up. Her mother loved playing cards, lost millions, and owed a lot of debt. She had a boyfriend, but she had no feelings for him. Because he gave her mother more than 20,000 yuan, and later forced her to write an IOU of 40,000 yuan. Her boyfriend had betrayed her and beat her more than once, and now he is forcing her to get married or else he will pay back the money. This man is actually a college teacher! Her mother spent the tuition her father gave her, and she couldn't get her diploma because of the arrears. Her mother was sick and needed money. I took out some of my savings and received some from my friends. I paid for her tuition and treated her mother (later I found out that the money for the medical treatment was missing, and even her mother I don’t know if she is sick or not, but there is nothing she can do). At this time, my family knew something and they were firmly opposed to me being with her, and her former boyfriend also tried his best to undermine it. In desperation, we decided to leave this sad city as early as possible and hide it from our family. Due to the rush of time, I only prepared 4,000 yuan. Her only few hundred yuan was also used by her mother. I bought three tickets, one for noon, two for the evening, and mine at noon. My family put me on the boat, and I got off the boat as soon as they left. She and I took the evening boat and left the city where she and I had lived for many years. All we took with us was a debt. The two of us who have never been to Shanghai are stubborn and are unwilling to trouble our classmates and friends. It was 6:30 in the evening when we arrived in Shanghai. We didn’t know where to go. We found a hotel that cost 20 yuan. The room didn’t even have windows. The weather in July was unbearably hot and the room was very stuffy. The next day we started renting a house. Because we didn’t have much money, we basically walked. It took us a week. After wandering around Pudong for an unknown number of times, we found a house for 400 yuan, but we didn’t know much about Shanghai. We had to pay three to one, plus half a month's agency fee. After buying some pots and pans, we only had 800 yuan left, and we didn't even have a job yet. This 800 yuan needed to support us until we got the third one. One month’s salary. In order to save money, we cook our own food and only spend two yuan on groceries every day. She likes to eat very much (maybe she often went hungry in college). I really feel that she is so frugal now. Very intolerable. Her former boyfriend did not let her go either. He often called her to harass her and came to Shanghai to see her. He also said a lot of threatening words to her. She was too kind and said that he had helped her before and asked me not to be in the same relationship with him. . I spent every day at home waiting for the interview notice. Originally, I wanted to quickly find an MIS company to solve the problem at hand, but she insisted that I not give up on my ideal. Finally, the hard work paid off, and I found a communications company for 4,000 yuan. Although the salary cannot keep up with the price offered to me by the MIS company, it is still enough to survive in Shanghai. She also found a job. She cried on the first day at work. This was the first time she shed tears in Shanghai. I felt very sad and moved.

Since this is a brand new industry, I have reduced myself to zero. The VC, Delphi, and database I learned are of no use. What is in front of me are embedded, protocols, and signaling that I have never learned before. exposed knowledge. I knew I had no way out, so I studied hard. I regarded myself as a fresh graduate, and every time I worked hard, I gained a lot. After half a year, I finally became familiar with the job, and received recognition from the company, and my salary was also increased by one level. In the following days, we lived frugally and paid back the more than 10,000 yuan we owed our friends, and our lives finally got back on track. At this time, my girlfriend told me that she wanted to take the postgraduate examination, and I supported her very much, so she quit her job and prepared for the exam at home.

In addition, I would like to thank my ProjectManager here. He turned out to be a product manager of a large communications company. He is very kind to people. I learned a lot of knowledge from him, and he also gave me a lot of knowledge. Lots of selfless help. He gives me ample space and trust at work. I remember that the company arranged for me to maintain an access server software. Since the code size was not too small (50,000 lines) and the information and documents were incomplete, it was very difficult for me to maintain it, so I wanted to redo it, but the company leaders were not very supportive. , may feel that the workload is too much, but he strongly supports me. In private, he lets me go and do it, and he squeezes in time to do my maintenance work.

With his support, I spent half a year completing the software for accessing the server and implementing a relatively complete TCP/IP protocol stack. Here I learned embedded system design, driver development, TCP/IP and a lot of communication knowledge. It took me a year to finally transfer myself from MIS development to the communication industry and gain a firm foothold. A lot of my development is direct operation of hardware, and I am no longer constrained by Microsoft's operating system, VC, Delhpi and other development tools. I finally see another sky.

I like to get to the bottom of things when doing things. As development deepens, software development and hardware are more and more closely related. The lack of hardware knowledge has hindered my development, and I basically master the chip technology. In the hands of foreign companies, this is a very big restriction on system-level design. When a new product comes out, the first profit (and often the most generous profit) is often earned by IC companies such as Intel and Motorola. , domestic manufacturers can only drink some soup. Therefore, I am determined to solve my own hardware technical obstacles and plan to leave the communications industry and enter IC design-related fields.

Of course, I understand that if I know very little about hardware, no IC company will be kind enough to recruit a clueless person like me for training. So I must work hard to lay a good foundation and learn some relevant knowledge to prepare for the future. Just when I started switching from MIS to communications, I read a lot of books on communications and worked as a RADIUS billing sorting desk for an ISP. It was against this background that the communications company gave me this opportunity. The communications company I work for is engaged in system design, and there are many PCB Layout hardware personnel. I usually pay attention to learning from them. Since I work in software, I was embarrassed to read hardware information in the company, so I had to read it at home at first. When I first came here, I worked overtime for a year in a row in Shanghai, but I stopped working overtime later because I had to squeeze in time to study. I usually go to bed around 12 o'clock and get up at 5:30 the next day. I go to work relatively early. If there are not many people on the subway, I Also used for reading. Of course, learning will not be smooth sailing. I accumulated some questions that I really didn’t understand and asked the hardware staff. Their help made my learning progress much faster, because half of my time was spent on solving problems when I studied by myself without anyone’s guidance. I am very lucky to have such a learning environment. In the next year, I learned to read hardware schematics and learn simple hardware design

(There is still a big gap in analog circuits). This is how it goes. When you make software, others will always think you are a software developer. Others may not agree when you start learning hardware. A friend from ZTE also told me that it is impossible for one person to learn everything. I understand this too, but I wish I could do better. But when you become familiar with the hardware, everyone will think that you already know both hardware and software, and your colleagues will take it for granted. At this time, I can bring the hardware information to the company openly and openly, and no one will make a fuss anymore. What makes me more proud is that I made an IAD (soft-switching terminal equipment) system solution through my own efforts, including the selection and design of software and hardware. This solution has been approved by the company and I feel very gratified by the recognition from my colleagues.

Technology complements each other. When my hardware has made certain progress, my software design has also been greatly improved. I can understand the problem from a deeper level. The access server CPU I made is Friends who are familiar with Motorola PowerPC860 know that batch data transmission between 860 QMC and software usually uses BD tables. Hardware personnel are accustomed to using fixed BD tables when doing driver work. Every time data is received or sent, the data is copied from the BD table to the user Buffer. , or copy from the user Buffer to the BD table. Due to my deeper understanding, I re-implemented this process myself. Using the dynamic BD table, the driver receives data from a network port and submits it to my software for three-layer exchange. Sent from another interface without a copy. This design greatly improves performance and brings the system's indicators close to theoretical values. The combination of software and hardware has brought my design level to a higher level. The operating system I am writing now, after compilation, I decompile the program into assembly, find out the unoptimized code, and then make adjustments in the C program.

For example, many CPUs do not have special multiplication instructions. Everyone should know that performing a multiplication operation on this kind of CPU often takes a lot of instruction cycles. Some friends will say that I know this, and I will try to avoid using × No., but things are often not that simple. Do you know how the subscript operation of arrays is implemented in C language? If you look carefully at the disassembled code, you will understand that through the same subscript positioning operation, the C compiler will sometimes generate displacement instructions, but sometimes it will use multiplication to implement it. The efficiency of the two is often very different, so understand Only with these questions can you maximize system performance. I won’t go into details about these issues. If you are interested, you can discuss them together later.

Speaking further, I sincerely hope that friends who are more advanced in software will have the opportunity to learn hardware and other related knowledge, especially those who do low-level development and embedded design. This is very helpful for improving software technology, otherwise you only know how many things should be done but not why they should be done. This view of mine has also been verified by my current IC company Project Manager. He told us that the company’s current software manager for 802.11 chip products was originally engaged in the hardware design of the chip. A certain person was originally engaged in software development and is now engaged in IC production. There are many similar examples, but this trend is not very popular in China. .

I have some experiences to share with you. Only after I have done my job well will I learn techniques that have little to do with my work, so that the company’s bosses will not be disgusted. I usually don’t ask questions to senior people, but to friends with relatively junior qualifications, such as students who have just graduated, because they tend to explain to you in detail, while senior people usually think your questions are too simple, so they answer It's also very simple, and I'm embarrassed to ask more questions. I will only ask them after my technology has reached a certain level, and they will be able to give you a more in-depth answer. In addition, some friends said that I had better opportunities, and they also hoped to get a new job, but unfortunately they didn’t have the opportunity. I only smiled bitterly after hearing this. Anyone who knows about my opportunities should know that I was not born into an IT family :) nor anyone. They have promoted me along the way, and I have walked all the roads by myself. My mother passed away relatively early, and my stepmother (I call her aunt) watched me work hard. One time she saw that I was still writing programs on New Year’s Eve, and she said Even if you work hard like me, you can learn it.

My ultimate goal is IC rather than PCB, so my next step is to start learning IC design knowledge. None of my colleagues in the company understand IC design, so I have to rely on myself for the rest of the journey. I bought a lot of related books and checked a lot of information online. I spent a lot of time learning VHDL and using software. I did some simple design and simulation (not designing ASIC, just for FPGA). As the study deepened, I gradually understood the basic process of IC design, and also understood the hardships of this road. At this time, I was ready to change jobs. I submitted my resume to a well-known IC design company in the industry and passed a long interview (more than 4 hours). I'm quite satisfied with everything else, except for the salary, which is unsatisfactory. I understand why, because I'm new to this industry and have no experience. Once again, I'm setting myself free. The boss of the company asked me if I could accept more than 6,000 a month. I knew he would follow the rules. Thinking about my friends in the communications industry, most of them have an annual salary of more than 100,000 yuan, and there are many people with a monthly salary of more than 10,000 yuan. My friends also introduced me to many companies with good remuneration. How should I choose? I was very hesitant at the time. , I love my career, I yearn for my pursuit, but I am also an ordinary person, I also need to support my family, and I also want to buy a house and a car earlier. Life has presented me with a difficult problem.

Einstein said when he was 63 years old, "If a person does not achieve the greatest scientific achievement before the age of 30, he will never achieve it." This sentence gave me a lot of pressure And shock, I will be 26 years old soon, and there are only four years before 30. I must seize the precious time in these few years and strive to reach the highest peak of my technology. For this ideal, in order to be closer to my dream, I chose this IC company. I understand that my salary is almost the same as that of the company's new master's students, but for future development, I can only endure it, and everything has to be restarted. start.

Changing industries is a very painful process, especially changing from a proud position to an unfamiliar position. It feels like stepping out of a warm quilt and jumping into ice water, which is hard to accept. In my original communications company, I was the only employee who received five salary increases in two years. I was highly recognized by the company and my colleagues, and I was often entrusted with important tasks at work. But now all this is in the past. In the new company, I am just a newcomer. No one knows or cares about my past achievements. I decided to start over. I regarded myself as a new graduate, and I wanted to use my efforts to be recognized by the company. Entering a new industry is very painful. I told myself that I must endure it all. Although there are many temptations outside, now that I have made a choice, I will not allow myself to give up easily.

I have been working in this new company for more than a month now. It was very difficult at the beginning, but now I am slowly getting used to it. At the end of the first month, the Team Leader talked to me and said that I was the best among the new employees. I was very pleased. This can be regarded as an affirmation of my efforts. I would also like to thank my girlfriend. She has given me a lot of support and encouragement. Every time I waver, she encourages me and lets me stick to my ideals. When I first came to Shanghai, she told me not to force myself. I went to do MIS. This time, she allowed me to resist the temptation of a monthly salary of over 10,000 yuan. Without her, I might not have achieved what I have today. The company now has its own operating system, its own CPU, DSP and other chips. Here I can learn the most advanced technology in the world. Our design and development no longer completely rely on other people's hardware and systems, which makes me very happy. . I plan to wait until my work is on track to learn new knowledge and realize my ideals.

In the next two years, I set several goals for myself:

1. Work hard to do my job well and gain recognition from the company and colleagues at work; < /p>

2. Work hard to learn IC hardware design knowledge, ask colleagues for advice, and take advantage of every opportunity to practice more;

3. Implement the main part of my real-time operating system and complete TCP/IP Protocol stack module and release the source code for free;

4. Marry my girlfriend and buy a small house. This is the most important thing because I understand that a career can be restarted, but it is precious. Love is hard to regain.

Let me mention here the operating system I am developing now. It is a real-time embedded system that currently supports the following features:

a. Supports time slice rotation scheduling and priority-based scheduling. , up to 64 priorities;

b. Preemptive real-time kernel;

c. In order to facilitate transplantation, the main body is implemented in standard C;

d. Assembly The code is very small, less than 100 lines;

e. Supports task management, each task has an independent stack;

f. Process synchronization and communication are currently completed with Semaphore, and Message Queue is in progress Debugging;

g. Implemented scheduled system calls;

h. Can simulate debugging on Windows

I also plan to implement priority inversion protection in the next step , Event Flag, Data Pipe, memory management (previously implemented), driver interface, etc. After that, I will work hard to improve it, such as adding file system, protocol stack, debugging interface, etc. I hope friends can provide their own opinions and suggestions, thank you very much!

Postscript:

As some friends said, my experience may be misleading to some friends, so I must explain it here. Before I came to Shanghai, I studied too hard and often only slept for more than 3 hours at night. I was 1.71 meters tall and only weighed 108 pounds at that time (I am over 130 now). My family also said that I would not live to be 60 years old if I worked so hard, but at that time I Too stubborn, I told them that as long as I can realize my ideal and live to be 50 years old, that's enough for me. My desperate efforts at that time affected my body. One morning, I suddenly experienced severe pain in my lumbar muscles. The pain was so severe that I fell on the bed and could not stand up. Although I have paid more attention to it now, there is still a dull pain sometimes. Later, my girlfriend convinced me that I would no longer be like this after coming to Shanghai. I often quote my father's words, "The body is the capital of revolution."

And I also found that working hard is not the answer. I can stay up for one or two all-nighters. The most I worked for three days and three nights in a row, but I didn't recover for half a month. Is this not worth the gain? Learning should be a long-term process, like a marathon rather than a sprint. I now pay great attention to adjusting the intensity of my study and work. I have to ensure that I have as much energy as possible every day. Some young friends feel that they should also work hard, which makes me somewhat worried. If my story can help you study and work I would be very happy if I had a little more interest in you, but I would feel very guilty if I misled some friends and asked you to make some unworthy efforts.

There is no distinction between high and low in technology. I used to change industries because of my own interests, not because of any prejudice against any industry. I hope that my experience will not give my friends a wrong direction, thinking that I am always developing towards higher technology. In fact, it is very difficult to reach the top in all walks of life. Then again, although technology is not high or low, the threshold is high or low. In any case, the threshold for making IC is higher than that for making web pages. This is undeniable. The country needs all kinds of talents, but as an individual, you should still have the idea of ????working hard and strive to do better in the industry you like, and you should not stay at a relatively superficial level.

I am a person who feels relatively self-aware. Perhaps my biggest advantage is that I know that I have many shortcomings :). Many twists and errors in my story are caused by my shortcomings. I hope everyone will look at my experience with a cautious eye and not be fooled by my "sweet words". I was a bit random in my studies, which brought me endless trouble and greatly hindered my development. I remember that my grades were relatively good when I was a child, but later my studies were seriously biased, which caused my grades in middle school to decline repeatedly, and I was not admitted to any good school. A friend of mine when I was a child had similar grades to mine, but did not have my shortcomings. After attending Tsinghua University, I later went to the United States for further study and studied theoretical science under a famous mentor. This might not be a better way out. In addition, my learning methods are constantly improving. In the past, learning was too focused on quantity and time, which was hard and inefficient. Now I pay great attention to the efficiency and skills of learning. This is the shortcut to learning (of course, this does not mean that Opportunistic), for example, if you want to learn a relatively unfamiliar technology, if you have the conditions, you might as well ask an experienced person. You don’t need to ask a lot. Often his casual words will be of great help to you, even more than if you read a Book of the week. If you study with this idea in mind, you will save a lot of time. Why not do it? I have learned a lot over the years. Since I was very blind at first, the things I learned were disorganized. Looking back now, it makes me laugh and cry. I wasted a lot of time on some knowledge that is not necessary to understand deeply. After all, one person’s energy There are limits. Like me, many friends have memorized the Wubi glyph. It is indeed a good input method, but for a developer, it is definitely not worth memorizing. Your time should be spent on valuable things. I have done a lot of things like this. I memorized the commands and shortcut keys of CCED and WPS. After dBase basically retired from the stage of history, I spent a lot of time learning how to use it. Therefore, I lacked planning in the early stages of my study, and had no clear short-term goals or mid-term goals, only a vague long-term ideal. This is just like doing design. Good design involves many processes from abstracting requirements to code, and you cannot start coding immediately after getting the requirements.

Of course, I have gained more or less from studying and working over the years. Now I will talk about some of my learning experiences. These methods may not be correct, and I am constantly exploring and improving. I have relatively clear goals for my study and work. I will not learn a certain technology on a whim. I will consider a lot before making a decision, including long-term development, personal route planning, the price to be paid, and possible encounters. Difficulties and solutions, etc., will be formulated after the decision is made, including short-term, medium-term and long-term, and the resources available around us (including good books, materials, software and hardware environments, as well as experienced Friends or teachers), and the plan for how to transition from each stage to the first stage of high school. Once you get started in a learning stage, it usually goes relatively smoothly, but it is usually more troublesome to cross stages, such as switching from learning basic knowledge to practice.

In addition, I also have my own way of buying books. There are far less high-quality books in the world than low-quality books. For an unfamiliar technology, I often make the wrong choice when I buy a book for the first time. Even if I buy a good book, its direction will be different. It may not be suitable for you, so I usually first look up some introductions to the technology on the Internet. After I have a little idea, I buy a book that is thin, relatively cheap and has relatively general content. This is what domestic authors are best at writing. book:), after browsing it again, I will basically understand the key points of this technology, and it will be much clearer to buy books and make plans later. Otherwise, it is often difficult to find a good book at the beginning, and after buying it, you study hard. Sometimes you only find out halfway through the study that it is a low-quality book or a relatively outdated technology, which is very frustrating. In addition, asking someone with experience to help you introduce it is usually a good choice.

Some friends want to learn communications and embedded development, but they always feel that they do not have the software and hardware environment. I will introduce to you how to do it based on my understanding