Original source: http://www.oschina.net/discuss/thread/500
1, share the first experience: "Education represents the past, ability to represent the present, learning power represents the future." "In fact, this is a research result from the field of foreign education." I believe that a friend who has worked for several years and more than 10 years has some experience in this sense. But I believe this is also important: "It is important to know that it is too late to regret life." "So put in every one, let just graduated friends early see ha."
2, must determine their own direction of development, and to this end to develop a workable plan. Don't say anything, "I just graduated and I don't know what I might do in the future." "Go with the feeling and do it first." Because it is through your subconscious mind to imply that your actions are idle and mediocre. Always do the technology, the future becomes the expert level person. Go to the management direction and become a professional manager. First familiar with the industry and the field, the future. Or in the industry first bully, after a few years to do something else. This is important and it will determine what you are doing right in the last few years or ten years. ”。
3, Software development team, technology is not omnipotent, but no technology is absolutely not. In the technical team, technology and character are equally important, of course, looks are also more important Kazakhstan, especially in the MM more team. In the software project team, the technical level is the important weight which is valued and respected by people. Whether you do management, system analysis, design, coding, or product management, testing, documentation, implementation, maintenance, how much you have to have a technical basis. I didn't really see a layman. Lead a software development team to successfully complete a software development project, even one, not seen. I have seen a "highly educated cow" (not technical type) with a pile of people to finish a project, the project delivery the next day, the project team members dropped a "no longer can not stand it." "Split, separate. We can imagine the success of that project.
4, the elaboration of their own software development expertise learning program, and pay attention to timely correction and adjustment (software development technology changes are too fast). Keep in mind: "If a software developer has not updated his knowledge in 1 or 2 years, he is no longer part of the industry." "Don't tell yourself there is no time." The famous "38 principles" from time management warn us that the other 8 hours will determine the success of your life. I have been studying for more than 2 hours a day since I graduated.
5, books are the ladder of human progress, especially for software developers. Books are the most effective way to learn knowledge, not too much to expect to meet "hidden man" in the work, and to teach you patiently. For money to buy books, my personal experience is: do not buy the domestic people out of the book. I bought those guys out of the book, 100% all regret, without an exception. More angrily, these books are hard to sell in second-hand market stalls. "Owning books does not mean owning knowledge, having knowledge does not mean owning skills, having skills does not mean owning a culture, and having a culture does not mean possessing wisdom." "Only by turning the book into its own wisdom is it truly possessed."
6, do not confine yourself to the surface use of a technology, even if you only use secondary occasionally. "Nothing to do with anything" is any industry engineers should not have the quality. Develop Windows applications, look at the design, loading, execution principles of Windows programs, analyze the PE file format, try developing a Windows application from scratch with the SDK development, using VC + +,
Delphi, Java,. NET development application program, take time to study MFC, VCL, Java EE,. NET their framework design or source code; In addition to the excellent Open-source products or frameworks that use Java EE, JBoss, Spring, Hibernate, and so on, take a moment to see how the gurus abstract, analyze, design, and implement common solutions to similar problems. Try to do this, your future work will be less to meet some of your confused, because, a lot of things you "know it and know why."
7. Programming in one language, but don't tie the mind to it. "Code Encyclopedia" said: "Deep in a language programming, do not float on the surface." Deep into a language development is still far from enough, any programming language exists has its own reasons, so there is no language is "to cure all diseases" of the "panacea." The examples of programming languages that influence and bind developers to solve specific problems are abound.
My experience is: in the face of object tools to develop some key modules, why can not learn from C, C51, assembly of modular packaging. With the traditional desktop development tools (currently mainly VC + +, Delphi) system structure design, why can not reference from the Java community IOC, AOP design ideas, and even learn from spring, Hibernate, JBoss and so on excellent open source framework. In the design and implementation of functions like real-time communication and data collection, why not use the excellent system framework and mode from real-time system and embedded system. Why does everything have to be done by individuals, teams of course to develop language traditions or experiences to solve problems ... "The Stone of his mountain, the Coye".
8, develop the habit of summing up and reflection, and consciously refining the daily work results, the formation of their own personal source library, solve a class of problems of the general system architecture, and even evolve into a framework. As we all know, for software developers, there are, one notable difference is that inexperienced people start from scratch when they finish any task, while experienced people often solve problems by reorganizing their reusable modules and class libraries (this conclusion should not be limited to software development and can extend to many aspects). This is not to say that all reusable things must be achieved on their own, others mature test results can also be collected, collated, integrated into their own knowledge base. However, it is best to achieve their own, so there is no intellectual property rights, copyright and other issues, the key is to achieve their own realization can really grasp the knowledge point, have this skill.
9, both theory and practice, both inside and outside the double repair. The connotation of an engineer is to observe and analyze things and the world with the eyes of an engineer. A qualified software engineer, is a true understanding of the nature of software products and software product development of the idea of the essence of people (personal views, welcome to explore). Mastering the Software development language, the application Language tool solves the concrete problem in the work, completes the target task is the software engineer's main work, but from the software engineer's point of view, this is only the external thing, is not the important, the essential work. Learning and mastering the theory of software product development, software development methodology, and understanding in practice, application of software product analysis, design, implementation of ideas to solve specific software product development problems, is the real software engineer work. Standing in the mature theory and reliable methodology of high thinking, analysis, problem solving, and in concrete practice to verify and modify these ideas and methods, and eventually form their own theoretical system and practical methodology.
10, the mentality has many open, the vision has many open. Do not hold your own technology and achievements, until they are obsolete into garbage, only to take out a disgrace. Please release your research results in time: Develop products, creative design or code, published to let you communicate or use, your achievements have the opportunity to evolve and sublimate. Think of the Windows system tools that you have developed over the past 2000 years, 5, 6 years from now, or that way, many Windows system tools that are popular today are later than their own, but evolve very well, and there are so many users in use. Also, do not keep your own skills and ideas, communicate and share as much as possible, or impart them to members of the development team. "After exchanging apples, everyone has only one apple, but after exchanging ideas, everyone has two kinds of ideas," everyone knows, but how many people can really do it.
11, as far as possible to participate in the development of open source projects, or together with friends to develop some of their own products, do not because there is no money to earn and do not do. The network is no longer just a "virtual world", there are many open source projects, cooperative development projects, outsourcing projects, it is a good opportunity to dabble in knowledge outside the work, and to meet a wider popularity. Do not because the work is to do ERP, not to learn and understand embedded, real-time, communication, network and other aspects of technology, and vice versa. If others hold a contract to cooperate with you, but you do not, that is not familiar, you will regret.
12, when the book to hate less, do not confine their knowledge only to technical aspects. Professor Simon, the Nobel laureate in economics, says: "For a person who has a certain foundation, he can master any knowledge within 6 months if he really is willing to work hard." "The education psychology has been named Simon's learning method to thank Professor Simmons for his research results," he said.
It can be seen that the mastery of a strange knowledge is far from the imagination of so difficult and abstruse. Draw and extensively learn from many parties. Hard to tamp their influence circle, as far as possible to expand their focus circle. Financial, economic, tax, management and so on knowledge, have time to take a look at, bide, wait for a rainy day.
13, the summary and reflection of this article:
A: Don't be a technical expert unless you have a goal. Although this article is about improving the knowledge of software development, do the technology is a master I have always disagree. You can improve your professional knowledge, but you can do the job.
B: To improve the software knowledge and technology is only the surface of the problem, the essence is to improve their understanding of the problem, analysis and solve the problem of the ideological height. Many of the methods and principles of software expertise can be easily extended and applied to other aspects of life.
C: On the basis of competent work, immediately to dabble in other areas of expertise, enrich their knowledge system, improve their comprehensive quality, especially those who are not technical friends.