Six years as a software engineer
“It’s another year of graduation”, seeing groups of students leave the ivory tower of life and embark on their own jobs. Think of yourself once high – spirited, smug, do not feel sigh myriad…… This article is my own work 6 years of experience precipitation or experience refining, I hope to help all software engineers, as soon as possible to achieve their goals in life. This article is mainly about specific advice for software developers on how to improve their software expertise. The previous points are intended to set the big picture and are considered nonsense.
1, share the first lesson: “Education represents the past, ability represents the present, learning ability represents the future.” In fact, this is the result of a study from the field of education abroad. I believe that a few years of work, more than ten years of friends to this truth some experience it. But I believe this is also important: “The important thing to realize is that it’s too late and you’ll regret it forever!” So put in each one, let the friends who just graduated early see ha!
Be sure to decide where you want to go and make a workable plan to that end. Don’t say, “I just graduated from college. I don’t know what I’m going to do with my life.” “Follow your gut and do it first.” That’s because it tells your subconscious that you’re doing nothing and doing nothing. Always a tech guy, always an expert guy? Move into management, become a professional manager? First familiarize yourself with the industry and field, then start your own business? Or do you just hang out in the industry and move on to something else in a few years? This is very important. It will determine what you are going to do in the next few years, in the next decade, “what is the right thing to do!” .
Software development team, technology is not everything, but without technology is absolutely not! In a technical team, skill is as important as character, but looks are also important, especially in teams with more women. In a software project team, technical level is an important weight to be valued and respected. Whether you do management, system analysis, design, or coding, or product management, testing, documentation, implementation, or maintenance, you must have a technical foundation. Despite my lack of knowledge, I have never personally seen an outsider lead a software development team to a successful completion of a software development project, or even just one. I have seen a “highly educated person” (non-technical) lead a group of people through a project, the second day of the project delivery, the project team members threw down “CAN’t take it anymore!” Falling apart and going their separate ways. You can imagine the success of that project.
4. Make a detailed learning plan of software development professional knowledge, and pay attention to timely correction and adjustment (software development technology changes too fast). Remember: “If a software developer hasn’t updated his knowledge in a year or two, he’s no longer in the industry.” Don’t tell yourself you don’t have time. The famous “38” rule from the field of time management tells us that your success or failure in life depends on how you spend those other eight hours. Since graduation, I have spent an average of more than 2 hours a day studying.
Books are the ladder of human progress, especially for software developers. Books are the most effective way to learn knowledge. Don’t expect to meet “worldly experts” at work who will take the trouble to teach you. As for spending money on books, my personal experience is: don’t buy books from those people in China! I’ve bought books from guys I regret 100% of them, every single one of them. What’s more, these books are hard to sell on second-hand market stalls. “The possession of books is not the possession of knowledge; Knowledge does not mean skill; Having skills does not mean having culture; Culture is not wisdom.” Only by turning the book into your own wisdom can you really have it.
6. Don’t limit yourself to superficial use of a technology, even if you only use it once or twice. “Never get to the bottom of anything” is a quality that should not be possessed by engineers in any field. Development of Windows applications, see the Windows program design, loading, implementation principle, analysis of PE file format, try to use SDK development from scratch to develop a Windows application; Use VC++, Delphi, Java,.net application development, take the time to study MFC, VCL, J2EE,.net framework design or source code; In addition to working with J2EE, JBoss, Spring, Hibernate, and other good open source products or frameworks, take the time to see how gurus abstract, analyze, design, and implement common solutions to similar problems. Try doing this and you’ll have fewer confusing and confusing problems in your future work, because you “know what it is and why it is”!
Program in a language, but don’t let it limit your thinking. The “Code Book” says, “Get deep into a language and don’t write on the surface.” It is far from enough to go deep into the development of a language. Every programming language exists for its own reason, so no language is a “panacea”. Examples abound of how programming languages influence and constrain the way developers think about solving specific problems. My experience is: when developing some key modules with object facing tools, why not learn from the modular encapsulation of C, C51 and assembly? When using traditional desktop development tools (currently mainly VC++, Delphi) to design the system system structure, why can’t we refer to IoC and AOP design ideas from the Java community, and even learn from excellent open source frameworks like Spring, Hibernate, JBoss and so on? When designing and implementing functions such as real-time communication and data acquisition, why can’t we refer to the excellent system framework and mode from real-time system and embedded system? Why does everything have to be solved with the tradition or experience of an individual or team in a natural development language? As a Chinese saying goes, “Stones from other mountains can attack jade.”
8, develop the habit of summarizing and reflecting, and consciously refine the daily work results, to form their own personal source code base, to solve some kind of problem of the general system architecture, and even evolve into a framework. As is known to all, for software developers, with experienced a significant difference is that there is no experience to complete any task is to start from scratch, and experience is often by restructuring their own reusable module, the class library to solve the problem, this conclusion should not be limited in the field of software development, can be extended to many aspects). This is not to say that everything reusable has to be implemented by itself, and other people’s mature and tested results can be collected, collated, and integrated into their own knowledge base. However, it is best to achieve their own, so there are no intellectual property rights, copyright and other issues, the key is to truly master this knowledge point, with this skill.
Lay equal stress on theory and practice, and repair both inside and outside. The connotation of being an engineer is to observe and analyze things and the world with 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. Master software development language, application language tools to solve specific problems in the work, complete the target task is the main work of software engineers, but from the point of view of software engineers, this is only external things, not important, essential work. It is the work of a real software engineer to learn and master the theoretical knowledge and methodology of software product development, and to understand and apply the analysis, design and realization ideas of software products in practice to solve specific software product development problems. Standing on the height of mature theory and reliable methodology, I think, analyze and solve problems, and verify and revise these ideas and methods in concrete practice, and finally form my own theoretical system and practical methodology.
How open your mind is, how open your vision is. Don’t hold your own technology and achievements, wait until they have become obsolete garbage, just take out a disgrace. Publish your research — your product, your creative design, or your code — and share it with others so your work can evolve and evolve. Think about all the Windows tools I developed in 2000. Five or six years later, they are still the same. Many of the Windows tools that are popular today are newer, but have evolved well and are used by so many people. Also, don’t keep your skills and ideas to yourself; try to share them with others, or pass them on to members of the development team. “If you trade apples with people, you still have one apple per person; But after exchanging ideas, everyone has two thoughts. “Everyone knows that, but how many people can really do that?
11, try to participate in the development of open source projects, or with friends to develop some of their own products, do not do it because there is no money. The web is no longer just a “virtual world”. There are many open source projects, co-development projects, and outsourcing projects online, all of which are great opportunities to get knowledge outside of work and meet a wider audience. Just because your job is doing ERP, don’t stop you from learning and understanding embedded, real-time, communication, networking, and vice versa. If someone comes to you with a contract, and you don’t know how to do it, and you’re not used to it, you’ll regret it.
Books to time square hate less, don’t limit your knowledge to technical aspects only. Professor Simon, a Nobel Prize winner in economics, showed that a person with a certain foundation can master any subject in six months if he really works hard. In order to thank Professor Simon for his research results, the educational psychology community named it Simon learning method. Visible, master a strange knowledge is far from the imagination of so difficult, profound. Learn from various sources and read extensively. Try to consolidate their circle of influence, as far as possible to expand their circle of concern. Finance, economics, taxation, management, etc., take the time to look at them.
13. Summary and reflection of this paper:
A: Don’t be A technical master unless that’s your goal. Although this article is about improving your knowledge of software development, being a technical master is something I’ve always frowned upon. You can improve your professional knowledge, but not until you are competent for the job.
B: The improvement of software knowledge and technology is only the surface of the problem, the essence is to improve their own understanding of the problem, analysis of the problem, problem solving ideological height. Many of the methods and principles of software expertise can easily be extended and applied to other aspects of life.
C: On the basis of being competent for work, I should learn professional knowledge in other fields immediately to enrich my knowledge system and improve my comprehensive quality, especially those friends whose goal is not in the technical aspect.
— Science Online 2009-3-29 08:03