Program life: the struggle of a programmer

Source: Internet
Author: User

I have been writing a real-time operating system kernel over the past few days. I will make it public later, hoping to do my part for the development of domestic it. Recently, I have seen that many students and friends have no direction, so I wrote my experiences and shared them with you. I hope I can help my friends who just like me a little bit. In a twinkling of an eye, I have been studying and working in the IT industry for more than seven years. During this period, I used Web pages, MIS, databases, applications, communication software, hardware drivers, and protocol stacks, now we have developed the operating system kernel and IC-related development, which has taken a lot of detours and suffered a lot.

I am on a three-stream College, and most people in the same city do not know. Because the school is not good, it is not expected to find a good job by the reputation of the school. All my hopes are pinned on my own efforts. I started my study during my New Year's holiday. I remember the first book I bought was "Computer Basics dos3.0". don't be scared. In fact, we already popularized dos6.22, but I saw the books of dos4.0, 5.0, and 6.0 in the bookstore. I thought they were the fourth, fifth, and sixth books like English, I remember looking for dos1.0 everywhere, and now I think I did not find it. :) before I started school, I completed Pascal. At that time, no computer or anyone could ask for advice. I didn't even have the concept of a program, I had to memorize the code and write it on paper. I had a 486 instance until I was a sophomore. Before that, I couldn't remember how many programs I wrote with paper, I only know that I have written more than 30 pages of the longest A4 draft paper. My C language, C ++, and VC are all getting started under such conditions. Therefore, the conditions can be overcome. I hope that my experience will give the students with hard work a little confidence. My first computer was in my brother-in-law's machine room. I was so excited that I could never miss it. They used win3.1 in English, I saw a ghost in my dos knowledge. I was so worried that I could not recover the word when I accidentally turned it into a full screen, I thought the machine was broken by me. Explain. I finished C and x86 compilation, data structure, and C ++ in my freshman year. Because the energy is spent on self-study, the first and fourth courses are highlighted. This is good for the three types of schools, and the same is true for the 10 or 20 courses. However, as far away as you can say, I am so hard at all. It can be seen how rigid computer education is in our country.

The sophomore year was prepared to learn VC and BC. At that time, it was difficult to choose between them. Later, I chose VC. Instead of VC, I only bought two books in the bookstore. VC was 6 yuan cheaper. My hard work is unmatched in my class. I learned things day and night, especially when I had a computer. Many times my father taught me in the middle of the night that I was not killed. I always felt that my foundation was poor, the memory is not good, and the conditions are not good, so I feel that only a little more time can catch up with others. Many of my friends later said that I had the talent to learn computer, which left me speechless. I used 486, 16 M memory, and 1g hard disk. At that time, the configurations of the students were all p166mmx. It took nearly two hours to install a program generated by the bc5.0 wizard, my monitor is a second-hand one. The radiation is very high, and the boot screen Sparks. It looks very cool :). Once I wrote a program too long, I thought how the white editor background turned purple, I thought that the monitor was broken, and then I found my eyes could not work, but it was strange to say that my vision could still be 1.5 today. It was a miracle. However, the broken machine has been with me for two years and I have learned VC, Delphi, and sqlserver. Later, the machine was used for typing for my aunt. According to her, one day she was playing happily. A smoke was drilled out of the monitor with a flame in it before it went to bed.

I got a chance to work as a volunteer at a computer research institute during my junior year holiday. I did not get a penny after two months of work. However, these two months have helped me a lot in my development, and I learned more about society. When I first went there, I certainly knew nothing about it. I got familiar with the network and learned Delphi and Oracle. I got a good review from my serious work. I started to work with an elders on projects, which gave me my income when I was a junior or senior, in my senior year, I went to two MIS companies to work part-time. Although I didn't have much money, I was very satisfied with my income of more than 1000 during my student period, I finally used my money to change my computer. When I started to look for a job in my senior year, I had a lot of work experience (of course I think it's very naive). I started to hear my parents want to go to that research institute, and I hope I can go to that department after my internship, however, I don't know why I finally ended up being a bureaucratic organization. In my breath, I went to a company I work for as a mis teamleader. I have done various MIS jobs from my junior year to one year of graduation, from gas, tobacco factory, public security, railway, food to colleges and universities, and I have worked very hard on what I have to do with money, we often work overtime and stay up all night, from talking with customers about requirements to designing, coding, testing, and delivery. At that time, I felt very fulfilled and I felt pretty good. Now I think it's really superficial.

Students who have just started their jobs can easily be misled. Various development tools are dazzling and very important to the company. However, such jobs will always be a low-level developer. Don't tell me how important and difficult a system analysis is. Do you think that designing your own demands is System Analysis and Design? How many companies in China can do well? I am an ISO9000 internal auditor and have been trained many times in rational, obtained four certificates, and another company asked me to do CMM. I have heard many of these things, but many things have changed in China. A company can be standardized without Passing ISO9000 or CMM. Now I am working in a foreign company with decades of history, the management in it is not comparable to that in Chinese enterprises. As a student who has not entered the society before graduation, it is almost impossible to grasp the system analysis and design in a short time. object-oriented and UML are just a tool. The key is people's thoughts, it is not that you are familiar with C ++ and rose to make a good design. On the contrary, if you have a high quality, you can use C to write programs that are more modular than others using C ++.

There is a strange circle in the software development industry in China. Many people think that VC> Delphi> VB is really funny. I have developed these software. To put it bluntly, they are all tools. You should choose which one to use based on the application's needs, rather than the upper layer. If you choose to use a development tool with a strong face, it can only show that you are very thin. If we say hierarchies, these tools are not hierarchies, because they are used as system APIs, microsoft's friends will not think you are amazing because you remember how many APIs or classes they have. You will always be their customers and they value the money in your pockets. I have also worked on the system kernel, and I have encapsulated many APIs. I also don't care about customers who use these APIs for secondary development unless they can make their own unique designs.

Some people think that C ++> C is even more confusing. You may as well inquire about it. There are several operating system kernels that are written in C ++, another few real-time systems use C ++. Of course, I am not saying that C ++ is not good, but the current kernel and real-time system c ++ cannot match C, c ++ is suitable for application system development. So my point is not what tools and languages you use, but what you do. Your design reflects your technical level.

After doing this for a year, I felt very depressed. Most of my work was done by skilled workers, and I could not see much improvement in my personal technology. Therefore, I decided to leave the city to go to Shanghai for better development, and planned to give up my previous MIS transfer to the communication industry.

I can't help but mention my girlfriend. We met her half a year before coming to Shanghai. she was an intern in our company when she was a senior. The company sent her to write documents for me, and our feelings grew fast. She told me a lot about her family, which was originally the first outbreak of Reform and Opening up. Her mother loves to play cards, lost millions, and owed a lot of debts. She has a boyfriend, but she had no feelings for him, because he gave her mother more than 20 thousand yuan, and then forced her to write 40 thousand yuan of loan, her boyfriend betrayed her and beat her more than once. Now she is forced to get married, or she will pay back the money. This person is still a college teacher! Her mother spent her father's tuition because she had no way to get a diploma in arrears. Her mother is ill and needs money now. I took out some of my savings and received some money from my friends, I paid her tuition fee and showed her mother an illness (later I learned that the money for seeing a doctor is complete, and I don't even know if her mother is ill, but she still has no way ). At this time, my family knew something and resolutely opposed me to be with her. Her old boyfriend also tried to destroy me. In desperation, we decided to leave this sad city early and stay away from our home. Due to the rush of time, I only prepared 4000 yuan, and her only a few hundred yuan was required by her mother. I bought three tickets, one for noon, the two pictures are for the evening. At noon, my family sent me to the ship and they got off the ship as soon as they left, she and I took the night boat and left the city where I lived with her for many years. All they took was debt. We have never been to Shanghai and are reluctant to bother our classmates and friends. We didn't know where to go when we arrived in Shanghai at half past six in the evening. We found a hotel with 20 yuan, and this room didn't even have a window. The weather in July was so cool, the room is very sultry. The next day, we started to rent a house. Because we didn't have much money, we basically walked. It took us a week and I don't know how many laps I found a 400-piece house in Pudong, however, we do not know that Shanghai is a three-pronged solution, and we have to pay an intermediary fee for half a month. After buying some pots and pans, we only have 800 yuan of money and our work has not been settled yet, the 800 yuan is worth the first monthly salary. To save money, we only spend two yuan a day to buy food, she is very fond of eating (or her willingness to go hungry often in College). I can't bear to see her saving money. Her old boyfriend did not let her go, often called to harass her, and came to Shanghai to see her. She also said a lot about threatening her. She was too kind and said that he had helped her before, after all, tell me not to be familiar with him. In the future, I will wait for an interview every day at home. I originally wanted to quickly find a mis company to solve the current difficulties, but she insisted that I should not give up on my own ideals and finally worked hard, I found a communication company, and even though I had to pay 4000 yuan, I could not catch up with the price offered by MIS, but it was enough to survive in Shanghai. She also found a job. She cried when she went to work on the first day. This was the first time she came to Shanghai to shed tears. I felt very uncomfortable and touched.

As a brand new industry, I have reduced myself to zero. The VC, Delphi, and database I have learned are not useful, I am facing the knowledge of embedded systems, protocols, and signaling systems that I have never touched before. I knew that I did not leave, so I tried my best to study hard. I considered myself a fresh graduate, and I tried my best to get the harvest. Over the past six months, I finally became familiar with my work and was recognized by the company, the salary is also increased by a level. In the days that followed, we spent less than 10 thousand yuan on our friends and finally got on track. At this time, my girlfriend told me that she wanted to take a postgraduate exam and I was also very supportive. So she resigned and prepared for the exam at home.

In addition, I would like to thank my projectmanager for being a product manager of a large communication company. He is very kind to people and I have learned a lot from him, he also gave me a lot of selfless help. At work, he gives me plenty of space and trust. I remember that the company arranged for me to maintain an access server software. Because the code volume is not too small (50 thousand lines), the materials and documents were incomplete, and it was very difficult for me to maintain them, therefore, if you want to repeat it, the company leader may not be very supportive and may feel that the workload is too heavy, but he strongly supports me. In private, he asked me to let it go, my maintenance work is busy. 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 a lot about embedded system design, driver development, TCP/IP, and communication. I finally transferred myself from MIS development to the communication industry for a year and gained a firm foothold. I have developed a lot of direct hardware operations, and I am no longer constrained by Microsoft's operating systems, development tools such as Vc and delhpi. I finally see another blank space.

I like to follow the root of my concerns when I do things. With the development going deeper, software development and hardware become more closely linked. The lack of hardware knowledge creates obstacles to my development, in addition, the chip technology is basically in the hands of foreign companies, which is a huge constraint on system-level design. A new product comes out, the first profit (and often the most lucrative profit) is often earned by IC companies such as Intel and Motorola. domestic manufacturers can only get some help. Therefore, I am determined to solve my hardware technical barriers and intend to leave the communications industry and enter the relevant fields of icdesign.

Of course, I understand that if I do not know much about hardware, no IC company will be kind enough to hire someone like me for training. Therefore, I must lay a solid foundation and learn some relevant knowledge to prepare for the future. Just as I started to switch from MIS to communication, I have read a lot of communication books and have done radius billing sorting for an ISP, in this context, the communication company gave me this opportunity. My communication company is engaged in system design. I have many PCB layout hardware personnel. I usually pay attention to learning from them. Because I am working on software, I am sorry to read hardware materials from the company, so I had to watch it at home. I had to work overtime for a year since I first came to work in Shanghai. I didn't want to work later, because I had to squeeze out time to study. I usually slept around half past five and started from the next day, I went to work early, and I used to read books if there were not many people on the subway. Of course, learning will not be smooth sailing. I have accumulated some questions that I really don't understand and asked the hardware staff. Their help has made my learning progress much faster, because I learned it by myself without human resources, I spent half of my time solving difficult problems, but such problems often make me suddenly enlightened by a sentence from others. I am very glad that I have such a learning environment. In the next year, I learned how to look at the hardware schematic, and how to design simple hardware (there is still a small gap in analog circuits). This is the case. When you prepare software, others always think that you are a software developer. When you start to learn hardware, others may not agree. A friend of ZTE also told me that a person cannot finish everything. I also understand this, but I hope I can do better. However, when you are familiar with hardware, you may feel that you are familiar with software and hardware, and your colleagues are also familiar with it. At this time, I can take the hardware materials to the company, and no one will be surprised. I am proud that I have made an IAD (Softswitch terminal device) system solution through my own efforts, including the selection and design of software and hardware, this solution has been recognized by the company and colleagues, and I am very pleased.
Technology is complementary. When my hardware has made some progress, my software design has also been greatly improved. I can understand the problem from a deeper level, the CPU used to access the server is Motorola powerpc860. All familiar users know that 860 QMC and the batch data transmission of software usually adopt the BD table method, hardware drivers are used to adopt fixed BD tables. Every time data is received or sent, the data is copied from the BD table to the user buffer, or from the user buffer to the BD table, due to my deep understanding, I implemented this process again and used dynamic BD tables to drive data receiving from a network port and submitting it to my software for layer-3 Exchange, no copy is made until it is sent from another interface. This design greatly improves the performance and makes the system indicators close to the theoretical value. The combination of software and hardware has brought my design level to a certain level. I am writing this operating system. After compilation, I decompile the program into an assembly, find out the unoptimized code, and then adjust it in the C program. For example, many CPUs do not have special multiplication commands. As we all know, a multiplication operation on such CPUs often takes a large number of instruction cycles, some may say this. I know that I will try to avoid using the X number, but it is often not that simple. Do you know how to implement the array subscript operation in C? Take a closer look at the disassembly code and you will understand that the C compiler sometimes produces displacement commands through the location operation of the lower mark, but sometimes it is implemented by multiplication, and the efficiency of the two is often quite different, so you can understand these problems to maximize the system performance. I will not talk much about some questions. If you are interested, you can discuss them later.

In other words, I sincerely hope that more in-depth friends who have made software will have the opportunity to learn hardware and other related knowledge, especially for underlying development and embedded design. This is of great help to the improvement of software technology. Otherwise, you only know many things but do not understand why. My point of view is also verified by the current IC company project manager. He told us that the software manager of the company's 802.11-chip product was originally designed for the chip hardware. A certain person was originally made for the software and is now working on the IC. There are many similar examples, it 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 the technologies that are not closely related to my work, so that my boss will not dislike me, in the entry stage, I usually don't ask senior people, but ask some friends with relatively low qualifications, such as students who have just graduated, because they will often give you a detailed explanation, senior people usually think that your questions are too simple, so they are very simple to answer. I am sorry to ask more questions. After a certain level of technology, I will ask them, and they can give you a deeper answer. In addition, some friends say that I have a better chance. They also hope to have a new job, but unfortunately they do not have a chance. I have heard a bitter smile, and all the people I have the opportunity to know should know, I was not born in any it family :) no one promoted me along the way, and all the roads came out by myself. My mother died earlier, and my stepmother (I called her aunt) looking at my efforts, she once saw that I was still writing programs, and she said that I could learn from the hard work of wood.

My ultimate goal is IC rather than PCB, so my next preparation begins to learn about icdesign. My colleagues in the company did not understand the icdesign, and they had to rely on their own. I bought a lot of related books and checked a lot of information on the Internet, I spent a lot of time learning VHDL and used software for some simple design and simulation (no ASIC design, just for FPGA, I gradually understood the basic process of icdesign and the hardships of this road. At this time, I was ready to change jobs. I submitted my resume to an industry-renowned icdesign company and passed a long interview (more than four hours ). I am satisfied with everything else, but my salary is not satisfactory. I also understand the reason because I am a newcomer to this industry and I have no experience. I once again cleared myself. The boss of the company asked me if I could accept it for more than 6000 months. I know that he is also responsible for the work. Think about my friends in the communication industry, basically all of which have an annual salary of more than 0.1 million, and the monthly salary of over is also everywhere. My friends also helped me introduce a lot of companies with good treatment. How should I choose, at that time, I was hesitant. I love my career. I yearn for my pursuit, but I am also an ordinary person. I also need to support my family. I also want to buy a house and buy a car earlier. Life creates a problem for me.

Einstein said at the age of 63, "if a person has never achieved the greatest scientific achievement before the age of 30, then he will never have it ." This sentence gave me a lot of pressure and vibration. I am 26 years old and only four years away from 30. I must pay close attention to the precious time of these years, strive to reach the highest technical peak. 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 my master's students who just entered the company, but for the future development, we can only endure it, and everything has to begin again. Changing the industry is a very painful process, especially switching from a proud position to a strange position. It is unacceptable to drill out of the warm quilt and jump into the ice water. In the original communication company, I was the only employee who had raised his salary five times in two years. Both the company and my colleagues gave me great recognition and I was often held responsible for my work. But now it's all over. In a new company, I am just a new employee. No one knows or cares about my past achievements. I decided to start over again. I saw myself as a new graduate student. I had to use my own efforts to get the company's approval. It is very painful to enter a new industry. I told myself that I must endure all this. Although there are many temptations outside, I cannot give up without making a choice.

I have been working in this new company for more than a month. It started to be very difficult and now I have adapted to it. At the end of the first month, the team leader talked to me and said that I was the best employee among the new employees. I am very pleased. This is also an affirmation of my efforts. I would like to thank my girlfriend for her great support and encouragement. She encouraged me every time when I was shaken, so that I could stick to my own ideals, when I first came to Shanghai, she asked me not to barely do mis. This time, she gave me the temptation to withstand the temptation of a monthly salary of over ten thousand. Without her, I may not have the performance of today. The current company has its own operating system, its own CPU, DSP and other chips. Here I can learn the most advanced technology in the world, I am very happy that our design and development do not depend entirely on other people's hardware and systems. After my work is on the right track, I plan to learn new knowledge and realize my ideal.

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

I. Strive to do my job well and get the approval of the company and colleagues in terms of work;

2. Learn IC hardware design knowledge, consult with colleagues, and use all opportunities to practice more;

3. Implement the main part of my real-time operating system, complete the 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 my career can come back, but the precious feelings are hard to be recovered.

The operating system I have developed is a real-time embedded system that currently supports the following features:

A. Supports time slice rotation scheduling and priority-based scheduling, with a maximum of 64 priorities;

B. preemptible real-time kernel;

C. For ease of transplantation, the subject is implemented using standard C;

D. Very few Assembly codes, less than 100 lines;

E. Supports task management. Each task has an independent stack;

F. Currently, semaphore has been completed for Process Synchronization and communication, and message queue is being debugged;

G. Scheduled system call is implemented;

H. It can be simulated and debugged on Windows.

I plan to implement priority inversion protection, event flag, data pipe, memory management (previously implemented), and driver interfaces. After that, I will try my best to improve it, such as joining file systems, protocol stacks, and debugging interfaces. I hope my friends can give me their comments and suggestions. I am very grateful!

Postscript:

As some friends have said, my experience may mislead some friends. Here I must explain it. I used to study too hard before I came to Shanghai. I often only slept for more than three hours at night. I was 1-meter tall and 71, at that time I only had 108 (I am more than 130 ), my family also said that I was so hard to survive for 60 years, but I was so stubborn at the time, I told them that as long as I could live for 50 years, I would be enough. At that time, my body was affected by my desperate efforts. One morning, my waist muscles suddenly suffered a severe pain and I fell into bed and couldn't stand up. Although I have already paid more attention to it, sometimes it hurts. Later, my girlfriend convinced me that I would not do this again after I came to Shanghai. I often quote my father's saying "the body is the capital of the revolution ".

I also found that it was not a solution. I could endure one or two nights. I worked for three days and three nights at most once, but I did not recover for half a month. Is this not worth the candle? Learning should be a long-term process, such as marathon rather than a hundred meters sprint. I pay great attention to adjusting the intensity of my study and work. I want to ensure that I have enough energy every day. Some young friends feel that they should work hard, which worries me a little, I will be very happy if my story can make you more interested in study and work, but I will feel very guilty if I mislead some friends and make you do something unworthwhile.

There is no distinction in technology. I used to change the industry because of my own interests, rather than prejudice against any industry. I hope that my experience will not give a wrong orientation to my friends. I feel that I have always been developing towards a higher level of technology. In fact, it is very difficult for all walks of life to be top-notch. Even though the technology is not cheap, the threshold is high and low. In any case, the threshold for IC creation is higher than that for Web pages, which is undeniable. All kinds of talents in the country are needed, but as an individual, the idea of striving for improvement should still exist. Efforts should be made to do better in the industry they like, instead of staying at a superficial level.
I am a person who thinks I am more self-aware. Perhaps my biggest advantage is that I have many shortcomings :). In my story, many twists and turns and errors are caused by my shortcomings. I hope that you will take a careful look at my experiences and not be confused by my "rhetoric. I learned to do what I needed, which brought me endless troubles and greatly hindered my development. I remember that when I was a child, my grades were excellent, but I learned a lot from off-the-subject. As a result, my secondary school scores declined repeatedly and I did not take any good school. When I was a child, my grades were similar to mine, without my disadvantages, she went to Tsinghua and went to the United States for further study. She studied theoretical science under a famous mentor. This is not a better way out. In addition, my learning methods are constantly improving. In the past, I learned too much about the quantity and time, which is hard but inefficient. Now I pay great attention to the learning efficiency and skills, this is the shortcut to learning (not opportunistic, of course). For example, if you want to learn a relatively unfamiliar technology, you may have to ask experienced people if you have the necessary skills, often, his casual words will help you a lot, even more than a week's books. Learning with this idea will save you a lot of time. How happy is it? I have learned many things over the years. I started to learn things very blindly, so they are disorganized. Now, in retrospect, it makes me laugh, I waste a lot of time on some knowledge that is not necessary to understand deeply. After all, a person's energy is limited. Many of my friends, like me, are carrying five styles. It is indeed a good input method, but it is definitely not worth it for a developer, your time should be spent in valuable places. I have done a lot of such things. I have memorized the commands and shortcuts of CCed and WPS. After DBASE basically exited the stage of history, I spent a lot of time learning how to use it. Therefore, my study lacks planning in the early stage, and there is no clear short-term goal or medium-term goal. There is only one ethereal long-term ideal. This is just like designing. A good design involves many processes from requirement abstraction to code, and coding starts immediately after the requirement is obtained.

Of course, my studies and work have gained more or less over the years. Let me talk about some of my learning experiences. These methods may not be correct. I am constantly exploring and improving them. I have a relatively clear goal in my studies and work. I will not be eager to learn a certain technology at the moment. Before I decide, I will consider a lot, including long-term development and personal route planning, the price to be paid, possible difficulties and solutions, etc. after the decision is made, a clearer plan will be made, including short-term, mid-term, and long-term, resources available to you (including good books, materials, software and hardware environments, and experienced friends or teachers), and how to transition to the first stage of each stage, it is often relatively smooth after a learning stage is on the road, but it is usually difficult to cross-stage, for example, from basic learning knowledge to practice. In addition, I have my own methods to buy books. Currently, there are far fewer high-quality books than low-quality books in the world. For a strange technology, I often choose wrong methods when I buy books for the first time, even if I buy a good book, its direction may not be suitable for you, so I usually first find some introductions to this technology on the internet, with a little concept, I can buy another book that is relatively thin, relatively cheap, and has a relatively general description. This is the best book written by Chinese authors :), after browsing it again, I will basically understand the key points of this technology, and I will be more clear about buying books and making plans later. Otherwise, it is often difficult to find a good book at the beginning, and it is hard to learn it after I buy it. Sometimes I only find that it is a low-quality book or a relatively outdated technology. In addition, it is usually a good choice to let experienced people introduce you.

Some friends want to learn communication and embedded development, but they always feel that they do not have a software or hardware environment. I will introduce how to establish such an environment according to my knowledge, of course, I only know how to study and work. Communication I am working on the data network, including TCP/IP, layer-2 and layer-3 switching, and I also have some knowledge about access networks, H.323, and SoftSwitch. These software and hardware environments can be built on PCs. You can even create a simulated network environment that contains multiple routers, access servers, VOIP gateways, network guards, hosts, and so on a PC without a network card, which is quite similar to the actual network, of course, this requires you to have a clear network concept and a certain amount of network knowledge. I have been working hard to develop a set of software to simplify this process. At present, the experiment has been completed, I may integrate it into my operating system peripheral extension software. I cannot use a simple statement to explain this method clearly. The general idea is to implement a simulated Nic on a PC, (anyone who knows how to implement the virtual network card technology on a machine without a network card in Windows should understand), and then each Simulation Network Card corresponds to a virtual device, such as a router or host. You can also use third-party tools to complete some work, such as VMware. I am using a simulated Nic for my own development.

As for the embedded development environment, PC is a very large hardware platform. The existing embedded operating systems usually support x86. You can develop on it, using a floppy disk boot or a virtual machine to load data, I tested it with VxWorks and ran Windows and VxWorks systems on a PC. In addition, the DOS-compatible 16-bit simulation x86 environment on Windows also provides an excellent test environment for many operating systems. my operating system is implemented in this way on Windows. Linux is also widely used in embedded systems. It has a large amount of data on the Internet and is relatively easy to practice. At the same time, many complete embedded development environments support software simulation, such as tornado and wince.

The struggle of a programmer (continued)
I have been dealing with a lot of things some time ago, but I have never written it down. I spent all my savings on buying a house, and I have basically finished my account. These days I have been relieved. I had a chat with one of my boss for a long time yesterday. He looked at the external conditions to envy many outsiders. in his twenties, he was the person in charge of the 863 Project, and he graduated from a doctor's lover. In his early thirds, he is a product manager in a communication company. Although his salary is not high, he still has 10 thousands or 20 thousands yuan and holds shares. But the people we know understand his hardships. The word "white-collar" seems to be a touching HALO to some people, but in my opinion it is a helpless name. Every day, I walk on the street, how many of the incoming and outgoing traffic flows are "white-collar? How many other "white-collar" residential buildings are expensive? It is not surprising that the total amount of a villa in Shanghai is close to 3 million. The annual salary of 6 million yuan is regarded as a medium-and high-income white-collar worker in Shanghai. After the high taxes are removed, in this case, it will take more than 40 years to get rid of food, drinking, and living expenses. In addition, it is doomed that you will not be able to afford such a house. Looking at a villa and a good car outside, I don't know who they are, but I know there are no white-collar workers. I think I am very small. In this noisy city, I am like an ant, but I am unwilling to be ordinary. I don't want to be a pure "white-collar ".

In fact, many of my friends do not know me. I am not a person pursuing fashion technologies. I just don't want to be a so-called "white-collar", or simply a "programmer ". I am not willing to live an ordinary life. I am constantly working hard, and my direction is very clear. I want to do things that most people do not do and cannot do. Many friends do not understand my frequent changes, I think that only one person needs to be familiar with one technology. I can only say that you are simple. Today, big systems and products are often combined with software, hardware, and applications, I want to become a system designer instead of an expert. I don't believe that an engine expert can design a good car, and I don't believe that people who know nothing about hardware can make an operating system, or a person who has no idea about accounting can design an excellent financial software. At work, I found that there are very few Marginal talents in society, especially in China. In foreign countries, software and hardware are widely used. If the person who designs the product only understands his major, it is difficult to have an outstanding design. Therefore, I must learn more extensively when I am young, so that I can improve my overall quality. This is why there are so many non-professional courses in colleges and universities. After studying and working for these years, I have not actually moved away from the IT industry. When my current company develops a system, it first lists the final functions and analyzes the feasibility, then, we can divide which are implemented by chips, which are implemented by hardware circuits, and which are implemented by software, so that we can make the best system. It is impossible for a designer to understand only one aspect.

Self-confidence is often accompanied by ignorance. I remember that when I graduated from college, I had to compete with the Expert Group Leader at the paper defense meeting, because I was very proud of my design, and although he was a good guy, however, due to limited knowledge, I was not able to answer his questions, so I was a little angry ". I used to like to use the best development tools. I remember doing a stupid design. I used VC + Oracle to develop a course schedule Software. I keep these experiences in mind and remind myself to learn modesty at all times. My personal experience and my observation of some of my friends found this phenomenon. When a person thinks only the best technology, but does not know anything about others, such a person is often blank.
From the first "Hello World" to today's operating system, I wrote a lot of code before and after, and I also accumulated a lot of experience. Because I learned coding without guidance, I made many detours and made many mistakes. At first, I wrote a program based on my own feeling that writing a new program did not pay much attention to structural design. I thought that if I learned a good language, I could write a good program for the data structure. In fact, this is far from the case. It can be written without design, but the program cannot be very large or complex. My personal experience is that I cannot control more than 8000 lines of such a system. I used to write a Windows application using VC, around 8000 lines I lost control of it, and the entire code was a mess. These 8000 lines can run relatively stably, but I was not able to add any new code, causing frequent conflicts, either the new Code is incompatible with the old design and the old program needs to be adjusted. At the very beginning, I like to write programs and pursue code refinement. Many lines of code written by others can be implemented with only a few lines. It feels cool. In fact, this is also very wrong. I am writing a program that pays great attention to structural design, and I am willing to sacrifice a little efficiency for structural clarity.

The following is my motto for writing programs, and I hope to share with you:

Make it right before you make it faster.
Keep it right when you make it faster.
Make it clear before you make it faster.
Do not sacriice clarity for small gains in efficiency.
Brian kernighan

In addition, my girlfriend and I are very good now, and both of them agree that we decided to get married in the near future.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.