A 6-year summary by a software engineer

Source: Internet
Author: User
Tags knowledge base

"When I graduated in another year", I saw a batch of students leaving the Ivory Tower of my life and taking on their respective jobs. I thought I was so angry that I was full of ambition, and I felt deeply touched ...... This article is my 6-year experience accumulation or experience refining. I hope to help all software engineers and achieve their life goals as soon as possible. This article is mainly aboutSpecific suggestions on how software developers can improve their software expertiseThe previous points aim to determine the major direction.

I would like to share this document with the development team that has devoted you three years of youth and passion. There are also team members: PPL, yt, YK, tyf, lgl, chlorophyll, cdy, CB, DPD.

1. Share the first experience:"Education represents the past, ability represents the present, and learning ability represents the future."In fact, this is a research result from the field of education outside China. I believe that my friends who have worked for several or more years have some experience with this principle. But I believe this is also very important: "The important truth is that it is too late to regret it for a lifetime !" So put it in each article, so that those who just graduated can see it early!

[Experience]: After my internship, I discovered that my education is only a stepping stone and proves the potential of a person. I have won awards and honors in my university, proving that I have worked hard and studied hard. After work, this is the past. During college, there are several important points. For example, when you are doing digital models, you can learn to typeset and find information, I think it is still the way of thinking that I exercise when I am working on ACM. I think it is still a good learning experience. At least I can write an article in English. You can understand the meaning and the feelings of the author, as for your oral and listening skills, you may have to face-to-face communication with people outside of China in the future, or practice well. If you are in China, it doesn't matter. During college, I still need to get in touch with many things, such as Linux, arm, MySQL, Python, Perl, and Android. Do not say that I am in the software engineering or network direction, I don't need to know about these terms. I personally think that we still need to engage in multiple aspects, even if not your professional knowledge, broaden your horizons, focus more on the development of the industry, and various terms.

2. Be sure to determine your own development direction and develop feasible plans for this purpose. Don't say anything. "I just graduated and don't know what I may do in the future ?", "Follow the feeling and do it first ". This is because your subconscious will imply that your behavior is idle and idle. I have been working on technology and will become an expert person in the future? Become a professional manager in the management direction? Are you familiar with the industry and fields, and be self-reliant in the future? Or is it possible to mix in the industry first? This is very important. It will determine that you have done the right thing in the past few years and ten years !".

[Experience]: Think about it yourself. If you select it, you will not regret it. Because you have chosen it, you must be responsible for it!

3. In the software development team,Technology is not omnipotent, but it is absolutely impossible to have no technology.! In technical teams, technology and character are equally important. Of course, appearance is also important, especially in teams with more mm. In the software project team, the technical level is an important factor to be valued and respected. You must have a technical foundation for management, system analysis, design, coding, product management, testing, documentation, implementation, and maintenance. I am ignorant. I have never seen a layman lead a software development team to successfully complete software development projects. I have seen a "highly educated Ox"
(Non-technical) when a bunch of people have finished a project, the next day after the project was delivered, the project team members threw a sentence, "I can't stand it anymore !" Split and run different things. Everyone can imagine the "success" of that project.

4. Develop a learning plan for your software development expertise in detail, and pay attention to timely correction and adjustment (software development technology is becoming too fast ). Remember:"If a software developer has not updated his or her knowledge within one or two years, he is no longer in this industry."Do not tell yourself that there is no time. The famous "principles" in the field of time management tell us that the use of the other eight hours will determine the success or failure of your life! Since I graduated, my actual learning time has exceeded 2 hours per day on average.

[Experience]: Learning Ability represents the future, and there is no end to learning.

5. Books are the ladder of human progress, especially for software developers. Books are the most effective way to learn knowledge. Don't count too much on your work to meet the "world-class" and don't bother teaching you. My personal experience in buying books is: Never buy books from other Chinese people! Those books I bought ,! 00% all regrets, and no such exception exists. Even more angry, these books are hard to be sold on the stalls in the second-hand market. "Having books doesn't mean having knowledge, having knowledge doesn't mean having skills, having skills doesn't mean having culture, and having culture doesn't mean having wisdom ." Only the wisdom of books can be truly possessed.

[Experience]: I personally feel that some embedded books in China are basically translated from datasheet. It is better to read datasheet directly. Note taking is a good habit.

6. Do not limit yourself to the superficial use of a technology, even if you only use it once or twice. "Nothing should be done" is what engineers in any industry should not possess. Develop a Windows application program. Let's take a look at the design, loading, and execution principles of the Windows program, analyze the PE file format, and try to develop a Windows application from scratch using the SDK; use VC ++, Delphi, Java ,. NET development applications, take the time to study MFC, VCL, J2EE ,.. NET Framework Design or source code. Besides using J2EE and JBoss
Spring, hibernate, and other excellent open-source products or frameworks. Let's take a look at how masters abstract, analyze, design, and implement general solutions for similar problems. If you try to do this, you will encounter a few problems that make you confused in your future work, because many things you "know and know why "!

[Experience]: Find the essence of everything. You know how complicated a printf function is, how the main function is called, how the computer starts to see how the desktop is executed, and I didn't care about it once, I know how to use it. My colleague told me that I am a producer and a software developer, not a user, so I still need to know how it works.

7. Programming in a language, but do not restrain your thoughts. In "code Daquan", "go deep into a language programming and do not float at the surface ". In-depth development of a language is far from enough. Any programming language has its own reasons. Therefore, no language is the "panacea" for "treating all diseases ". Examples of how programming languages affect and constrain how developers solve specific problems. My experience is: Why can't I use the modular encapsulation methods of C, C51, and assembly when developing some key modules using object tools? Why can't I refer
The IOC and AOP design ideas of the Java Community, and even draw on excellent open-source frameworks such as spring, hibernate, and JBoss? When designing and implementing functions similar to real-time communication and data collection, why can't we reference an excellent system framework and mode from real-time systems and embedded systems? Why does everything have to be solved with the tradition or experience of individuals and teams in the development language ??? "The Stone of his mountains can attack the Jade".

[Experience]: I have never heard of the IOC and AOP design ideas mentioned. There are still a lot of things to learn, which are gradual and steadfast. I still need to have more contact. T-shaped development, above the horizontal, has not yet reached home...

8,Form the habit of summarization and reflectionAnd consciously extract the results of daily work to form their own personal source code library, a general system architecture for solving certain types of problems, and even evolve into a framework. As we all know, there is a notable difference between having experience and having experience for software developers: inexperienced people start from scratch when completing any task, experienced users often solve the problem by reorganizing their Reusable Modules and class libraries (in fact, this conclusion should not be confined to the software development field, but can be extended to many aspects ). This does not mean that all reusable east and west regions must be implemented by themselves. Other people's mature testing results can also be collected, organized, and integrated into their own knowledge bases. However, it is best to implement it by yourself so that there is no intellectual property rights.
And copyright, the key is to be able to grasp this knowledge point and possess this skill after implementation.

[Tips]: Summarize and reflect and build your own knowledge base.

9,Both theory and practice, both internal and external.Engineers observe and analyze things and the world from the engineer's perspective. A qualified software engineer is a person who truly understands the nature of software products and the essence of software product R & D ideas (personal views, welcome to discuss ). Master the software development language and application language tools to solve specific problems

Related Article

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.