"Another year of graduation", see a batch of students left the ivory tower of Life, embarked on their respective jobs; think of oneself also once spirited, complacent, don't sigh thousand ... This article is to work 6 years of experience precipitation or experience refining, hope to all software engineers to help, early realization of their life goals. This article is mainly about how software developers to improve their own software professional and technical aspects of the specific recommendations, the previous several aims to determine the direction of the big, is nonsense it.
1, share the first experience: "Education represents the past, ability to represent the present, learning power to represent the future." In fact, this is a result of a study from the field of foreign education. Believe that a few years of work, more than 10 years of friends to this truth some experience it. But I believe this is also important: "It's important to know that it's too late to regret life!" "So put on each one, let the newly graduated friends see ha soon!"
2, must determine their own direction of development, and for this purpose to develop a workable plan. Don't say anything, "I just graduated, and I don't know what I might do in the future." "Follow the feeling, and do it first." Because the idea is to imply that your behavior is idle and mediocre through your subconscious mind. Always make the technology and become an expert figure in the future? Go to the management direction, become a professional manager? First familiar with the industry and the field, in the future? Or first in the industry in the gangs, 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, the Software development team, technology is not omnipotent, but no technology is absolutely impossible! In the technical team, technology and character are equally important, of course, looks are more important, especially in the MM more team. In the software project team, the technical level is the important weight that people value and respect. Whether you are doing management, system analysis, design, coding, or product management, testing, documentation, implementation, maintenance, how much you have to have a technical foundation. I ignorant, I really didn't see one. A layman leads a software development team to successfully complete a software development project, even if one is not seen. I have seen a "highly educated cow" (non-technical) with a bunch of people to finish a project, project delivery of the next day, the project team members dropped a sentence "Can not bear again!" "Fragmented and separate. The success of the project is conceivable.
4, elaborate their own software development expertise Learning Plan, and pay attention to timely correction and adjustment (software development technology change is too fast). Remember: "If a software developer has not updated his knowledge in 1 or 2 years, he is no longer in the industry." "Don't tell yourself there's no time. The famous "38 principles" from the field of time management warns US: the other 8 hours how to use will determine the success of your life! I have been studying for more than 2 hours on average every 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, do not expect too much in the work to meet the "outer man", and take pains to teach you. For the 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 regretted, without an exception. Even more angrily, these books are hard to sell on the secondhand market stalls. "Having books does not mean possessing knowledge, possessing knowledge does not mean possessing skills, having skills does not mean owning a culture, and having a culture does not imply wisdom." "It is only the wisdom of the book that turns it into a true possession."
6. Do not confine yourself to the surface use of a technology, even if you only occasionally use secondary. "Nothing to do with anything" is the quality that engineers in any industry should not have. Develop Windows application, look at the Windows program design, load, execution principle, analyze the PE file format, try SDK development from scratch to develop a Windows application, VC + +, Delphi, Java,. NET development application, take the time to study MFC, VCL, Java EE,. NET their framework design or source code, in addition to using Java EE, JBoss, Spring, Hibernate and so on excellent open source products or frameworks, take time to see how the Masters are abstract, analysis, design and implementation of those similar problems of the general solution. Try to do this, your future work will be less likely to encounter some of the problems you do not know, confused, because, a lot of things you "knew it and know its why"!
7, programming in a language, but do not bind the thought for it. "Code Encyclopedia" said: "Go into a language programming, do not float on the surface." In the development of a language is far from enough, any programming language existence has its own reasons, so there is no language is "package cure all ills" the "panacea". The programming language is an example of abound's influence on the way and manner in which developers solve specific problems. My experience is: why not use the modular package of C, C51, and assembler when developing some key modules with the object-facing tool? With the traditional desktop development tools (currently mainly VC + +, Delphi) for system design, why can not reference from the Java community IOC, AOP design ideas, and even learn from such as spring, Hibernate, JBoss and other excellent open source framework? In the design and implementation of functions such as real-time communication and data acquisition, why can we not refer to the excellent system framework and patterns from real-time systems and embedded systems? Why does everything have to be done by individuals, teams in the course of developing language tradition or experience 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 code library, solve some kind of problem of the general system architecture, and even evolved into a framework. It is well known that for software developers, there is a significant difference between having and not having an experience of doing any task from scratch, while experienced people often solve problems by reorganizing their reusable modules and libraries (this conclusion should not be limited to software development, but can be extended to many aspects). This is not to say that all reusable things have to be done on their own, and that the results of other mature tests can be collected, collated, and integrated into their own knowledge base. However, it is best to achieve their own, so that there is no intellectual property rights, copyright and other issues, the key is that their own implementation can really grasp this knowledge point, have this skill.
9, both theory and practice, both inside and outside the double repair. The engineer's connotation is: to look at and analyze things and the world in the eyes of an engineer. A qualified software engineer is a person who truly understands the essence of software products and the essence of Software PRODUCT development (personal view, welcome discussion). Mastering the Software development language, the application Language tool solves the specific problem in the work, completes the goal task is the software engineer's main work, but from the software engineer This angle, this is the external thing, is not the important, the essential work. Learning and mastering Software Product development theory knowledge, software development methodology, and in the practice of understanding, application software Product analysis, design, realize the idea to solve the specific software product development problems, is the real software engineer's work. Standing in the mature theory and reliable methodology of high thinking, analysis, solve problems, and in concrete practice to verify and correct these ideas and methods, and finally form their own theoretical system and practical methodology.
10, the mentality has more open, the field of vision is more open. Don't hold on to your skills and achievements until they are obsolete and become rubbish before they come out in disgrace. Please publish your research results in a timely manner: develop products, creative designs or code, publish them for communication or use, and your results will evolve and sublimate. Think of the Windows system tools that you developed in 2000 years, 5, 6 years later, today, or that way, many of the Windows system tools that are popular today are later than their own, but they have evolved well and are used by so many users. Also, do not keep your skills and ideas to yourself, communicate and share them as much as possible, or impart to members of the development team. "After exchanging apples, everyone has only one apple, but after exchanging ideas, everyone has two kinds of ideas", which makes everyone understand, but how many people can really do it?
11, as far as possible to participate in the development of open source projects, or with friends to develop some of their own products, do not because there is no money to make and not do. The network is no longer just a "virtual world", there are many open-source projects, collaborative development projects, outsourcing projects, this is a great opportunity to learn beyond the work of knowledge, and to meet the wider popularity. Do not because the work is to do ERP, do not learn and understand embedded, real-time, communication, network and other aspects of technology, in turn, the same. If someone is looking for you to cooperate with the contract, you will not, and that is not ripe, you'll regret it.
12, the book to Time to hate less, do not confine their knowledge to technical aspects only. "For a person who has a certain foundation, he can master any knowledge within 6 months," says Prof Simon, a Nobel laureate in economics. "The educational psychology community has been named Simon's learning method to thank Professor Simon for his research." It can be seen that mastering a strange knowledge is far less difficult and abstruse than imagined. To absorb and extensively dabble. Strive to strengthen their own circle of influence, as far as possible to expand their attention circle. Financial, economic, tax, management and so on knowledge, have time to take a look, bide, prepare for a rainy day.
13, the summary and reflection of this article:
A: Don't be a technical master unless you have a goal. Although this article is about improving the software development knowledge of the proposal, do the technical master is I always disagree. You can improve your expertise, 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 of problems, to solve the ideological height of the problem. Many 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 professional knowledge, enrich their knowledge system, improve their overall quality, especially those who are not the goal of technical friends.
Copyright NOTICE: This article for Bo Master http://www.zuiniusn.com original article, without Bo Master permission not reproduced.
A 6-year summary of a software engineer