these days I have been writing a real-time operating system kernel, has been small, and so on I will be all open, hope to be able to domestic IT development to do their own meager strength. Recently saw a lot of student friends and I did not have the direction, so my experience is written to share with you, hoping to give just as a little help friends.
in the blink of an eye I have been studying in the IT industry for more than seven years, during which I have done Web pages, written mis, database, application, do communication software, hardware driver, protocol stack, to now do operating system kernel and IC related development, which went a lot of detours, also ate a lot of pain.
I went to a three-stream college, and most of the people in a city didn't know it. Because the school is not good there is no hope to rely on school fame to find a good job. All the hope is pinned on their own efforts, a freshman before the holiday I began to study, I remember to buy the first book is "Computer Foundation DOS3.0", we do not scare, Actually at that time already popularized the DOS6.22, just I saw the dos4.0,5.0,6.0 book in the bookstore, thought like English is 第四、五、六册, Remember when looking for DOS1.0 everywhere, now think also fortunately I did not find: "Before the beginning of the school I learned Pascal, at that time there is no computer and no one can consult, I even the concept of what the program is not, had to memorize code, and then take paper, I have been to the junior only a 486, before this paper how many programs I remember , only the longest one I took A4 size of the draft paper 30 pages, my C language, C + +, VC are in such conditions to get started. So the condition can be overcome, I hope my experience to the conditions of the students a little confidence. The first time on the machine is in my brother-in-law room, my mood excited incomparable, but a machine I immediately silly eyes, They use the English version of the Win3.1, my that point dos knowledge have seen ghosts, on the machine fear of a blind touch, accidentally put word into full screen, how can not original, then really worried, I was the machine I broke. The first C language program, that is the classic HelloWorld, I tuned for a few weeks, the opportunity to machine very little, There is no book to tell me that the development environment (TC2.0) needs to be set up, and at first I do not know that there is a compiler, I even clever to write the program extension from. c to. exe, the results can be imagined.
I finished the freshman study C, X86 compilation, data structure, C + +. Because the energy is spent on self-study, big four courses hanging color, three kinds of school is this good, hanging on ten or twenty doors also graduated. But to pull away, I am so hard to be able to not lattice, it can be seen in our country's computer education is more rigid.
sophomore ready to learn VC and BC, at that time difficult to choose, then chose the VC, not for other, only for the bookstore two books, VC that Ben cheap 6 dollars. My efforts in the class no one can, learn the day and night do not divide, the junior has a computer is more so, many times my father taught me in the middle of the night I do not kill, I always feel that their foundation is poor, memory and not, the conditions are not good, so I feel that only a little more time to catch up with others. Unexpectedly later, many friends said that I have the talent to learn computer, let me laugh and cry. I use 486,16m memory, 1G hard disk, at that time the configuration of the students are P166MMX, I installed a Windows NT4.0 need an overnight, compile a BC5.0 wizard generated by the program takes nearly two hours, my monitor is a second-hand, radiation is very large, splash screen flaming flowers, looks cool:), once the program was written for too long, think how the white editor background into a purple, thought the monitor is broken, later found that the eyes are not, but said It's also strange that I can still keep my eyesight at 1.5, which is a miracle. But it was that broken machine to accompany me for two years, let me learn VC, Delphi, SQL Server and so on. Later that machine to my aunt typing, according to her said one day she is playing happy, a green smoke with a flame from the monitor drill out, then it died.
I got a chance at a junior vacation. Internship at a computer research institute is not so much an internship as volunteering, working for two months without taking a penny. But these two months to my development help very much, let me know the society early, I was of course when I went to the ignorant, where I know the network, learned Delphi and Oracle. Because the work is very serious, got a better evaluation, in an elder's referral, I began to work with them to do the project, which makes me in junior year, I have their own income, senior and find two MIS company part-time, although not much money, but during the students have more than 1000 of the income I have been very satisfied, I finally changed the computer with the money I earned. Senior start looking for work, then my work experience has been more (of course now think very naïve), began to listen to the parents want to go to that institute, internship that department also hope I can go, but do not know why Finally, this unit is relatively bureaucratic, I was in a teamleader to my part-time company to do MIS. In junior to graduation a year of time, did a variety of mis, from gas, smoke factory, public security, railways, food to college, what money to do, work is very hard, often overtime and boil all night, from the customer talk about demand to design, coding, testing, delivery to be on. I felt very fulfilled at that time and thought I was good, but it was superficial to think about it.
the students who have just come to work are easily misled, all kinds of development tools dazzling, but also feel very valued by the company, but this work is always a low-level developer. Don't tell me how important and how hard it is to analyze the system. Do you think you talk to users about the need to do design is the system analysis and design, there are several domestic companies can do very well in place very standard? I am ISO9000 internal auditor, also in rational company has been trained a number of times, took 4 certificates, and a company let me do CMM. These I have heard a lot, but a lot of things into the change of nature, a company is not through the ISO9000 or CMM can be standardized, I now in a decades-old foreign companies work, inside the management is not ordinary domestic enterprises can and. As a student who did not enter the society shortly before graduation, it is almost impossible to master the system analysis and design in a short time, object-oriented, UML is just a tool, the key is the idea of people itself, not that you are familiar with C + +, Rose can make a good design, on the contrary if you have a very high quality, You can use C to write a program that is more modular than others in C + +.
in other words, the domestic software development industry has a vicious circle, many people think VC > Delphi > VB, is very funny. I have done these several software development, plainly, they are tools, should be based on the needs of the application to choose which, rather than feel which on the level. If you choose to use a development tool with a lot of face, you can only say that you are shallow. If the hierarchy, then these tools are not on the hierarchy, because they are used to go are some of the system's API, Microsoft's friends do not because you remember how many APIs or how many classes you will think you are great, you will always be their customers, they value the money in your pocket. I've also done the kernel, I've encapsulated a lot of APIs, and I'm not going to value clients that use these APIs for two development, unless he can make his own design.
As for some people think C + + > C that is more laughed, you may want to inquire about, now there are several operating system kernel is written in C + +, and a few real-time systems with C + +, of course, I am not saying C + + is not good, but the current kernel and real-time system C + + can not rival C, It is another thing to say that C + + is suitable for the development of application systems. So my point of view is not what tools and languages you use, but what you do. Your design embodies your technical level.
This has been a year I feel very depressed, do most of the work of skilled jobs, personal technology is not too much improvement can not see the direction. So decided to leave the city to Shanghai, to seek better development, and to abandon my previous mis to the communications industry.
Write here can not mention my girlfriend, we are in Shanghai before half a year to meet, she senior in my company internship, the company sent her to me to write documents, our feelings develop quickly. She told me a lot of things, her family was originally the reform and opening up of the first nouveau riche, her mother love playing cards, lost millions of, still owes a lot of debt, she has a boyfriend, but she has no feelings for him, only because he gave her mother more than 20,000 yuan, and then forced her to write 40,000 iou, her boyfriend betrayed her and more than once Now force her to marry or she'll pay her back. This man is still a college teacher! Her mother spent her father's tuition, because she couldn't get her diploma because she owed her tuition. Her mother is sick now need money, I took out a bit of my savings and with friends to take some, for her to pay tuition and to her mother (later only know the money and increasing multiplicity, even her mother is not sick I do not know, but she also has no way). At this time my family knew something, firmly opposed to me with her, her old boyfriend also tried to sabotage. Helpless, we decided to leave this sad city early, and not to deceive our family. As a result of the haste, I only prepared 4000 dollars, her only hundreds of dollars is also her mother to go, I bought three tickets, one is noon, two are evening, at noon my family sent me to the boat, they left me off the ship, I and she took the night boat left this I and she lived for many years of the city, All that was taken was a debt. We have not been to Shanghai's two-character stubborn, are not willing to trouble classmates and friends. Came to Shanghai is 6:30 P.M., we do not know where to go, we found a 20-dollar hotel, this room even the windows are not, July of hot weather, the room is very stuffy. The next day we began to rent the house, because the body of money, we basically are walking, spent one weeks, do not know how many laps in Pudong to find a 400 house, but we do not understand that Shanghai is to pay three pressure one, but also to pay half a month intermediary fees, bought some pots and pans, We have only 800 dollars, work has not landed, this 800 dollars to support to our first month's wages, in order to save money we cook, every day to buy vegetables only spend two yuan, she is very fond of eating (also may she is often hungry in college willing), see her now so frugally I really do not bear. Her former boyfriend did not let her, often call to harass, and come to Shanghai to see her, also said a lot of intimidation her words, she was too kind, said he had helped her after all, told me not to stoop with him. After every day at home is a bitter interview notice, originally I want to quickly find a mis company to solve the immediate difficulties, but she insisted that I do not give up their ideals, finally Kung Fu, I found a communications company, 4000 of the salary although the MIS company gave me the price, but also enough to survive in Shanghai. She also found a job, the first day of work she cried, whichShe came to Shanghai for the first time, my heart is very uncomfortable also very touched.
because it is a brand-new industry, I put myself down to 0 points, I learned VC, Delphi, database is not useful, put in front of me is embedded, protocol, signaling some I have never touched the knowledge. I know I have no way out, so desperately study, I think of myself as a fresh graduate, a point of effort to harvest, half a year past I finally familiar with the work, and got the company's commendation, salary also added a level. In the back of the day we frugally, to owe a friend of more than 10,000 dollars back, days finally on the right track. At this time my girlfriend told me she wanted to graduate school, I also very supportive, so she resigned at home to prepare for the exam.
In addition, here I want to thank my projectmanager, he turned out to be a big communications company product Manager, very kind to people, I learned a lot of knowledge from him, and he also gave me many selfless help. He gave me plenty of space and trust at work. I remember the company to maintain an access server software, because the code is not too small (50,000 lines), data and documents are not complete, I maintain very difficult, so I want to re-do it again, the company leadership is not very supportive, may feel too much work, but he strongly support me, in private he let me go to do, My maintenance work he squeezed the time to do it. With his support, I spent half a year completing the Access Server software, and implemented a relatively complete TCP/IP protocol stack. Here I learned the embedded system design, drive development, TCP/IP and a lot of communication knowledge, I spent a year to finally make myself from MIS development to the communications industry, and a firm footing. My development is a lot of direct operation of the hardware, no longer by the Microsoft operating system, VC, DELHPI These development tools constraints, I finally saw another piece of the sky.
I do things like inquisitive, with the development of deep, software development and hardware links more and more closely, the lack of hardware knowledge of my development has become an obstacle, and chip technology is basically in the hands of foreign companies, which to do system-level design is a very big constraint, a new product out, The first profit (and often the most lucrative) is often made by IC companies such as Intel and Motorola, and domestic manufacturers can only drink some soup. So I am determined to solve my own hardware technology barriers, and intend to leave the communications industry, into the IC design-related fields.
Of course I understand that if I know very little about hardware, no IC company will be merciful to recruit me such a ignorant person to train. So I must work hard to lay a good foundation, learn some relevant knowledge for future preparation. Just as I started to move from MIS to communication, I read a lot of books on communications, and I did a radius billing sorter for an ISP, and in that context the communications company gave me the chance. I am in the communications company is to do system design, there are a lot of PCB layout hardware personnel, usually I pay attention to them to learn, because I do is software, in the company look at the hardware data embarrassed, so began to see at home, just came to Shanghai work I have been working overtime for a year, but not added, because I want to squeeze time to learn Usually I sleep around 12 o'clock, the next day 5:30, I work earlier, on the subway if there are not many people I also used to read. Study of course will not be smooth sailing, some really do not understand the problem accumulated up to ask hardware personnel, their help makes me learning progress a lot faster, because in no one to teach self-taught, my half of the time is spent on solving difficult problems, but this problem is often someone's words can let me suddenly enlightened, I am very glad that I have such a learning environment. In the following year, I learned to look at the hardware schematic diagram, learned the simple hardware design
(analog circuit also has a small gap), the thing is this, when you do a part of the software, others always think you are software developers, when you start to learn the hardware others may not agree, there is a friend also told me that a person can not finish all things. I understand that, but I hope I can do better. But when you are familiar with the hardware, you will feel as if you know the software and hardware, colleagues are accustomed to. This time I can put the hardware information to the company to see, no one again surprised. I am proud of my efforts to do a iad (soft-switching terminal equipment) system solutions, including hardware and software selection, design and other content, which
I am very pleased with the proposal that the company and colleagues have agreed to.
technology is complementary, when my hardware has made some progress, my software design also has a great improvement, I can understand the problem from a deeper level, I do the access server CPU is Motorola PowerPC860, familiar friends know 860 QMC and software bulk data transmission is usually used in the form of BD table, hardware drivers are accustomed to the use of fixed BD table, each received or sent data from the BD table copy to the user buffer, or from the user buffer copy to the BD table, due to the more thorough understanding of the I have re-implemented this process, the use of dynamic BD table, the drive to receive data from a network port, submitted to my software for three layer exchange, until sent from another interface, not a copy. This design greatly improves the performance, so that the system indicators close to the theoretical value. The combination of hardware and software makes my design level on a step. I am now writing this operating system, after compiling I compiled the program into a compilation, find out the code which is not optimized, and then in the C program to adjust. For example, many CPUs do not have special multiplication instructions, this should all know that in this CPU to do a multiplication operation will often spend a lot of instruction cycle, some friends will say this I know, I will try to avoid the use of ×, but things are often not so simple, you know How does the subscript operation of arrays in C language be implemented? Take a closer look at the disassembly code and you will understand that the C compiler will sometimes produce displacement instructions, but sometimes it will be done with multiplication, and the efficiency of the two is often vastly different, so understand these questions so that you can elevate your system to the extreme. These problems are not much to say, if you are interested in the future can be discussed together.
as far as I am concerned, I sincerely hope that the more in-depth friends of the software will have the opportunity to learn the hardware and other related knowledge, especially for the bottom development and embedded design. This is very helpful for the improvement of software technology, otherwise you just know the way it is, but you don't understand why. My view has also been verified by my current IC company proj ECT Manager. He told us that the company is now 802.11 chip product software Manager originally was to do the chip hardware design, and so on the original is to do software, and now in the IC, similar examples there are many, but in the domestic such a trend is not very popular.
I have some experience to share with you, only when I do a good job, I will learn the technology with little work relationship, so that the company's boss will not be disgusted, in the entry stage of the problem I usually do not ask those senior people, but asked some relatively shallow friends, such as the recent graduation students, Because they tend to explain to you in detail, and senior people usually think your problem is too simple, so the answer is very simple, I am embarrassed to ask more. And so on a certain level of technology I will ask them, they can give you a more in-depth answer. In addition, some friends say that I have a better chance, they also hope to engage in new work unfortunately no opportunity, I listened to only a wry smile, my opportunity to understand people should know that I was not born in what it family:) also no one all the way to promote me, all the road is out of their own, my mother died earlier, My stepmother (I call her aunt) looked at me hard to come over, once she saw my 30 is still writing programs, she said that like I work hard wood can learn.
my ultimate goal is IC, not PCB, so my next step is to start learning IC design knowledge. The company's colleagues do not understand the IC design, the back of the road to rely on their own, I bought a lot of related books, in the internet also looked up a lot of information, I spent a lot of time to learn VHDL, and with the software to do some simple design and simulation (no ASIC design, just for FPGA), with the depth of learning, I gradually understand the basic process of IC design, but also understand the hardships of the road. This time I have done a job-hopping preparation, I to an industry and certain popularity of IC design company to cast a resume, and through a lengthy interview (4 hours). Everything else I am more satisfied, but the salary is not satisfactory, I also understand the reason, because I am the new people in this industry, I have no experience, I once again will self-zeroing. The boss asked me if I could accept more than 6,000 one months, and I knew he was in the same business. Think of my communications industry friends, basically are more than 100,000 annual salary, the monthly salary is also abound, friends also help me introduce a lot of good treatment company, I how to choose, at that time I hesitate, I love my career, I yearn for my pursuit, but I am also an ordinary person, I also need to feed the family, I also want to buy a car early. Life has given me a difficult problem.
Einstein, at the age of 63, said that a man did not achieve the greatest scientific achievement before the age of 30, and that he would never have. This sentence gave me a lot of pressure and vibration, I immediately 26 years old, away from 30 only four years, I must seize the precious time of these years, and strive to reach the peak of my technology. For this ideal, in order to be able to get closer to their dreams, I chose this IC company, I understand that their salaries and the company just came in the same degree, but for the future development can only endure, all have to start again. Changing the industry is a very painful process, especially from a good position to change to a strange job, feel like from the warm quilt out into the ice water, it is difficult to accept. In the original communications company, I was the only employee who had risen five times in two years, the company and colleagues have given me great recognition, work is often entrusted with the task. But now all this is the past, in the new company I am just a newcomer, no one knows and no one cares about my past achievements. I decided to start again, I regard myself as a new graduate student, I want to use their own efforts to get the company's approval. Entering the new industry is very painful, I told myself to endure all this, although there is a lot of temptation outside, but since I made a choice, I will not allow myself to easily put
abandoned.
I've been in this new company for one months now, and it's been very difficult, and now I'm getting used to it. At the end of the first month, Team leader to talk to me, saying that I was the best of the new employees, I am very gratified, this is a positive for my efforts. Here also to thank my girlfriend, she gave me a lot of support and encouragement, every time in my shaking when she is encouraged me, let me insist on their ideals, just came to Shanghai is she let me not reluctantly to do mis, this is also she let me resist the temptation of the monthly, without her I may not have today's results. Now the company has its own operating system, its own CPU, DSP and other chips, where I can learn the world's most advanced technology, our design and development no longer rely entirely on other people's hardware and systems, which makes me very happy. I plan to wait for the work to be on the right track, the full study new knowledge, realizes my ideal.
in the following two years I set myself a few goals:
first, work hard to do their job, in the workplace by the company and colleagues agree;
two. Hard to learn IC hardware design knowledge, to consult with colleagues, and use all opportunities to practice more;
three. Implement the main part of my real-time operating system, complete the TCP/IP protocol stack module, and publish the source code free of charge;
four. Marry my girlfriend and buy a small house, this is the most important, because I understand the cause can be re-, but the precious feelings are hard to get back.
mention here the operating system I am currently developing, which is a real-time embedded system that currently supports the following features:
A. Support time-slice rotation scheduling and priority-based scheduling with up to 64 priority levels;
B. Preemptive real-time kernel;
C. In order to facilitate the transplant, the subject is implemented by standard C;
D. Very few assembly codes, less than 100 lines;
E. Support for task management, with separate stacks for each task;
F. Process synchronization and communication is currently completed Semaphore,message queue is being debugged;
G. Implement the timing system call;
H. Debugging can be emulated on Windows
I also intend to implement priority reversal protection in the next step, Event Flag,data Pipe, memory management (previously implemented), driver interface, and so on. After that I will try to perfect it, such as adding file system, protocol stack, debugging interface and so on. I hope my friends will put forward their opinions and suggestions, and I would appreciate it!
PostScript:
as some friends have said, my experience may mislead some of my friends, and here I must explain. I came to Shanghai before studying too desperately, often sleep only 3 hours at night, I was 1.71-meter height, then only 108 pounds (I now more than 130), the family also said I was so desperate to live but 60 years old, but then I was too stubborn, I told them as long as I can achieve the ideal live 50 years old I was enough. At that time, my body was affected by the desperate, one morning suddenly the pain of the waist, pain, I fell in the bed can't stand up. Although I have been more attention now, but sometimes dull ache. Later in my girlfriend persuaded me, after coming to Shanghai I no longer so. I often quote my father's sentence that the body is the capital of revolution.
and I also found that desperately is not the way, I can boil one or two all night, most of the time I worked for three days and three nights, but I have not recovered for half a month, so it is not worth the candle? Learning work should be a long-term process, like a marathon rather than a dash of hundred meters. I now very much pay attention to adjust the intensity of study and work, I want to make sure to have the relatively abundant energy every day, some young friends feel that they should also work hard, it makes me somewhat worried, if my story can let you in the study work more interest, I will feel very happy, but if mislead some friends, Let you do something unworthy of giving, I will feel very guilty.
technology is not a distinction, I used to change the industry because of their own interest, not to which industry have any prejudice. I hope my experience does not give a wrong guide to my friends, I think I always to the higher technology development. In fact, all walks of life are very difficult to achieve top. Then again, although the technology is not a distinction, but the threshold is high and low, in any case, to do the threshold of the IC than to do the height of the Web page, this can not be denied. All kinds of national talents are needed, but as individuals to advance the idea or should have, efforts in their favorite industry to do better, and should not stay in the relatively superficial level.
I am a person who feel more self-aware, perhaps my greatest advantage is to know that they have many shortcomings:). My story is a lot of twists and turns and mistakes are caused by my shortcomings, I hope you look at my experience with a prudent perspective, not to be confused by my rhetoric. I learn a little arbitrary, which brings me endless trouble, but also greatly hindered my development. I remember when I was very good grades, but later study seriously partial section, leading to my high school performance repeatedly landslide, also did not enter into what good school, a friend, when the results and I similar, but without my this shortcoming, she went to the United States, and later in the study of the U.S., in a famous tutor under the theory of Science, This is not a better way out. In addition, my study method is also in the continuous improvement of the past study too much attention to quantity and time, so study both bitter and inefficient, now I pay great attention to the efficiency and skills of learning, this is the shortest way to learn (of course, not refers to opportunistic), such as learning a relatively unfamiliar technology, if there are conditions, Ask an experienced person, do not need to ask a lot, often he inadvertently a few words will give you very great help, even more than you read one weeks of the book. You will save a lot of time to study with this thought, so he le? These years I learned a lot of things, because of the beginning very blind, so learning things disorganized, now in retrospect let me laugh, I put a lot of time wasted in some no need to understand the knowledge, after all, a person's energy is limited. A lot of friends are like I have wubi style, indeed it is a good input method, but for a researcher it is definitely not worth your back, your time should be spent in a valuable place. I have done a lot of things, I have cced, wps command and shortcut keys, in dBASE basically quit the history stage after I spent a lot of time to learn its use. So my study in the early lack of planning, no clear short-term objectives, medium-term goals, only a ethereal long-term ideals. As with design, good design is a process of abstraction from the requirements to the code, without the need to start coding immediately.
of course, all these years of study and work more or less some of the harvest, below I say some of my learning experience, these methods may not be correct, I also constantly explore and improve. My study and work have a relatively clear goal, I will not be tempted to learn a technology, I will consider a lot before the decision, including long-term development, personal route planning, the cost of the need to pay, the difficulties and solutions, and so on, after the decision will also develop a clearer plan, including short-term, Medium and long-term, the resources available to the side (including good books, materials, hardware and software environment, also includes experienced friends or teachers), and each stage is how to transition to a higher stage of the plan, often in a learning phase once on the road will go relatively smooth, but the cross-stage is usually more troublesome, such as from learning The basic knowledge of learning to practice. In addition I buy books also have their own method, now the world of high-quality books far less than low-quality books, for a strange technology, often in the first buy will choose the wrong, even if you buy a good book but its direction may not be suitable for you, so I usually first on the Internet to find some introduction of the technology, With a little idea to buy a relatively thin, relatively cheap and relatively general content of the book, which is the author of the most good at writing books:), and then browse it again I will basically understand the key points of the technology, the back of the book and make plans will be more clear. Otherwise, it is often difficult to find a good book from the beginning, and to buy back hard to learn, sometimes half of learning to find the book is low-quality or relatively outdated technology, people are very annoyed. It is also usually a good choice to have experienced people introduce you.
The personal experience of an IT person, to a friend who has lost his way