2010 - 08 - 23
My career program
Article Category: IT life
This procedure is only love and longing for the programmers who actually made, so the rest can be ignored below.
Today, almost eight CS exposure, ignorance, the fine things fresh too, even nothing.
I recall the career program is to organize complex of mood.
1. Access to computers and programming languages
University beginning in 2002, DOS machine learning Pascal, gone carry on until 2007 doing a compilation of Pascal software when the anti-Pascal a little longer memories. Is the time, Pascal Introduction and opening the computer, and finally did not lead a good introduction, and Pascal has not been touched in a hurry and end pointers are also subject, but understand the basic sentence structure programming, conditional structures and loop control structures, this as root, be backward, but also good.
2. Acquaintance C + + and object-oriented
In 2003 came a jump, not the direct creation of learning C and C + + program. One day, something Teacher, on behalf of her husband, just a word that I have realized that: You did well Linguistics C, C + + are not adopted. Indeed! The end of course, object-oriented part of the hastily settle the matter, good news was that the class looks like, know OOP such a thing. Most pleased to be carefully studied C + +, C-section, a preliminary understanding of the pointers to this stuff. Learning is clearly not good, plus he is very lazy, which I have considerable impact in subsequent years, such as on the C language printf to 100% of the hate, people would ask me what language, I can only say nothing will, reluctantly said I would C + + in the C language!
3. In the Heat of programming exercises
By the end of 2003, set up data structure. Looking back now, dear, why they are always bad for a film it? Science data structure did not realize the essence of the data structure, but is the practice in the use of programs to improve programming ability, exercise classes how to use, of course, was still not understand OOP, just to use the class to do this, but there is still self-programming satisfaction, because they want to use the procedure can be expressed, in particular the debugging process is to stimulate problem-solving.
Meanwhile, the year along with a very popular thing, that some students learn their own VC (normal class will not teach this stuff), learn how to make the interface, cow mess, they follow the trend, in fact, buy the materials according Views mouse fills in the time do not understand object-oriented learning that, in retrospect, is really ridiculous!
Then there are some courses, can exercise to the program, such as numerical analysis, operating systems, databases, computer graphics, etc., more or less, is always some increase, but no essential change.
Later learning assembly, but also not much feel, and I had not seriously study composition theory, computer theory and other classes, found out they do not fit the hardware, in fact due to their decadence.
The second half of 2004 following two years brought in this life stage the most despised. Who work with online games to bed, and drug abuse is exactly the same, deeper and deeper, eventually can not pull out. In which also, fans of another fan; and its outside, is painful, unworthy of the pro division, remorse of conscience, invasion of drug addiction, Internet cafes are again unbearable infiltration. Sudden drop in grades, from first-class scholarship and so repeatedly and so on, to not even look only to pass every test. That is, at that time, learned how to cope with exams, we know that passing is not contrary to the lower limit, Thus, once every clinical examination, were rushed to cooperation, in accordance with priorities for the division of labor, their energies, learned about each other, with the clearance, not linked to class , This is the only things without regret. But the biggest hate, is a professional waste! Had never been seen simply silly cute! A roommate, to the senior, so he used C + + to write programs, up to begin, end, brother, feeling now Zan still at the stage of freshman Pascal ah!
Flash, to the senior, to consider how to get a life, the University so decadent, poor foundation, professional competence, afraid to face the job, then something was also stopped at this time, online games, or waste this life now! Admitted to the study, beginning with the foundation or the university, but this really is a turning point of my new starting point.
Senior next semester, that is, the first half of 2006, the final project, a headache of it! Fortunately, his good life, can meet the honored, and together they make a software with VC, thanks to others, and also thanks to people to help themselves before they can return to the road to programming, but for C + +, MFC, surface to target only the understanding of the three, or even do not understand clearly the relationship between the three. Think about that time very funny, with the STL's vector, and then in the paper has described the use of a data structure of the new technology, ha ha! Then buy the "in-depth pull-out MFC", tasted, although now want to see but did not have much time.
4. Programming big step forward
The second half of graduate school in 2006, also equivalent to a fresh start, the teacher asked me to participate in the hardware of the project, not interested, because of heavy course load, withdraw from the project after the busy test, the six-month progress from a programming point of view is not.
2007 was a turning point in the first half, that would be less class, his spare time readily get from classmates that "absolute c + +" perspective, the system studied again C + +. At this time in the best object-oriented point of understanding with, with the point of realization and then wonder why in light of the MFC framework is that way. The semester with a special object-oriented programs, follow to the hearing, be used to verify your are thinking what they have learned, and progress quickly. That year, Tencent order to expand his influence, set up in various universities Tencent Innovation Forum, to participate in the, exactly the training program the opportunity to do so basically its a software driven, and submitted works. Term training opportunities that really Tingzhi, algorithm design and analysis program to do great work, object-oriented program to do great work. Rapid progress, so many people believe that object-oriented big job more difficult, I ended within two days, including design and programming.
At that time really picked up the confidence again, and his sense of superiority in the surrounding students have also to thank the encouragement of my mentor, This made me to be able to continue to improve.
5. Ideology and then increase the second year of study, your upgrade is a big turning point.
07 in the second half, points the direction of the topic, based mainly on paper, pain persist until 2008 in the first half, did not graduate from that of white, because to do serious research, and know how to do research. This thread is the programmer of the road, so things do research, skip the talk, in fact most students are not concerned with how to do research.
At this stage, the most significant is that the ideology of software and improved programming.
First of all, due to a small group undergraduate dormitory next door, especially when graduate students, the technology is very strong, well aware of the level of programming far behind him, and he can always exchange some experience. By its greatest impact is to buy some of the most cow-related technology books, that does not rely on schools to learn those materials, most cattle specialist school science books, especially foreign classics, and then develop a regular bookstore habits.
From the "master Programming Proverbs" in the know does not mean the software program, also known as the sacred original programmer, this book ranks of programmers who want to join the highly inflammatory, at least for me like this. I now know that the basic domestic programmers is the second and so on, so positioning itself as a third to four other programmers, while the highest levels of programmers, in addition to Donald Knuth competent, worldly and several others Secular?
Then, accidentally discovered "Introduction to computer systems," a book, ecstatic, maybe I had it on very poor, so the same with finding treasure. Combined with knowledge of front, I know from the original study computer science should be like this ah: bottom-up, bottoms-up!! To this moment, I realized that computer science is the need to upgrade their level of consciousness, and know that bottom do not understand, written with the high-level language code is inexplicable!
After the recommendation by the guy next door dormitory, watching "in-depth understanding of computer systems", which is actually a bottom-up theory, but the content of gold content is simply God-class!
Their wandering again, and found and bought a "Code Complete", I was learning the software on their evaluation can be modeled in this book are! Simply idea storm, there is sentiment everywhere, from everywhere, put it down. As a good martial arts Cheats, definitely more than just teaching moves and, most importantly, teach the Heart. For example, experience from what is abstract, and taste the object-oriented De characteristics, in particular the data package, another example pairs of variable names and efficient Tao Lun Zhu Shi's height not generally Biancheng norms (such as sharp in the forest) Suoneng Bi, and after article I mentioned on the program performance optimization of strategic guidance, and so on.
In short, until now, I think so, as a programmer, the software do a good job depends on "Code Complete", to understand the code written to write will depend on "in-depth understanding of computer systems."
In this way, raising a lot of ideology, in fact stronger than the programming language itself, the more progress, because the heart, stressed, and have a methodology, and with strategic guidance, to learn what knowledge, when what used on the line. Moreover, in practice, gradually develop their own codes of some good habits is very important, such as pairs coding (ie, when the new End to think about delete, and the first written), to maintain the integrity of the program and maintain procedures to debug and so on and so on. Perhaps it was the habit, so I write code, basic does not the debugger, because the system has been good to, add some code on the Bian Yi testing out the problem a little analysis of cytoreductive Rongyi Positioning (up to the Subsequently, the Working Time , to protect others in advance of the code, the solution for the problem bug, then linked up the debugger will have to battle). I think these are the students around and I was the biggest difference, and believe their future will be a real good programmers.
6. Algorithm does not mean that procedures in other words, the code need to optimize.
In fact, not all, strictly speaking, is a high-performance requirements of procedures, the code only requires careful optimization of the general performance of the application layer program is no special requirements in terms.
Early in 2008, I started graduate school subjects, popular talk is to do a regular expression engine, but it is not easy, because DFA deal faster characters, so a large number of rules to transform into a DFA, the problem is to DFA of storage space down. Theoretical method Daohai smooth, the new algorithm would also like to come out. Ever confident to achieve the program, as students think they have a good sense of programming and thinking, coupled with the use of wild STL, process quickly OK. At this time, the question arises, just an ordinary regular expression, the conversion time may deplete half an hour. This is tantamount to pouring cold water on their heads domineering, Why? Yes Yes, all my code is written in accordance with algorithms, and algorithm complexity analysis have been, but why so slow?
So, mind to come and spend a summer vacation time to do performance optimization procedures, refer to a lot of information, the beginning is not confusing, random whom. But then, "Code Complete" again after all the software I do the best instructors, although not teach me how to do specific procedures for performance optimization, but it taught me strategic guidance to the steps, very critical, also explained the thinking of many optimization , for example, the principle of 80-20, etc.. On top of the steps according to the first method to do the analysis of demand, if some requirements can be cut, it will clearly raise the operating efficiency;'s optimization algorithm to do again, especially some of the details of implementation, and I also improved a lot, including the NFA implementation of methods to overthrow the whole again, no reference books ahead of these, the main reference is to go check again to understand; then can improve the performance of some of the coding techniques, such as caching, delay calculation, etc., this In "Code Complete" in discourse; further down is the programming language itself, such as C + + itself also STL's own, had never been seen before they know how devastating the consequences of the abuse of STL, not dwell on the main reference to "Effective STL ", there is an IBM's" C + + program performance optimization "; final optimization can consider the code written in what looks like a more easy-to-compiler to compile into efficient assembly code, I even the compiler optimization levels have increased , and can truly be said to enhance the program went to great performance, then refer to the "in-depth understanding of computer systems", and from that can be transferred to the compiler optimization level, "Code Complete" in this regard is also discussed. In fact, to retrospect, we should look at some information on memory optimization, mainly to enhance the application of external memory efficiency, windows memory map has yet to study, get free make up.
So stick with it, is a good improvement, involves aspects of compilation from the bottom straight up, until demand analysis, architecture design, algorithm and data structure, and of course the code itself. The most critical, it will have a sense of accomplishment now and then never had that experience of such a process: to run a half-hour program a little bit of improvement to run only a dozen milliseconds, while the middle of a table with a recorded continuously introducing new methods, new techniques arising from performance ratio.
Later, the technology referred to above discussed performance optimization cattle guy, he directly said, "You picked the wrong programming language, you should then discuss the matter with me, to do regular expressions should use the perl". It would be really do not know why perl objects, but in fact it should be said that since Council, learned to think independently and not blindly follow with blind faith in others (especially technical strongman). The problem should be divided into two to see, perl is very proficient in text processing, and support powerful regular expression features. The question now is do their own regular expression engine, ah, can call the perl What? If the rules with a large amount of data and by matching the data, I'm sure perl can not work because its principle is to construct NFA for processing, processing speed can not keep up. perl regular strong due to his "showy", these superfluous for most application-level development is sufficient, and very practical, but if you write high-performance stuff, really not practical.
Now back to the subject, the algorithm does not mean that process, in other words, the same algorithm to different programmers wrote the code out of the absolute efficiency of different, and thus know the make a real programmer is not easy, of course, a real programmer is definitely more than the public good programmer.
7. In the spirit of the regular army is trained to be a good programmer and software architect of the goal, both close to home, the company gave to resolve account, so in 2009 in Beijing, a Taiwanese enterprises are caught in the controversial work.
As written here, it's good to recall the number of bit in order to avoid forgetting.
Today, we recall the day in the company, it is not how much I regret the office.
Just joined the company, are all fresh, with vision for the future, as well as new knowledge, new technology awe, so more efforts, but progress is rapid, including technical and vocational quality, etc, in short that is accepted in the regular army training and baptism.
Below is my entry for two months after the regularization (pretending to be reduced in order to avoid arousing suspicion), really from the heart:
Since April 20 this year, the entry has been nearly two months, during which feelings of many, learned a lot.
(1). The work environment
From school into the company, really going through a big change, and the company's executives and the help of my colleagues are kept from students to professional people to complete the transformation. ......
For the work environment, in addition to good infrastructure, I think the most important thing is the company with a harmonious interpersonal atmosphere, colleagues from the head to the side, give a warm feeling ,.......
Whenever the issue of learning at work, no matter who will be eager to resort to the help. The company is in a way to encourage and guide the training of new staff. ......
Rich company's activities, can play a very good regulation of the work. During the Games, we are actively preparing to go ,......
(2). Learning and growth
Two months passed quickly, recall, has learned a lot of things.
Aspects of professional people in the shaping. Participated in the new energy business training, the deepest thoughts and feelings to the team and the division of labor power, as well as the importance of active and active exercise in the training process, and improving their skills and ability to communicate with others.
Professional skills. As a special master to guide, and ordinary day to work with many colleagues around to share and consult, so rapid progress. Moreover, the company has a better inspection and supervision to learn the mechanisms in place for school places will not make up time. Comparison schools, the company still have to strain a bit, but very full, growing fast. In the work, sometimes heart will feel a little pressure, which along with his attitude adjustment and adaptation to the corporate environment, and learn to adjust the relationship between work and rest, I think these things can handle the most learned valuable. In short, in the company so much a work in process, as it is a learning process of growing.
(3). Career Development
Leung Siu divide the new growth will be the programmer for six phases: the first stage, mainly the use of a language proficiency; the second stage, to master the interface on a platform and the corresponding language of its own library; third stage , to in-depth understanding of an underlying platform. The stage is to go on step by step, and throw back a few stages no matter what, I think the most important is their position determined the first, not impulsive, act first and do the second phase of the programmer.
This company provided me with career development and growth of the platform, here, I feel very fortunate. Now the company's learning is from the bottom to go to school, to understand the underlying principles and then use the interface on top, but later insisted that to learn, and continue to add new knowledge, I believe in the company's environment, in the near future will do the second stage to the third stage of the programmer. Persistently steered, can engrave stone, and now the only thing I can do and must do is strengthen our faith in the programmers go on this road firm.
Memories now, for less than a year of work left behind, some shame, that I will be in the company's road to development programmer shot off, but at that time a variety of reasons, and no security is the only conscience is not "non-impulsive honestly do its second phase of the programmer! "
In fact, the growth in the company's exponential progress, first short, then long linear level progress. I am a mortal, so the linear growth phase or impetuous it!
Then realize that the company's principle is simple: demand is the posts, you stare into the training of people in that position. Companies like most people are hard-working people who do not need more intelligent, read a book and forget what his name is like "Road to Jane," written in software development, on top said, "is people can do programmers, as long as you know, wear fewer clothes in hot summer, cold in winter, the more clothes, "is the image.
Not saying bad things about this company because this is probably my life been to only one company, may be called the parent company, because after all, I obtained in addition to wages and technology, the company's contribution is almost zero, and in the company still miss many of my colleagues, I especially admire the people of Taiwan from the heart, and their technical level is high, their hard-working are strong, they are very open-minded.
Back to the topic, now the largest gains in the company in the following summary:
(1). Make a programmer in the company is planning, including doing things that are planning to do the software, writing code is planning more. Without this, the school learned in software engineering is on paper, how to write the document will not, do not talk about students to form their own programming specifications.
(2). To learn the company's management, such as how to prepare the schedule, how to organize meetings to discuss problems and how to do reports, how to coordinate and so on. These later in the school's project management has absolute guidance.
(3). Contacts with the old programmer, I have a direct relationship with the memories of two people.
The first person is my teacher, strict harsh, I change their attitude to the process: fear -> hate -> admiration -> friends. Joined the company, I master a serious look, afraid of natural. Then his experience severe, sometimes very demanding requirements, such as I listen to a report prior to the reporter he called to report that I was given a few questions, which means you can listen, but not white listen Why can not people hate it. At the same time, with my entry is a guy over the same period, the teacher who feels good on, usually more loose and be greeted. Next stage is to be a small function to test learning, my teacher asked me stricter every day a progress check, and then check the third progress every day, morning, noon and night came, so that from the demand analysis, detailed design documents , coding and testing all the way down now. From the start, but I admire my teacher because he taught me a lot of good habits, such as writing to learning problems and FAQ record harvest, I discussed the program with the data storage problem, remember that there is a pointer on data structures are changed three times, two of us were called "tortuous" problem, and guide the best way I would like to come out, there is specifically would teach me some of his own programming ideas, that is, when I see the C language code should be rewritten to support multiple instances, that is, then start thinking about how object-oriented C language with thinking unfolded. Subsequently made a report on this work, I'm the most grateful to my teacher when it was his guidance of the harsh and only the smooth clearance of me; However, the other guy, it is not smooth, and by large charge said "the overall feeling you write down the procedure was too casual," so go back and re-changed and then make a report. That is, at that time, I began to put down the usual Master's face all seriousness, give me a pre-determined team. Then, I told my teacher has always been a friend of, usually join Dengshan She, I feel I have a small Shishu master who is her family, I bring them out to the team when faced difficult issues in You can also bring them to come and help solve.
The second person I mentioned earlier, the project team leader, especially a mild, unique patient, very experienced programmer for the report is structured nature of doing things is responsible. He told me a completely different character master, never criticize people, and then big problems is modest about. I answered every leader is, no matter how simple question about, or more difficult problems, he would put the matter at hand, to help resolve those questions. He was surrounded by a bunch of new people asking questions, and then he was alone during the day time at night to work overtime to make up, but complain that this spirit can not help but admire. With the task, he always came Xiao Hehe, "right?", If the meeting is very pained and said, "okay, you do first, we work together to solve a problem", there is no head of the shelves, but more is I learn a completely worthy of charisma.
8. Algorithms and mathematics are benevolent then leave the things that I am sorry group of people inside, actually I do not give a programmer the road, but gave up to do in the company in the form of the road programmer I think that the programmer's job is sacred, and now just use a shortcut from that to continue this path, that is by reading to deepen the internal strength of Dr. cultivation.
My reason for leaving was to read Dr., and the reason a lot of PhD. First time in the company's actual situation, had to let my heart impetuous, because I am mortal, not willing to status quo, that it would be difficult to achieve in the company's positioning pre-planning their own road of programmers. Then I cast the seed of the "Software" paper was hired, very encouraged, and training over the same period in the company of a guy is Dr. incite me to read and gave me about a lot of academic things this way. Have heart, on and classmates, friends, family, and teacher exchange this, access to a wide range of support, decided to quit his job to pursue PhD. There was one thing, an undergraduate student to call me, its not that I want to read the idea of Dr, and he has played in this thread of her conversation, PhD hype how good, and suggested that I read, really this kind of coincidence that makes me strong confidence at the time. So this year (2010) to return to school PhD. PhD Instructor Department in the original main reason is the trust of a former teacher, you can guide me seriously, you can provide me with painstaking research environment, and the other is the continuation of the original professional and direction, can guarantee the algorithm on the diligent.
In fact, I am not now, I deliberately linked with the programmers, but rather a matter of fact, or even a Ph.D. in computer science professors and coding is inseparable from the foreign university professor of computer code which is not a master, which is not good programmer? The attitude of the academic community itself is not right, that they are first-class programmers low, this does not make too much comment. If the programmer by Liang Chao of the new classification: the current reality of the company in the vast majority of programmers is the second and so on; to reach the third and so depends on personal good fortune and hard work, and of course, inseparable from the company given the opportunity Otherwise, life could be the second and so on; while the fourth and so on are definitely the backbone of a large company architects and programmers; the fifth and even sixth, etc., etc. who do not quite reach the theoretical foundation is not life, Donald Knuth has made himself the world's best programmers, that is the level.
Although little progress in recent time segment, but the good Doctor is not aware of the time I thought of so simple. China's higher education presents a serious delay of the state, but also that most people with degrees, and asymmetry, I single-discipline of computer science. Undergraduates should learn and understand computer systems, and practical ability to lay a solid program; master problem should be able to abstract knowledge into a computer algorithm or model, and give the code to achieve in order to solve practical problems. In fact the number of computer majors in college who is eligible? Now it seems, take the general universities, the graduate students have good programming skills in the very rare, not to mention the undergraduate, master's purpose is not readable training program, but to learn how to do research. In advance, the Dr. simply want to read into the algorithm is to abstract the problem, or the original people on a ready made model, and then propose a new method of optimization or you can, my days, it actually still stuck in the Master of the cognitive level, Ruo this, how can the future have a qualitative improvement and breakthrough? Even mixing a graduate, but not difficult, but was declared the proposal to give workers time to Ph.D., is not it ashamed? Further still, if a Ph.D. is also holding ability of engineering practice to show off, just too funny! Qualified doctoral students, do not deceive yourself, in any case, at least for the study had to put forward a better algorithm or mathematical model, or even to establish a new theoretical system, which is the fifth such programmers, long way to go , but it is worth to pursue!
A while ago, Baidu search function to the voice of, CSDN on a cow who had this to say: "Personally, Baidu's algorithm is this: Based on Hidden Markov Model (HMM), or some other time-series model CRF, etc. For example, the voice of user input string to identify, and then with the existing library comparison. where the main use of the Viterbi algorithm. More importantly, how to train the HMM? expected to carry out a flood of music training, As the high cost of artificial mark, so it will unsupervised learning, EM, and forward backward algorithm, such models is built up. two key points: what a selection feature, which is training features, the order of the corresponding HMM also will increase; how to organize vast amounts of data as training and recognition, and improve processing speed? Baidu should be good, you distributed computing, another EM algorithm also supports multi-threading the. questions: Otherwise use the lyrics? or whether the lyrics as a feature; If you want to higher precision, whether to adopt similar models, the aforementioned CRF should be very good, but slow, but it depends on the parallel computing effort of Baidu. this is not thousands of servers, it is impossible to do. "
Their comments, good or bad, I had to admire, if not a certain knowledge, of yore! Also the general programmers far away from their! A graduate student roommate, abandoned ZTE away Thunder, is of the order forward, my praise of the! Number with the door, talking about professional, cheeky hard color, do not think that Jung, the intention to, belittle those, I sigh for!
The algorithm has been extremely weak and the mathematics, unworthy of the division gate, how hard do not cram for the pain? Due to ignorance of the past, King said that the probability of any use of a school? It depends on the burden of mathematics, is a graduate degree conditions, completion of quickly thrown away, and then holding the programming language books to eating, bartering, and several can be reflected in tomorrow? Thoroughly confused too! The most important thing is to be practical, at this time is not too late to study with great concentration. Su Xun, beginning on 27 energies to study, go home before burning the article noted, closed-door study in 2056, then after about six hundred of that, write an instant a thousand words, and it is one of the Tang and Song. ; I 27 of age, energies to study, do not read the Classics and the learning algorithm, without rendering utility smoked heart, after several years of academic Qi be accomplished?
9. Postscript I am not in favor of enforcement of industry codes in order to make ends meet it, or suffering inevitable.
As for the success of different definitions of different people. Money can not buy everything, everything is not for the money, health, so do not Bong is on the money. Then, set a direction, as sustenance, the heart of its on whom his life, to finish the race. To program the right hand if left poems, this not fellow?
Zwingli is humble person my humble opinion, for the reader smile ear, if so Lost 12, very comforting; news Road have successively, surgery industry to specialize in the real cattle, and his respect were not for show off, is to donate, the more hope opinions when I was listening.
10. Afterword recorded after
CSDN of our friends, the next polite, and Thanks for reading this article!
I CSDN novice, in fact, indeed, among the novice programmer. CSDN master many, little brother first arrived, to the CSDN write such articles and also on how I can not. I am just busy to write their own thoughts, on the road traveled to sum up the previous, sort out ideas Bale. So I not wanted this article will be placed in home, but being the case, simply ask them to me for criticism and also master of all comments, please CSDN.
In addition, speaking of classics, I really like it, of course, like Chinese culture, but as duguao1415 said, I still shallow foundation. Now is to write and write, According to hoist huapiao so written blunt, full of mistakes, we laughed at it! Thanks again duguao1415, I will work hard amateur, should like to write code, maintain a cautious attitude, will never write without first settling down to learn.
Tired to read meaning excellent break under, QQ space, the U.S. text, non-mainstream, online diary, Funny SMS, SMS wishes, popular text messaging, fun ah