A programmer's struggle
Reprinted from LinuxForum
These days I have been writing a real-time operating system kernel, and I have become small, and I will be all open, I hope to do my own meager power for the development of domestic IT. I have recently seen many students friends and I have no direction as I, so I wrote my experience with everyone, I hope to give a little help to my friends just like. I have been in the IT industry study for more than seven years. During this period, I have done a web page, write MIS, databases, applications, do communication software, hardware drivers, protocol stacks, to do the operating system kernel and IC Developed, this is a lot of detours, and it has also been a lot of bitterness. I am on a three-stream university, and I don't know more than one city. Because the school is not good, I don't expect to find a good job by the school. All hopes are on their own efforts. I started learning before the opening school. I remember that the first book I bought is "computer base DOS3.0". Everyone is not scared. In fact, The popularization of DOS6.22, just I saw DOS4.0, 5.0, 6.0 book in the bookstore, thinking that it is the fourth, five, six volumes like English, remember to find DOS1.0 everywhere, now think about it, now I am fortunate enough. I didn't find it :) I have finished working, I have finished working, there is no computer, no one can ask, I have no concept of programs, I have to die hard code, then take paper, I have been writing, I have been to the big three A 486, how many programs wrote before this, I can't remember it, I only know the longest one of the draft paper I took A4 size, I wrote more than 30 pages, my C language, C , VC is Get started under such conditions. Therefore, the condition is to overcome, I hope that my experience is confident to the classmates. The first time I was in the machine room of my brother, my mood was excited, but I immediately stupid eyes, they used the English version of Win3.1, my DOS knowledge saw ghosts. I can't make a full screen. I accidentally made the whole screen, I can't still be burned, I thought that the machine was broken. The first C language program is that classic HelloWorld, I have been toned for a few weeks, very small in the machine, and there is no book telling my development environment (TC2.0) to set, and I don't know if I have a compiler. I even changed the written program extension from .c to .exe, the result can be imagined. Dali has finished the compilation, data structure, C of C, X86. Since energy is spent in self-study, the four classes of the big school hung, three types of schools are good, and they will graduate in one or twenty doors. However, I have said, I am still unsatisfactory, I can see more than a multi-dead plate in computer education in our country. The big two is prepared to learn VC and BC. It was difficult to pay at the time. Later, I would like to choose VC. I don't do anything else, only two books in the bookstore, the VC is inexpensively 6 yuan. My hard work is in the class, there is no one, the day and night is not divided, the big three have a computer, but many times, the father's middle lesson, I said that I don't want to live, I have always feel that my base is poor, my memory is not. The conditions are not good, so I feel that only more spend time can catch up with others. After actually, many friends said that I have a talent of the computer, let me cry.
I use 486, 16M memory, 1G hard drive, when the students' configuration is P166MMX, I installed a Windows NT4.0 requires an all night, compile a BC5.0 wizard to generate the program takes two hours, my display It's a second-hand, radiation is very large, the boot screen is blooming, it looks cool :), have a program written for too long, think how white editor turns into purple, think that the display is broken, then discovered eyes No, but it is strange that I can keep 1.5 today, it is a miracle. But that is, the machine is accompanying me for two years, let me learn VC, Delphi, SQLServer, etc. Later, the machine was typed with me. According to her, she said that she was hitting, and a small smoke was drilled from the display, then it took the end of life. The big three holidays found a chance to practice in a computer research institute. It is better to make a volunteer with the internship. I have not taken a penny for two months. But these two months have helped my development, let me know the society in one step, I just went to the time, where I am familiar with the network, learn Delphi and Oracle. Since the work is very serious, I have received a better evaluation. Under the introduction of an elder, I started to do a project with them, which made me have my own income in the big three four, and I found two MIS company part-time, although there is not much money, but there are more than 1,000 income during students, I have finally changed the computer with the money earned. I started to find a job in the four times. At this time, my work experience is already more (of course, I am thinking about it is very naive). I started listening to my parents to go to the institute. I have learned that department also hopes that I can go, but I don't know why last Can't, this unit is a bureaucrat. I went to my part-time company to make MIS's Teamleader. In the three to graduation, I have done various MIS, from the gas, smoke factories, public security, railways, diet to colleges, what is money, work is very hard, often overtime and Jutong, from following Customers talk about demand to design, coding, testing, and delivery. At that time, I felt very accused, I feel that I am not bad. Now I think it is very beautiful. Students who have just been working on jobs are easily misleaded. Various development tools are dazzling, and they also feel very popular by the company, but this is always a low-level developer. Don't tell me what is more important, how difficult is it. You think that you talk about the needs of users to do design is systematic analysis and design. How many companies can do very normally in China? I am an ISO9000 internal auditor, and I have trained several times in Rational, I have 4 certificates, and a company let me do CMM. These I have heard a lot, but many things have changed in China, and a company is not adopted by ISO9000 or CMM. I am now working in a foreign company in a few decades. The management is not a general domestic business. . As a graduation, I haven't had a study, I almost impossible to master system analysis and design, object-oriented, UML is just a tool, and the key is the idea of human itself, not to say that you are familiar with C , Rose You can make a good design. On the contrary, if you have a very high quality, you can write the program that is more modular than others with C .
It is said that far, the domestic software development industry has a strange circle. Many people think VC> Delphi> VB is really funny. I have been developing these software, and it is all kinds of tools. Which one should be used according to the need to apply, not what is the top level. If you choose to have a face with a development tool, you can only show that you are very shallow. If the hierarchy, then these tools are not at the level, because they are used to use some system APIs, Microsoft's friends will not be because you remember how many APIs or how many classes will feel that you are very fortunate, you Always just their customers, they value the silver in your pocket. I also did the system kernel, I also packaged a lot of APIs, and I won't value customers who use these APIs to do secondary development unless he can make your own unique design. As for someone thinking C > c, it is even more to smile, maybe you go to inquire, now there are several operating system kernels written with C , and there are several real-time systems for C , of course, I don't say C is not good, but C in the current kernel and real-time system can not be able to work with C, as for the development of C to do application system is another thing. So my point is that what tools and languages do you use, but what you do? Your design reflects your technical level. In this way, I think it is very depressed. Most of them are the lives of proficiency, and there is not much improvement in personal technology. So decided to leave this city to Shanghai, seek better development, and intend to give up my previous MIS to the communications industry. Write here, I can't mention my girlfriend, we have met in Shanghai for the first half of the year. She is in my company, and the company sent her to write a document. Our feelings are very fast. She told me a lot of things. Her family was originally the first batch of outgoads that reform and opening up. She did a mother with a card, lost a few million, she owed a lot of debts, she had a boyfriend, but she didn't feel good about him, only Because he gave her mother more than 20,000 yuan, she also forced her to write 40,000 pieces of borrowing. Her boyfriend huddled her and smashed her more than one time, now she forced her to marry, or she wants her. This person is actually a teacher of universities! Her mother gave her father to her tuition, because she didn't have a way to get a diploma. Her mother now needs money, I took out my own savings and took some with my friends. I paid a tuition fee and gave her mother to see a doctor (later, I learned that the money did not know, even her mother I don't know if I have sick, but she has no way). At this time, my family knew something, resolutely opposed me with her, and her original boyfriend also turned. Under the helpless, we decided to leave this sad city early and hit our home. Due to time rush, I only prepared 4,000 yuan, she only had hundreds of dollars by her mother, I bought three tickets, one is noon, two is at night, noon The family sent me the boat. They got off the boat left, I took the boat in the evening, leaving this city, I lived in a city with her, and took it just a debt. We have never been to Shanghai, we are reluctant, you are reluctant to go to the classmates and friends. It's been 6:30 in the evening. We all don't know where to go. We found a 20-dollar hotel. This room has no windows, the weather is hot in July, and the room is very stuffy.
The next day we started renting a house, because there were not many money, we basically walk, spent a week, I don't know how many cars in Pudong turned a 400-piece house, but we don't know Shanghai. It is a three-way one. I have to pay for half a month of the mediation fee. After I bought some pot bowls, I only had 800 yuan, and I haven't been settled. These 800 yuan should support us to get the first One month salary, in order to save money, I only spend two dollars every day. She really likes to eat (or maybe she is often hungry in the university), seeing her now, I really have a truth. It is very unbelievable. Her boyfriend did not let her, often called to harass, and come to Shanghai to see her, and say a lot of threatening of her, she is too kind, saying that he has helped her before, told me not to see him. . Every day, you will be a bitter interview notice at home. I originally wanted to quickly find a MIS company to solve the difficulties in front of you, but she insisted that I didn't give up my ideals, and finally didn't worry, I found a communication company, 4,000 pieces. Although the salary can't catch up with MIS, it is also enough to survive in Shanghai. She also found a job, she went to work on the first day, she cried, this is the first time she came to Shanghai, and I was very hard in my heart. Because it is a new industry, I dropped myself to zero. I learned VC, Delphi, and database faction. They were embedded, protocol, and signaling some of me never touched. I know that I have no retreat, so I am hard learning, I will treat myself as a graduate, I have worked hard, and I finally be familiar with the work in half a year, and I got the company's commendation and salary. In the next day, we saved our provinces, but also more than 10,000 yuan owed to friends, and the days finally got on the right track. At this time, my girlfriend told me that she wanted to test a graduate student, I also supported, so she resigned at home. In addition, here I want to thank my ProjectManager, he originally a large communication company's product manager, very good to people, I learned a lot from him, and he also gave me a lot of selfless help. He gave me full space and trust. I remember that the company arranges me to maintain an access server software. Since the amount of code is not too small (50,000 rows), the information and documents are not complete, I maintained very hard, so I want to do it again, the company leaders are not supported It may feel that the workload is too large, but he strongly supports me, privately he let me let me do it, my maintenance works. With his support, I spent half a year to complete the software of the access server and implemented a relatively complete TCP / IP protocol stack. Here I learned the knowledge of embedded system design, drive development, TCP / IP and many communications. I spent a year, I finally made myself to the communication industry from MIS, and stand firm. My development is a lot of direct operations for hardware, no longer constrained by Microsoft's operating system, VC, DELHPI, and I finally saw another sky. I like to chase the roots. As the development is in-depth, the software development and hardware contact is getting closer and closer, the lack of hardware knowledge has an obstacle to my development, and the chip technology is basically in the hands of foreign companies. This is a very large constraint for system-level design. A new product comes out, the first profit (also the most abundant profit) is often earned by IC companies such as Intel, Motorola, and domestic manufacturers can only drink Dot soup.
So I am determined to solve my hardware technology barriers and intend to leave the communication industry and enter the IC design. Of course, I understand that if I know very little about hardware, no IC will be kind to people to train me a one-breath. So I have to work hard, learn some relevant knowledge for future preparation. Just like I started to transfer from MIS to communications, I have seen a lot of communication books, and I have done a Radius billing sort in ISP. In this context, this communication company has given me this opportunity. I am doing system design, there are many PCB Layout hardware staff, usually I will pay attention to them, because I do software, I am embarrassed to see hardware information, so I started to see it at home, just come I am working overtime for a year, and I will not add it, because I want to squeeze out time, I usually sleep around 12 o'clock, 5:30 on the next day, I am going to work, if people don't have more people on the subway Also used to read. Learning, of course, it will not be smooth. Some problems do not understand will accumulate hardware staff. Their help makes me learn a lot more, because I have a self-study in the case of no one, my half of time is spending On the problem of trouble, this problem is often a sentence that others can make me suddenly open, I am glad that I have such a learning environment. In the following year, I learned to see the hardware schematic, learn to have a simple hardware design (there is still a small gap in the simulation circuit), things are like this, when you do Software, others will always think you It is software developer, and others may not recognize when you start learning hardware. Friends who have ZTE communications have also said to me, and some people can't learn everything. I also understand this, but I hope that I will do better. But when you are familiar with hardware, everyone will feel that you can understand that it is hardware and software, and colleagues have learned. At this time, I can take the hardware information to the company, no one is strange. Let me be more proud that I made an IAD (softswitch terminal device) system plan through my own efforts, including software and hardware selection, design, etc., this program has been recognized by the company and colleagues, let me feel Very gratified. The technology is complementary. When my hardware has a certain progress, my software design has also improved, I can understand the problem from deeper understanding, I do the access server CPU is Motorola PowerPC860, familiar friends I know that the batch data transmission of 860 QMC and software is usually used by the BD table. When the hardware personnel do it, they are used to using a fixed BD table. Each receive or send data from the BD table to the user buffer, or copy it from the user buffer to BD table, due to the more understanding, I re-realize this process, use dynamic BD tables, drive from a network port to receive data, submitted to my software for three-layer exchange until it is sent from another interface, No copy is made. Such design greatly improves performance, enabling the system's indicators close to the theoretical value. The combination of hardware and software makes my design level a step. I have written this operating system now, I compile the program to compile the program into compilation, find out the unopened code, and then adjust in the C program.
For example, many CPUs do not have special multiplication instructions. This one should know that a multiplication operation in this CPU often spends a lot of instruction cycles, some friends will say this I know, I will try to avoid using × No., but things are often not so simple, do you know how to implement the subscript of the array in the C language? Take a closer look at the disassembled code, you will understand the positioning operation of the subscript, the C compiler will sometimes generate displacement instructions, but sometimes it will be implemented by multiplication, and the efficiency of both is often the astiology, so understand You can upgrade system performance to the ultimate. ? Some questions will not be said, and it can be discussed in conjunction with interest. It is far a little, I sincerely hope that more deeper friends do in software have the opportunity to learn hardware and other related knowledge, especially for underlying development and embedded design. This has a great help for the improvement of software technology. Otherwise, many things you only know, but you won't understand why it is. I have also validated in the Project Manager where I have now IC's Project Manager. He tells us that the software manager of the company's current 802.11 chip products is originally designed for this chip hardware. A certain amount is the software. Now IC, similar examples have a lot, just in the country, the wind is not very popular. I have some experience to share with you. Only when I do my job work, I will learn and work hard, so that the company's boss is not inherent, I usually don't ask those problems in the entry stage. Senior people, but asked some of the more shallow friends, such as students who have just graduated, because they tend to explain with you, and senior people usually feel that your problem is too simple, so the answer is also very simple, I I am sorry to ask. After the technical have a certain level, I will ask them, they can also give you an in-depth answer. In addition, some friends say that I have a better opportunity. They also hope that they can do this unfortunately, I have listened to only bitter, my opportunity to know people should know, I am not born in what IT family :) nor All the way to promote me, all the roads are coming out, my mother died, my postmother (I called her aunt) looked at me, once, she saw that I was still writing the program, she said Work like I have learned to learn. My ultimate goal is IC instead of PCB, so I will start learning IC design. The company's colleagues did not understand the IC design. The road behind it later, I bought a lot of relevant books, I also checked a lot of information on the Internet. I spent a lot of time to learn VHDL, and use software Some simple design and simulation (no design ASIC, just for FPGA), with the deep learning, I gradually understand the basic process of IC design, and I understand the hardships of this road. At this time, I have been prepared to hop, I vote for my resume to an industry and a well-known IC design company and passed a long interview (more than 4 hours). Everything I am satisfied, only the salary is unable to solve, I also understand the reason, because I am a newcomer in this industry, I have no experience, I will clear myself again. The company's boss asked me that I can accept more than one month for more than one month, I know that he is also an observation.
Think about my friends in the industry, basically all have more than 100,000 annual salary, and the monthly salary is also all, and the friends also help me introduce a lot of people with good treatment. I should choose, I was very hesitant. I love my career, I am forwarded to my pursuit, but I am also an ordinary person, I also need to support my family, I also want to buy a car early. Life gave me a problem. Einstein said in the age of 63 "A person did not reach the biggest achievement before the age of 30, and he will never have." This sentence gives me a lot of pressure and vibration, I will be 26 immediately. Years old, only four years from 30, I have to hurry the valuable time in these years and try to achieve the highest peak of my technology. For this ideal, in order to be more close to his own dreams, I chose this IC company. I understand that my salary and the company's master's degree is different, but in order to endure in the future, everything is re- Start. The change industry is a very painful process, especially from a spring breeze to a strange position, feeling like a warm quilt to jump into ice water, making it unacceptable. At the original communication company, I am the only two-year employee, the company and colleagues gave me a great recognition, and I often have to be responsible for heavy responsibility. But now it has become a new person in the past, I am just a new person in the new company, no one knows that no one cares about my past achievement. I decided to start again, I think of my new graduation, I have to use my own efforts to get the company's recognition. It is very painful to enter the new industry. I tell yourself that I have to endure all this, although there are a lot of temptations outside, but since I choose to choose, I will not allow yourself to give up. I have been in this new company for more than a month, starting very hard, and now adapt to it. At the end of the first month, Team Leader found me talking, saying that I am the best in the new employee, I am very pleased, this is also a sure of my efforts. I would also like to thank my girlfriend here, she gave me a lot of support and inspiration, every time she arrived me, let me insist on her ideals, I just came to Shanghai, she made me not to force Going to MIS, this time she also made me a temptation of the monthly salary of too many monthly salary, and I may not have today's achievements. 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, our design development no longer relies on the hardware and system of others, which makes me very happy. . I plan to wait for the work to enter the right track, fully learn new knowledge and achieve my ideals. I have given yourself a few goals in the later two years: I. Try to do my job work, get the recognition of the company and colleagues at work; II. Efforts to learn IC hardware design knowledge, ask colleagues asking, and Use all the opportunities to practice; , Because I understand that the cause is heavy, but precious feelings are hard to lose.
Let's take a real-time embedded system here, it is currently supporting the following features: a. Support time slice turn scheduling and priority scheduling, up to 64 priorities; b. Preemption real-time kernel; c. In order to facilitate transplantation, the subject is realized by standard C; d. Assembly code is very small, less than 100 lines; E. Support task management, each task has independent stack; f. Process synchronization and communication Currently completed Semaphore, Message Queue I'm debugging; g. Implement timing system calls; h. You can simulate it on Windows. I also intend to implement priority reversal protection, Event Flag, Data Pipe, Memory Management (previously implemented), drive interface, etc. After this, I will work hard to improve it, such as adding a file system, protocol stack, debug interface, and more. I hope that my friends will put forward their own opinions and suggestions, which is not grateful here! Postscript: Just like some friends say, my experience may give some friends to mislead, here I have to explain it. I came to Shanghai to learn too hard, often only more than 3 hours in the evening, I was 1 meter high, only 108 pounds (I am more than 130), my family also said that I am still 60 years old, but I am at the time. Too solid, I said to them, I am enough to realize the ideal 50 years old. At that time, my body was affected, and I suddenly suddenly pain in the morning muscle in the morning, I stood in bed. Although I have been paying attention to it now, sometimes I will hurt. Later, my girlfriend convinced me, I am no longer like this. I often quote a father's sentence "The body is the capital of the revolution." And I also found that it is not a way, I can get one or two all nights, I have worked for three days and three nights, but I have not recovered over half a month, this is not worth it? Learning work should be a long-term process, like a marathon rather than a hundred meters. I now pay attention to adjust the intensity of learning and work. I want to guarantee that there is relatively abundant energy every day, some young friends feel that I should work hard, which makes me feel a little worried, if my story can make you study work More interest in, I will feel very happy, but if you mislead some friends, let you do something that is not worth it, I will feel very guilty. Technology has no expensive score, I used to change the industry because of my own interest, not any of the industries. I hope that my experience should not give a friend a wrong or guide, I feel that I have always developed to a higher technology. In fact, all indigenous countries are very difficult. I said that I will come back although there is no expensive, but the threshold is high, no matter how IC's threshold is much higher than the web page, this is undeniable. The country's various talents are needed, but as the idea of personal struggle, it should be better, and strive to do better in their favorite industries, and should not stay in the superficial level. I am a person I feel more than knowing, maybe my biggest advantage is that I have a lot of shortcomings :). Many of my story is caused by my shortcomings. I hope that everyone will look at my experience with a prudent vision, don't be confused by my "flowers". I have learned something like, this brings me endless trouble, and it is also greatly hindered my development.
I remember that I had a lot of achievements, but later learned seriously, leading to my middle school's achievements and repeated landslides, and did not have a good school. A friend when I was young. At that time, I didn't have this shortcomings, she Tsinghua, later went to the United States to study, in a famous tutor, the theoretical science, this is not a better way. In addition, my learning method is also constantly improving. The past learning is too payment of quantity and time, so learning is both bitter, it is not high, now I pay very attention to learning efficiency and skills, this is the shortcut of learning (of course, not means Speaking, such as learning a relatively unfamiliar technology, if there is condition, ask someone else, don't ask a lot, often he is not happy, will give you a very helpful help, or even more than you see one Week book. Go to learn this kind of thought you will save a lot of time, what is this not? I have learned a lot of things in these years. Since I am very blind, I have never chaotic, now I think about it, let me ridicule, I will waste a lot of time in some knowledge that there is no need to understand, after all, a person's energy It is limited. Many friends have a five-stroke of a word, it is indeed a good input method, but it is absolutely not worth you to go back to a R & D person. I have done a lot such that I have a command and shortcuts of cced, WPS, I have already spent a lot of time to learn its use in DBASE. So my study lacks planning in the early stage, there is no clear short-term purpose, medium-term goals, only one long-term ideal. This is like designing, a good design is from demand abstraction to the code, and it is not possible to start coding immediately. Of course, there are fewer learning and work in such years, there are fewer gains, let me talk about some of my learning, this method is not necessarily correct, I am constantly exploring and improvement. My learning and work have a relatively clear goal. I will not learn a certain technology for a while. I will consider a lot before I decided, including long-term development, personal route planning, the cost of paying, may encounter Difficulties and solutions, etc., will also develop more clear plans after the decision, including short-term, medium and long-term, resources that can be used around (including good books, materials, hardware and software, including experience) Friends or teachers), and how to transition to a high-stage stage of each stage, often in a study stage, once the road will go relatively success, but the cross-order is usually more troublesome, such as learning basic knowledge to practice. In addition, I also have my own way. Now I am not as good as a low-quality book. For a strange technology, I often choose a mistake in the first bought book, even if I bought a good book but it's Not necessarily suitable for you, so I usually find some introduction of this technology online. After a little concept, I will buy a relatively thin, relatively cheap and content relatively generally, this is the most good thing in China. Book :), then browse it after browsing it, I will basically understand the main points of this technology, and it will be more clear after buying and formulating a plan. Otherwise, I want to find a good book at the beginning, and I have to study hard after I buy it, sometimes I learned half, I found it is a low-quality book or relatively outdated technology, which is very annoyed. In addition, let you have an experienced person to introduce you, usually a nice choice.