I went to a third-rate college, even though most people in a city don't know it. Because the school is not good, there is no hope of finding a good job by the reputation of the school. All my hopes are pinned on my own efforts. I began to study during the holiday before my freshman year. I remember that the first book I bought was Computer Basic DOS3.0. Don't be afraid. In fact, DOS6.22 had been popularized at that time, but I saw books of DOS4.0, 5.0 and 6.0 in the bookstore and thought they were the fourth, fifth and sixth volumes like English. I remember looking everywhere for DOS 60. Fortunately, Pascal was not found before school started. At that time, there was neither a computer nor anyone to consult. I don't even have the concept of what a program is, so I can only memorize the code and write it on paper. I only got 486 in my junior year. Before that, I couldn't remember how many programs I had written on paper. I only know that the longest one is written on A4-sized draft paper, which is more than 30 pages long. My C language, English, English, English, English, English and Chinese. So the conditions can be overcome. I hope my experience can give some confidence to students with difficult conditions. The first time I got on the computer was in my brother-in-law's computer room. I was very excited, but as soon as I got on the computer, I was blindsided. They use the English version of Win3. 1, and my knowledge of DOS is regarded as a ghost. I accidentally got a full screen of Word, and I couldn't find it back. I was really worried. I thought I broke the machine. The first C language program, the classic HelloWorld, I tuned it for several weeks, but I had little chance to get on the computer. No book told me that I needed to set up a development environment (TC2.0). At first, I didn't even know there was a compiler. I even changed the extension of the written program from. C here. Exe, the result can be imagined. Freshman finished C, X86 assembly, data structure and C++. Because all my energy was spent on self-study, I failed four courses in my freshman year. This is the advantage of three types of schools. They graduate after failing one or twenty courses. However, it is too far from the point, and my efforts are not qualified, which shows how rigid computer education in our country is.
I am going to learn VC and BC when I am a sophomore. It was difficult to choose between them at that time. Later, I chose VC for two books in the bookstore. VC is 6 yuan cheaper. My efforts are unparalleled in my class. I study day and night, especially after I have a computer in my junior year. Many times, my father taught me late at night, and I was desperate. I have always felt that I have poor foundation, poor memory and poor conditions, and I feel that it takes more time to catch up with others. In fact, many friends later said that I had a talent for learning computers, which made me laugh and cry. I use 486, 16m memory and 1G hard disk. At that time, the classmate's configuration was p166 mm x. I spent one night installing a Windows NT4.0 and nearly two hours compiling a program generated by the BC5.0 wizard. My monitor is second-hand, and it radiates a lot. The boot screen is shiny and looks cool: once the program was written for too long, I thought the background of the white editor turned purple, and the monitor was broken, and then I found that my eyes were not working, but strangely, my vision can still be maintained at 1.5 today, which is really a miracle. But it was that broken machine that accompanied me for two years and taught me VC, Delphi, SQLServer and so on. Later, the machine was used by my aunt to type. According to her, one day she was having a good time, and there was a smoke from the monitor, and there was a flame in it, and then it went out.
During my junior year holiday, I found an opportunity to practice in a computer research institute. I am a volunteer, not an intern. I haven't got a penny for two months. However, these two months have helped me a lot in my development and made me understand the society earlier. Of course, I didn't know anything when I first went there, where I became familiar with the network and learned Delphi and Oracle. I got a good evaluation because I worked hard. Under the recommendation of an elder, I started to work with them on projects, which made me earn my own income in my junior and senior years. In my senior year, I found two MIS companies to work part-time. Although the money is not much, the income of more than 1 0,000 as a student is already very satisfying. Finally, I traded the money I earned for a computer. Senior three began to look for a job. At this time, I have had a lot of work experience (of course, it is still naive to think about it now). I began to listen to my parents' wishes to go to that institute. My internship department also hoped that I could go, but I don't know why I ended up in a bureaucratic unit. I was very angry, so I went to a company, where I worked part-time as the team leader of MIS. From my junior year to one year after graduation, I worked in various MIS, from gas, cigarette factory, public security, railway, catering to colleges and universities. I have to work hard and often work overtime and stay up late, from talking to customers about requirements to design, coding, testing and delivery. At that time, I felt very fulfilled and felt that I was not bad. It's really superficial to think about it now.
Students who have just started to work are easily misled, and various development tools are dazzling, but they also feel highly valued by the company, but such work is always a low-level developer. Don't tell me how important and difficult system analysis is. Do you think that talking with users about requirements and design is system analysis and design? How many companies in China can be very standardized? I am an ISO9000 internal auditor. I received a lot of training in Rational Company and got four certificates. Another company asked me to do CMM. I've heard a lot about this, but many things have changed in essence in China. A company can standardize without ISO9000 or CMM. Now I am working in a foreign company with decades of history, and the management inside is beyond the reach of ordinary domestic enterprises. As a student who 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, and the key is people's own thoughts. Does not mean that you can make a good design by being familiar with C++ and Rose. On the contrary, if you have high quality, you can write a more modular program with C than others with C++.
Furthermore, there is a strange circle in the domestic software development industry. Many people think that VC > Delphi & gtVB is really funny. I developed all these softwares. To put it bluntly, they are all tools, and we should choose which one to use according to the needs of the application, not which one is superior. If you choose a development tool because you have a lot of face, it can only show that you are shallow. If it is layered, then these tools are not layered, because they all use some systematic APIs. Microsoft friends don't think you are great just because you remember how many APIs or classes they have. You will always be their customer, and what they value is the money in your pocket. I have also done system kernel and packaged many APIs. Similarly, 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 that's even more ridiculous. You might as well ask about it. Now there are several operating system kernels written in C++ and several real-time systems written in C++. Of course, I'm not saying that C++ is not good, but C++ in the kernel and real-time system can't compete with C. As for C++, that's another matter. So my opinion is not what tools and languages you use, but what you do. Your design reflects your technical level.
I feel depressed after working like this for a year. Most of the work I do is technical work, and my personal skills have not improved much and I can't see the direction. So I decided to leave this city and go to Shanghai for better development. I intend to give up my previous MIS and switch to the communication industry.
I can't not mention my girlfriend here. We met six months before we came to Shanghai. She was an intern in our company in her senior year, and the company sent her to write documents for me. Our relationship has developed rapidly. She told me many things. Her family used to be the first nouveau riche in the reform and opening up. Her mother loves playing cards, lost millions and owed a lot of debts. She has a boyfriend, but she has no feelings for him, just because he gave her more than 20 thousand, and later forced her to write 40 thousand IOUs. Her boyfriend betrayed her and hit her more than once. Now he forced her to get married or asked her to pay back the money. This man is still a university teacher! Her mother spent all the tuition fees her father gave her because she was in arrears and couldn't get her diploma. Her mother was ill and needed money now, so I took out some savings and borrowed some from my friends, paid her tuition and treated her mother (I didn't know the money for seeing a doctor until later, and even I didn't know if her mother was ill, so she couldn't help it). At this time, my family knew something and resolutely opposed me being with her. Her old boyfriend tried to destroy it, too In desperation, we decided to leave this sad city early and keep it from our families. Due to the rush of time, I only prepared 4000 yuan, and her only few hundred dollars were taken away by her mother. I bought three tickets, one at noon and two at night. At noon, my family put me on the boat, and as soon as they left, I got off the boat. She and I left the city where we lived for many years by night flight, taking only a debt. Those of us who have never been to Shanghai are stubborn and unwilling to disturb our classmates and friends. It was half past six when we arrived in Shanghai. We don't know where to go. We found a hotel in 20 yuan. This room doesn't even have windows. The weather in July is unbearable, and the room is very stuffy. The next day, we started renting a house because we didn't have much money with us. We basically walk. It took us a week. I don't know how many times we went around Pudong and found a house in 400 yuan, but I didn't know that Shanghai paid an agency fee of three pressures and one agency fee for half a month. I bought some pots and pans, but I only have 800 yuan on me, and my job has not yet landed. This 800 yuan has to support us. In order to save money, we cook by ourselves and buy food for only two yuan a day. She likes it very much (which may be the reason why she often goes hungry in college). I can't bear to see her scrimping and saving now. Her ex-boyfriend left her alone. He often calls to harass her and visits her in Shanghai. He also said a lot of threats. She was so kind that she said that he had helped her before and told me not to share his common sense. After that, I waited for the interview notice at home every day. I wanted to find a MIS company to solve the immediate difficulties quickly, but she insisted that I not give up my ideal. Finally, many good things happen. I found a communication company. Although the salary of 4000 yuan can't catch up with the price offered by MIS company, it is enough to survive in Shanghai. She also found a job. On the first day of work, she cried. It was the first time that she came to Shanghai to cry. I am very sad and touched.
Because it is a brand-new industry, I broke myself into parts, and the VC, Delphi and database I learned were useless. In front of me are some knowledge that I have never been exposed to, such as embedded, protocol and signaling. I know I have no way out, so I study hard. I regard myself as a fresh graduate. I have worked hard and gained something. After half a year, I finally got familiar with the work, was commended by the company, and my salary was raised by one level. In the following days, we scrimped and saved, and paid back the 1000 yuan we owed to our friends, and the days finally got on the right track. At this time, my girlfriend told me that she wanted to take the postgraduate exam, and I was very supportive, so she resigned and studied at home.
In addition, I would like to thank my project manager here. He used to be the product manager of a large communication company and was very kind to people. I learned a lot from him, and he gave me a lot of selfless help. He gave me enough space and trust in my work. I remember the company arranged for me to maintain an access server software. Because the amount of code is not small (50,000 lines) and the data and documents are incomplete, it is very difficult to maintain, so I want to do it again. The company leaders are not very supportive, maybe they think the workload is too heavy, but they still strongly support me. In private, he asked me to do it, and he squeezed time to do my maintenance work. With his support, it took me half a year to complete the software to access the server and realize a relatively complete TCP/IP protocol stack. Here I learned a lot about embedded system design, driver development, TCP /IP and communication. It took me a year to finally transfer myself from MIS development to communication industry and gain a firm foothold. Most of my development is to directly operate the hardware, no longer stick to Microsoft's operating system, VC, Delhpi and other development tools, and finally see another sky.
I like to get to the bottom of it. With the deepening of development, the connection between software development and hardware is getting closer and closer, and the lack of hardware knowledge hinders my development. Moreover, the chip technology is basically in the hands of foreign companies, which is a very big constraint for system-level design. When a new product comes out, the first profit (often the most profitable profit) is often earned by IC companies such as Intel and Motorola, and domestic manufacturers can only drink a little soup. So I am determined to solve my own hardware technical obstacles and intend to leave the communication industry and enter the related fields of IC design.
Of course, I understand that if I know little about hardware, no IC company will kindly recruit someone who knows nothing like me to train. So I must work hard to lay a good foundation and learn some related knowledge to prepare for the future. I just started to switch from MIS to communication, read a lot of books on communication, and made a RADIUS billing sorting desk for an ISP. In this context, this communication company gave me this opportunity. My communication company is a system designer, and there are many PCB layout hardware personnel. I usually pay great attention to learning from them. Because I am a software maker, I am embarrassed to read the hardware information in the company, so I can only watch it at home at first. I just came to work in Shanghai and worked overtime for one year, but I didn't add it later. Because I have to find time to study, I usually go to bed around 12, go to work early at 5: 30 the next day and take the subway. Of course, learning will not be smooth sailing. Some questions that you really don't understand will accumulate and ask the hardware personnel. Their help will make my study progress much faster. Because I taught myself without anyone's guidance, and spent half my time solving difficult problems, but this kind of problem often made me suddenly enlightened from others' words. I am glad that I have such a learning environment. In the following year, I learned to read the hardware schematic diagram and learn simple hardware design (there is still a big gap between analog circuits). That's what happened. If you are comfortable doing software, others will always think that you are a software developer. Start learning hardware, others may not agree. A friend of ZTE also told me that one can't learn everything. I understand this, but I hope I can do better. However, when you are familiar with hardware, people will think that you know both software and hardware, and your colleagues are used to it. At this time, I can honestly take the hardware information to the company, and no one will make a fuss anymore. What makes me proud is that I have made an IAD (Soft Switch Terminal Equipment) system scheme through my own efforts, including the selection and design of software and hardware. This scheme has been recognized by the company and colleagues, which makes me feel very gratified.
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. My access server CPU is Motorola PowerPC860. Familiar friends know that BD table is usually used for batch data transmission between 860 QMC and software, and hardware personnel are used to using fixed BD table when driving. Every time I receive or send data, I copy the data from BD table to user buffer or from user buffer to BD table. Because of my profound understanding, I re-implemented this process myself, using dynamic BD table driver software to receive data from one network port and exchange it at three levels until it is sent out from another interface, and there is no copy. This design greatly improves the performance and makes the index of the system close to the theoretical value. The combination of software and hardware makes my design level by going up one flight of stairs. The operating system I am writing now, after compiling, decompiles the program into assembly, finds out the unoptimized code, and then adjusts it in C program. For example, many CPUs do not have special multiplication instructions. As we all know, a multiplication operation on this CPU often takes up a lot of instruction cycles. Some friends will say I know, and I will try to avoid using the X symbol, but things are often not that simple. Do you know how to realize the subscript operation of arrays in C language? If you look at the disassembled code carefully, you will understand that the C compiler sometimes generates displacement instructions through subscript positioning operations, but sometimes it is implemented through multiplication. The efficiency of the two is often very different, and you can improve the system performance to the extreme by understanding these problems. I won't say more about these questions. If you are interested, we can discuss it together later.
To go further, I sincerely hope that friends who have done more in-depth software will have the opportunity to learn hardware and other related knowledge, especially those who have done bottom-level development and embedded design. This is of great help to the improvement of software technology, otherwise you only know how to do it but don't understand why. My point of view has also been verified by my current project manager of IC company. He told us that the current software manager of our company's 802. 1 1 chip products used to design the hardware of chips, and XXX used to do software, but now he is doing IC. There are many similar examples, but this trend is not very popular in China.
I have some experience to share with you. Only when I do my job well will I learn the technology that has little to do with my job, so that the boss of the company will not be disgusted. In the introductory stage, I usually don't ask those senior people, but some friends with relatively junior qualifications, such as recent graduates, because they often give you detailed explanations, and senior people usually think your questions are too simple, so I am embarrassed to ask more. I won't ask them until I have reached a certain technical level, and they can give you a deeper answer. In addition, some friends said that I have a greater chance and hope to take up a new job. Unfortunately, I didn't have a chance. I only gave a wry smile. Anyone who knows my opportunity should know that I was not born in any IT family:) No one promoted me all the way. My mother died early, and my stepmother (I called her aunt) watched me work hard. Once she saw that I was 30 years old and still writing a program.
My ultimate goal is IC, not PCB, so I'm going to start studying IC design next. Colleagues in the company don't understand IC design, and the road behind them depends on themselves. I bought a lot of related books and looked up a lot of information on the Internet. I spent a lot of time learning VHDL and did some simple design and simulation with software (no ASIC design, only for FPGA). With the in-depth study, I gradually understand the basic process of ic design and the hardships along the way. At this time, I am ready to jump ship. I submitted a resume to an IC design company with a certain reputation in the industry and passed a long interview (more than 4 hours). Everything else is satisfactory, except the salary. I also understand the reason, because I am a newcomer in this industry and have no experience. I clarified myself once again. The boss of the company asked me if I could accept more than 6,000 yuan a month, and I knew that he also followed the rules. Think of my friends in the communication industry. Basically, their annual salary is above 65438+ 10,000, and the monthly salary is over 10,000. My friends also introduced me to many well-paid companies. How should I choose? I hesitated at that time. I love my career and I am eager for my pursuit. But I'm also an ordinary person. I also need to support my family. I also want to buy a house and a car early. Life has given me a difficult problem.
Einstein said at the age of 63: "A person will never achieve the greatest scientific achievement before the age of 30." This sentence gave me great pressure and shock. I will be 26 years old soon, only four years before I turn 30. I must seize these precious years and strive to reach the 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 similar to that of a graduate student who just came in, but I can only endure it for future development and have to start all over again. Changing industries is a very painful process, especially from a smooth position to a strange position. It feels like climbing out of a warm quilt and jumping into ice water, which is unacceptable. In the original communication company, I was the only employee who got a salary increase five times in two years. My company and colleagues have given me great recognition, and I am often entrusted with important tasks in my work. But it's all in the past now. I'm just a newcomer to the new company. Nobody knows or cares about my past achievements. I decided to start over. I regard myself as a newly graduated student, and I will use my own efforts to get recognition from the company. Entering a new industry is very painful. I told myself that I had to put up with all this. Although there are many temptations outside, since 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. It was difficult at first, but now I'm 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 am very happy. This is an affirmation of my efforts. I also want to thank my girlfriend here. She gave me great support and encouragement. Every time I waver, she encourages me to stick to my ideals. When she first came to Shanghai, she told me not to do MIS. This time, she also let me resist the temptation of earning more than ten thousand yuan a month. Without her, I might not have achieved what I did today. Now the company has its own operating system, its own CPU, DSP and other chips. I can learn the most advanced technology in the world here, and our design and development are no longer completely dependent on other people's hardware and systems, which makes me very happy. I intend to learn new knowledge and realize my dream when my work is on the right track. In the next two years, I set myself several goals:
Strive to do a good job and get recognition from the company and colleagues in the work;
Study hard the knowledge of IC hardware design, ask colleagues more, and practice more at every opportunity;
Realize the main part of my real-time operating system, complete the TCP/IP protocol stack module and release the source code for free;
Marrying my girlfriend and buying a small house is the most important thing, because I understand that my career can start again, but it is difficult to get my precious feelings back.
Here I want to mention the operating system I am developing now, which is a real-time embedded system and currently supports:
A. Time slice rotation scheduling and priority-based scheduling, with a maximum of 64 priorities;
B. preemptive real-time kernel;
C. in order to facilitate transplantation, the main body is realized by standard c;
D assembly code is very few, less than 100 lines;
E. Support task management, and each task has an independent stack;
F. At present, process synchronization and communication have been completed, and the message queue is being debugged;
G. realize timing system call;
H. You can simulate debugging on windows.
I also intend to implement priority inversion protection, event flag, data pipeline, memory management (which has been implemented before), driver interface and so on. Then I will try to improve it, such as adding file system, protocol stack and debugging interface. I hope my friends can put forward their own opinions and suggestions. Thank you very much!
As a friend said, my experience may mislead some friends, and I must explain it here. I studied too hard before I came to Shanghai. I often only sleep for more than three hours at night. My height is 1 m, 7 1. At that time, I was only 108 kg (I am now 130). My family also said that it was impossible for me to live so hard over 60, but I was too stubborn at that time. I told them that 50 years old is enough as long as they can realize their ideal life. At that time, my body was affected by hard work. One morning, I suddenly had a sharp pain in my lumbar muscles and fell down on the bed and couldn't stand up. Although I pay more attention now, I still have a dull pain sometimes. Later, my girlfriend advised me not to do this after I came to Shanghai. I often quote my father's words and find that hard work is not the way. I can stay up for a night or two. At most, I worked continuously for three days and nights and didn't recover for half a month. Is this not worth the loss?
Study and work should be a long-term process, like a marathon rather than a 100-meter sprint. Now pay great attention to adjusting the intensity of study and work. I want to ensure that I have relatively abundant energy every day. Some young friends think they should work hard, which worries me a little. If my story can make you more interested in your study and work, I will feel very happy, but if I mislead some friends and make you do something unworthy, I will feel very guilty.