I've struggled for 7 years to become an IT elite.

Source: Internet
Author: User

     

I've struggled for 7 years to become an IT elite.

     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 start 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 the paper, I have been to junior only a 486, Before this paper how many programs written I also do not remember, only know the longest I take 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 eye, they use is English version of Win3.1, my that point dos knowledge all see Ghost, on machine fear of a blind touch, accidentally put word into full screen, how can not original, I was so worried, I thought I broke the machine. 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 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 to the domestic changed the nature, a company is not through the ISO9000 or CMM can standardize, 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, as Suitable for the development of application systems that's another thing. 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 in need of money now, I took out a little of my savings and borrowed some from my friends, paid for her tuition and gave her mother a doctor (later know the doctor's money and increasing multiplicity, even if 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. Because of the time rush, I only prepared 4000   block money, her only hundreds of dollars is also her mother to go, I bought three tickets, one is noon, two is the evening, noon my family sent me to the ship, they left me on the boat, I took a night boat with her and left the city where I had lived for many years, with only 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 Tour * pavilion, this room even the windows are not, the July weather is very hot, the room is very stuffy. The next day we began to rent the house, because the body of money, we are basically walking, spent one weeks, do not know how many laps in Pudong to find a 400 house, but we do not understand Shanghai is to pay three pressure one, but also to pay half a month intermediary fee, 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 often starve in college reasons), 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 alsoFound a job, the first day of work she cried, this is the first time she came to Shanghai tears, 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.

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 be known that a multiplication operation on this CPU often takes a lot of instruction cycle, some friends will say this I know, I will try to avoid the X number, but things are often not so simple, Do you know how the subscript operation of arrays in C language is 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. ItSome of the 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 project manager. He told us that the company's current 802.11 chip product software Manager originally was to do the chip hardware design, and so on is doing the software, and now in the IC, similar examples are many, but in the domestic atmosphere 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 ask some relatively shallow friends, such as just graduating students, because they tend to With your detailed explanation, 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 to clear the zero. 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, "a man did not achieve the greatest scientific achievement before the age of 30, 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 are many temptation, but since the choice I have not allowed to give up easily.

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 encouraged me, let me adhere to their ideals, just came to Shanghai is she let me do not reluctantly to do mis, this is also she let me resist the monthly salary over million lure * confusion, 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 transfer of * planting, the main body is achieved 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, "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 does not have a distinction, I used to change the industry because of their own interests, rather than 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 everyone with a prudent view of my experience, do not be my "rhetoric" confused. 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, For example, from learning basic knowledge 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.

Some friends want to learn communication, embedded development, but always feel that they do not have the hardware and software environment, I will follow my understanding to introduce you how to establish such an environment, of course, I know only the direction of my study and work. Communication What I do is the work of the data network, including TCP/IP, two or three-layer switching, docking network, and the soft switch is also a little understanding. These hardware and software environments can be built on a PC. You can even set up a PC without a network card with a number of routers, access servers, VoIP gateways, gatekeepers, hosts and other simulation network environment, and the actual network is quite close, of course, this requires you have a clear network concept and a certain network knowledge, I have been trying to develop a software to simplify the process , now that the experiment has been done, I might incorporate it into my operating system perimeter extension software. Such a method I can not use simple statement is very clear, I could say that the idea is to implement the simulation network card on the PC, (Know how windows in the machine without a network card to implement the virtual network card technology friends should understand), and then each simulation network card corresponding to a virtual device, such as a router or host. You can also use third-party tools to do some of the work, such as VMware. I am now using a simulation network card to do their own development.

As for the embedded development environment easier to implement, the PC is a very large hardware platform, the existing embedded operating system usually support X86, you can do the development on the above, through the floppy boot or the use of virtual machine load, I used VxWorks to do the experiment, on a PC running Windows and VxWorks two systems. In addition, the DOS-compatible 16-bit emulation X86 environment on Windows also provides an excellent test environment for many operating systems, as is the case with my operating system on Windows. Linux is widely used in embedded, it has a lot of information on the Internet, and it is relatively easy to practice. At the same time many perfect embedded development environment support software simulation, such as Tornado, wince and so on.

end!

Welcome to Exchange, sharing the programmer inspirational story. QQ Group of Happy programmers:  

I've struggled for 7 years to become an IT elite.

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.