Programmer: do some add, delete, change and check the small module;

Intermediate programmer: do more complex logic module;

Senior programmer: do core modules;

Project Manager: Overall architecture of the system;

Department Manager: Multi-project management;

President: Multi-department and enterprise development plans.

Second, if you just graduate, spend a few more years to accumulate experience, it is impossible to rely on a stunt to eat all over the world, do not expect Java to make more money or c++ or.net to make more money. Too early. Accumulate experience mainly. Accumulate experience in design, architecture, testing, communication, management, emotional intelligence, etc. And then you make a decision based on what happens over the next n years. The ideal situation is one expert, many. There must be a master, but we should know that the so-called master is not only one, to their level, what are the same, look at learning ability and reasoning ability.

So, calm down first to gain experience.

I hope you can learn something from it.

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.

Fourth, the highest position is technical director (CTO) chief technical engineer, annual salary 20 to 60W, programmers can be divided into many, low-level programmer, write low-level code, intermediate software engineer, senior software engineer, project manager, implementation, architect, programmer to architect generally need 8 to 10 years of experience. Ordinary people every step on the corresponding certificate, but the technology is tough to avoid.

The job of a good programmer is not just to write code, his job is to tell computers the human mind, using language, to do what humans want them to do.

So, here’s the problem. Do you have a thought? Do you know what to make a computer do? Such as management, computing, statistics, animation… If you’re 35 and still coding under the guidance of someone else (software blue-collar), you’re probably not as physically and mentally competent as younger people.

So, career planning. When I was young, I was proficient in programming language, then I undertook and organized a complete project independently, and then I was able to lead a team to complete the project. In this process, you need to communicate internally, communicate with users, make project plans and supervise the completion.

Six intern – the underlying code workers — — — — — — the underlying programmer programmers — — — — — – junior engineers — — — — — – intermediate engineer — — — — — senior engineer, project manager, software designer — — — — — the software architect – (if possible) – the owner of a business do

A philosopher once said, “Every step you take is your life.” The road of life is long because it is the journey of your life; The road of life is short, because every day you live is your life. Everyone is planning their life, everyone is realizing their dreams, and I will pull anchor and sail on the planned course.

First, know yourself

1. Personal Analysis:

Personally, I think MY personality has two sides. I like to read books in a quiet environment and chat with friends to share our happiness sometimes. Also like playing badminton, running, travel, enjoy the beauty of nature, cultivate their own sentiment. In addition, I also have the spirit of teamwork and cooperation ability, relatively strong hands-on and practical ability.

No one is perfect, I do things, sometimes more impatient, but I will in the future work and study to improve their own shortcomings.

2. Analysis of career conditions

1. Social environment analysis:

In general, our country is facing a good social environment, social stability, ZZ stability, especially the current rapid economic development, legal system construction continues to improve, high-tech field by leaps and bounds. Therefore, in such a good social environment, it is particularly necessary to develop a reasonable life career planning.

2. Analysis of occupational environment:

IT industry develops gradually with the development of electronic information industry, and gets perfect day by day.

The steady growth of the IT industry is bound to bring about the growth of the demand for software engineers. At present, with the technological integration of IT products, the huge market demand and the lack of professional talents, so the software industry is relatively optimistic. But the software industry also needs compound talents, software engineers need to master more programming languages.

3. Career objective positioning

1. Determination of career goals:

1.1 Short-term goals (1-2 years) :

Pay attention to the basic knowledge of Java, learn more project development experience, understand project development business knowledge, and master the complex query and management operation of SQL statement of DB2 database, and in-depth study of struts, Hibernate, spring related operations.

1.2 Medium-term objectives (3-5 years) :

Knowledge and familiarity with at least 2 programming languages, e.g. Net, C++, PHP; And learn to master Oracle, MS-SQL database management operations; Master the basic skills of each stage of software development, such as market analysis, feasibility analysis, requirements analysis, structural design, detailed design, software testing, etc.

1.3 Long-term Goals (5-10 years) :

Learn management related knowledge, transfer from technical to management.

2. Success criteria:

As long as they do their best, ability to play, from practice to improve and self-knowledge, is the biggest harvest.

Iv. Evaluation and adjustment

1. Time for evaluation

In general, every three months to do a summary of their own work, every six months to re-evaluate the career plan and adjust accordingly.

2. Assessment content and adjustment principle

No matter how the goals are adjusted, there must be clear work plans and objectives for each period. Content evaluation mainly focuses on the evaluation and adjustment of implementation strategies. With the development and changes of the society and industry, we should adjust our goal realization strategies timely at any time to achieve the simplest planning and the fastest improvement.

V. Concluding remarks

The way ahead is so long without ending, yet high and low I’ll search with my will unbending. No rainbow without rain. We should always keep a clear mind and strive for our goals at any time. In fact, everyone has a picture in the heart, describing the ideal, belief, pursuit, ambition; There is a forest in everyone’s heart, carrying the sweet, dark fear of hesitation. A person, if you want to succeed, must take out the courage, efforts, hard work, struggle, success. Opportunity does not sympathize with tears of sadness, do not believe in decadent despair, only look forward to love struggle, always ready.

I would like to recommend a Java architecture group: 725633148, which will share some videos recorded by senior architects: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization, distributed architecture and so on to become the architect of the necessary knowledge system. Can also receive free learning resources, currently benefited a lot!