Programmers should understand 13 principles as early as possible (must read for computer majors!)

1. Be sure to determine your own development direction and formulate a feasible plan for this purpose. Don't say anything like, "I just graduated and I still don't know what I might do in the future?", "Go with your feelings and try it out first." Because such a view will imply through your subconscious that your behavior is idle and mediocre. Keep doing technology and become an expert in the future? Going in the direction of management and becoming a professional manager? Familiarize yourself with the industry and field first, and then start your own business in the future? Or should I just hang out in the industry first and switch to something else in a few years? This is very important, it will determine what you do in the next few years or ten years to "do the right thing!"
2. Share the first experience: "Academic qualifications represent the past, ability represents the present, and learning ability represents the future." In fact, this is a research result from the field of foreign education. I believe friends who have worked for several or more than ten years have some experience with this principle. But I believe this point is also very important: "Understanding important truths too late will regret it for life!" So I put it in every article so that friends who have just graduated can see it early!

3. Develop your own software development professional knowledge learning plan in detail, and pay attention to timely revisions and adjustments (software development technology changes too fast). Please remember: "If a software developer has not updated his knowledge in 1 or 2 years, then he no longer belongs to this industry." Don't tell yourself that you don't have time. The famous "38 Principle" from the field of time management warns us: How you use the other 8 hours will determine the success or failure of your life! Since I graduated, I have spent an average of more than 2 hours studying every day.

4. Books are the ladder of human progress, especially for software developers. Books are the most effective way to learn knowledge. Don't expect too much that you will meet "experts" at work who will take the trouble to teach you. When it comes to spending money to buy books, my personal experience is: Never buy books published by those people in China! (I don’t dare to agree with this. I think the author is a bit extreme!) I regretted 00% of the books I bought from those guys, without exception. What's even more annoying is that these books are difficult to sell at second-hand market stalls. "Owning books does not mean possessing knowledge; possessing knowledge does not mean possessing skills; possessing skills does not mean possessing culture; possessing culture does not mean possessing wisdom." Only by turning books into your own wisdom can you truly own it.

5. Don’t limit yourself to the superficial use of a certain technology, even if you only use it once or twice occasionally. "Being careful about everything" is a quality that engineers in any industry should not possess. Develop Windows applications, look at the design, loading, and execution principles of Windows programs, analyze the PE file format, and try to use SDK development to develop a Windows application from scratch; use VC++, Delphi, Java, and .Net to develop applications and spend time Study the framework design or source code of MFC, VCL, J2EE, .Net; in addition to using excellent open source products or frameworks such as J2EE, JBoss, Spring, Hibernate, etc., take the time to see how the masters abstract, analyze, design and implement those General solutions to similar problems. Try to do this, and you will encounter fewer problems that make you unclear and confused in your future work, because you "know how it is and why" many things!

6. Program in a language, but don’t let it limit your thinking. "Code Encyclopedia" says: "Go deep into programming in a language and don't superficially read it." In-depth development of a language is far from enough. The existence of any programming language has its own reasons, so no language is a "panacea" that can "cure all diseases". There are numerous examples of the impact and constraints that programming languages ​​have on developers’ ideas and ways of solving specific problems. My experience is: when using object-oriented tools to develop certain key modules, why can't we learn from the modular packaging methods of C, C51, and assembly? When using traditional desktop development tools (currently mainly VC++ and Delphi) to design the system structure, why can't we refer to the IoC and AOP design ideas from the Java community, or even learn from excellent open source frameworks such as Spring, Hibernate, JBoss, etc.? When designing and implementing functions such as real-time communication and data collection, why can't we use excellent system frameworks and patterns from real-time systems and embedded systems? Why must everything be solved based on the tradition or experience of individuals and teams in natural development languages? ? ? "Stones from other hills, can learn".

7. Develop the habit of summarizing and reflecting, and consciously refine the results of daily work to form your 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, for software developers, a significant difference between experienced and inexperienced people is that inexperienced people start from scratch when completing any task, while experienced people often solve problems by reorganizing their own reusable modules and class libraries. (In fact, this conclusion should not be limited to the field of software development and can be extended to many aspects). This does not mean that all reusable things must be implemented by yourself. Others’ mature and tested results can also be collected, organized, and integrated into your own knowledge base. However, it is best to implement it yourself, so that there are no problems with intellectual property rights, copyrights, etc. The key is to be able to truly master this knowledge point and possess this skill after implementing it yourself.

8. Pay equal attention to theory and practice, and cultivate both internal and external aspects. The connotation of an engineer is: observing and analyzing things and the world from an engineer's perspective. A qualified software engineer is a person who truly understands the essence of software products and the essence of software product development (personal opinions, welcome to discuss). Mastering software development languages, applying language tools to solve specific problems at work, and completing target tasks are the main tasks of software engineers. However, from the perspective of software engineers, these are only external things, not important and essential work. It is the job of a real software engineer to learn and master the theoretical knowledge of software product development and software development methodologies, and to understand and apply software product analysis, design, and implementation ideas in practice to solve specific software product development problems. Think, analyze, and solve problems from the perspective of mature theories and reliable methodologies, verify and revise these ideas and methods in specific practice, and ultimately form your own theoretical system and practical methodology.

9. The more open your mind is, the wider your horizons will be. Don't hold on to your own technologies and achievements until they are outdated and become garbage, and then take them out and look embarrassed. Please publish your research results in a timely manner: developed products, creative designs or codes, and publish them for everyone to communicate or use. Only then will your results have the opportunity to evolve and sublimate. Think about the Windows system tools I developed in 2000. Today, 5 or 6 years later, they are still the same. Many Windows system tools that are popular today are later than my own, but they have evolved very well and are used by so many users. . Moreover, do not keep your own technologies and ideas secret, communicate and share them with others as much as possible, or teach them to members of the development team. "After exchanging apples with others, everyone still only has one apple; but after exchanging thoughts, everyone has two thoughts." Everyone knows the truth, but how many people can actually do it?

10. Try to participate in the development of open source projects, or jointly develop some of your own products with friends. Don't stop doing it just because you don't have money to make. The Internet is no longer just a "virtual world". There are many open source projects, cooperative development projects, and outsourcing projects on the Internet. These are excellent opportunities to gain knowledge outside of work, and to get to know a wider range of people. Don't stop learning and understanding embedded, real-time, communications, network and other technologies just because your job is ERP, and vice versa. If when someone else comes to you with a contract to cooperate, but you don't know how to do this, and you are not familiar with that, you will regret it.

11. When you use the book, you will regret it less. Don't limit your knowledge to technical aspects only. **The research results of Professor Simon, winner of the Economics Prize, show: "For a person with a certain foundation, as long as he is really willing to work hard, he can master any subject within 6 months." The educational psychology community would like to thank Professor Simon’s research results, hence the name Simon Learning Method. It can be seen that mastering an unfamiliar knowledge is far less difficult and profound than imagined. Learn from many sources and explore extensively. Strive to consolidate your circle of influence and expand your circle of concern as much as possible. Take the time to read about finance, economics, taxation, management, etc. when you have time, hide your capabilities, bide your time, and prepare for a rainy day.

12. Summary and reflection of this article:

A: Don’t become a technical master unless that is your goal. Although this article is about suggestions for improving software development knowledge, I have always disagreed with being a technical master. You can improve your professional knowledge, but only if you are competent at the job.

B: Improving software knowledge and technology is only the surface of the problem. The essence is to improve one's thinking level in understanding, analyzing and solving problems. Many methods and principles of software expertise can be easily extended and applied to other aspects of life.

C: On the basis of being qualified for the job, immediately dabble in professional knowledge in other fields, enrich your knowledge system, and improve your overall quality, especially those friends whose goals are not technical.

13. In a software development team, technology is not everything, but nothing is impossible without technology! In a technical team, technology and character are equally important. Of course, appearance is also more important, especially in a team with many girls. In a software project team, technical level is an important weight to be valued and respected. Whether you are doing management, system analysis, design, coding, or product management, testing, documentation, implementation, and maintenance, you must have a technical foundation. Even if I am ignorant, I have never seen a layman lead a software development team to successfully complete a software development project, not even one. I once saw a "highly educated person" (non-technical) lead a group of people to complete a project. On the second day of project delivery, the project team members said "I can't take it anymore!" and the project team fell apart. Go their separate ways. You can all imagine the "success" of that project.

So if you want to be a leader in a team, you must first convince others with your skills. Only when you are strong will the people below you recognize you. Then if you convince others with your ethics, everyone will follow you. . If you are still convincing people with skills and are more interested in network security and want to systematically learn this knowledge, you can take a look at the complete set of learning routes and corresponding video tutorials I have prepared for you, with zero basic knowledge. No problem at all with progression.

If you need it, you can click on the link [282G] A complete learning package from zero basic to advanced network security & hacking technology, free to share! Get it for free!

Insert image description here

Insert image description here
Insert image description here
Insert image description here
Insert image description here

Due to the limited length of the article, those who need information can scan the QR code below to obtain it. If you have trouble scanning the code, you can also click on the link [ 282G] Network Security & Hacking Technology, a complete learning package from basic to advanced, free to share! Get it for free!
Insert image description here

Guess you like

Origin blog.csdn.net/text2207/article/details/133376422
Recommended