-Some ideas for beginners
Author: Lin Xuanwu, all rights reserved, please bring the author's name.
This article is suitable for readers: fresh graduates, people who just joined a software company and intend to develop in the software industry.
First, let's take a look at what happens when you first enter a software company:
1. You may often find that after writing a piece of code, there are a lot of mistakes when compiling the program (reason: unfamiliar grammar).
Don't worry, this is something that every programmer must go through. At this time, you need more patience and care.
It is very important to read and correct each line of code carefully, which can cultivate your ability to understand the code, so read the program often, and don't wait until the program runs to know the result of your program.
-How to avoid it: Before writing code, carefully study the grammar of computer language, such as key points, easy mistakes, easy forgetting, etc. At the same time, you should write your own test code and try not to copy other people's code examples. Even if you copy, try not to copy every line verbatim during the learning stage. Instead, write a different example for the code example.
For example, when learning java knowledge, you'd better set up a project and write all the codes into this project for comparative analysis and learning.
2. You may often find that after writing a piece of code, it passed the compilation, but there were many logical errors at runtime. (Cause: misunderstanding or logical thinking error)
——
-improve logical thinking and understanding.
3. Get a requirement but don't know where to start (don't know much about the system)
A small mistake often takes a long time, and I don't know where to look and I can't find the result.
5. What is often committed is that there is something in the East and nothing in the West (incomplete consideration).
6. Sometimes the realization of a special function module takes a long time to find out the result (the information for future reference is incomplete).
7. Sometimes do you want the project manager to ask you to be the host, and you do something completely unnecessary? (communication is not timely)
Sometimes in order to finish a task ahead of time, I work overtime until late at night, but tomorrow is inefficient, so I might as well not work overtime (pay attention to rest).
9. Sometimes I feel that I have tested many times and can guarantee that I will not make mistakes, but after the test, the tester made many mistakes (not careful enough or there is something wrong with the test method).
10. Sometimes, in order to avoid mistakes, it often takes more than twice as long to write code for testing (the method is wrong).
1 1. Sometimes a piece of code is written to the quality manager and rewritten because the code is not standardized? (The code is not standardized enough)
In order to write a good code (including fine code, satisfying requirements, good robustness and short total time), what should be done? Is there any way?
The answer is yes! !
It can be summarized as two key points: one is to develop good programming habits, and the other is to improve your knowledge according to your own work.
A. Good programming habits
1. Before writing a program, you can make a draft in your mind, preferably on paper: the purpose is to consider the implementation of the program as a whole.
If the company adopts modeling methods, it is better to have modeling tools (rose, visio).
Pay attention to rest, don't waste rest time. Spending your own time will not only lead to code quality problems due to inattention, but also logical errors.
3. Be good at collecting relevant career development information so as to solve problems faster and better in the future. Advocate the company to provide tools for internal knowledge exchange (such as knowledge forum and internal instant chat); Advocate the sharing of technical data within the company and improve the ability to solve problems.
4. To improve the overall grasp of the written module, it is best to design it in detail before release.
5. Learn to communicate with others, such as non-engineers, and learn different communication methods to improve communication efficiency.
2. Different goals and different knowledge focus
Goal: Programmers
Responsibilities: Carry out related development according to detailed design documents or according to the design of senior programmers.
1. Learn to read relevant requirements documents and detailed design documents.
Note: You must grasp the key points, key points and related omissions by reading these documents.
2. If companies will use UML to communicate with each other, then you must have a deep understanding of the relevant knowledge of UML, and be careful not to try to write code without any knowledge of UML diagrams, which will make terrible mistakes.
3. Learn the basic knowledge of the corresponding computer language, such as the grammar, key points, error-prone points of the program, how to deal with the corresponding errors, and how to write the correct program with stronger keys.
4. If you use the contents of the database, try to learn the relevant sql contents in the database principle on the premise of learning sql. Of course, you can also join to improve your query ability.
5. If you use object-oriented language, you'd better learn some related design patterns, which can increase the expansibility and maintainability of the code, and understand the design principle between modules in detailed design, which can also improve the correctness of module content writing.
6. You must learn the general coding standard of the company.
7. It is best to learn how to conduct unit tests. You must be familiar with the relevant unit testing tools.
8. It is necessary to constantly sum up relevant knowledge, and at the same time, it is necessary to sort out and learn relevant materials. In the learned materials, you can find the answer to the question more quickly when you encounter the question.
9. In development, you must record the common mistakes and solutions, which will play a great role in avoiding mistakes in the future.
10. When writing code, you must keep the code written above in mind, so as to form a habit and improve the speed of the code.
1 1. When operating the database, try to use * * * connections, use less, and reduce the number of connections.
(b) Target: Senior Programmers
Responsibilities: Design system-related modules in detail for requirements documents, and be responsible for supporting and guiding programmers and writing relevant core modules.
Therefore, we should not only learn the knowledge that relevant programmers want, but also learn more difficult knowledge.
1. Programmers' knowledge, such as design patterns, you must not simply understand, but also apply design patterns to design the corresponding modules in detail.
2. Learn the tools related to detail design, so that you can better express your design.
3. In order to improve the efficiency of the system, it will be applied to
A. How to construct the table structure of the database to make the application query sql faster? At this time, it is necessary to seriously study the principle of the same database. Never think that the higher the database paradigm, the better the efficiency of the system. Sometimes proper table redundancy can greatly improve the query efficiency of the system. At the same time, proper indexes, views and stored procedures are also one of the ways to improve the efficiency of system query.
B. Learn multithreading programming, but don't think that the more threads, the faster it will run. Generally, when the number of threads exceeds a certain number, the running speed of the system will slow down. In order to apply multithreading well, the operating system book also needs synchronization and knowledge of related processes and threads.
C. A programmed algorithm is much more difficult than solving the same complicated mathematical problems, so we should learn the relevant mathematical knowledge (such as linear algebra, discrete mathematics, probability theory and mathematical statistics). It is necessary to deepen the calculation method and data structure so that mathematical problems can be solved by computer.
4. In order to make the system design more scalable and stable, design patterns and software engineering are essential. Therefore, design patterns must be used in pattern-level design.
5. If the company uses Rose (UML) to design, your understanding of UML must be very accurate. At the same time, you should write more notes about the concept of UML and the meaning of the corresponding use case diagram, type diagram, object diagram and collaboration diagram, and cooperate with the programs in the group to deepen your understanding of your own design.
(3) Target: System Analyst
Responsibilities: Do a good job in the relationship with customers, at the same time, correctly understand the needs of customers, choose appropriate development technology, communicate with customers and learn to convince each other.
1. Learn to communicate with customers: correctly understand the needs of customers and ensure smooth communication between customers.
2. What we have learned should be described correctly with a pen and conveyed to others well. At this time, you should learn to use software modeling tools such as ROSE. And powerdesign. And the related knowledge of UML, data flow chart and related content.
3. Not only should we fully understand the needs of customers, but also have a good understanding of possible changes in the future.
4. After fully understanding the customer's needs, we should choose appropriate related technologies for development:
At this time, we should learn all kinds of knowledge.
A. Choose the database first: the advantages and disadvantages of DB2, Infomix, Oracle, SQL Server and MySQL, from which you can choose the most suitable database and the reasons.
B. Design a database: Have a solid knowledge of database theory (database principle, database system design) and relevant database design experience, and try to analyze the past database design and analyze the benefits of designing a database in this way. At this time, tools such as powerdesign can be used.
C. write requirements description documents and outline design documents. At the same time, learn and analyze the relevant knowledge of the content required by the relevant demand description documents, such as the calculation method of personnel working hours. Usually, project will be used to analyze the contents of related projects.
D. select the appropriate programming language and related architecture. Generally speaking, mainstream architecture is the corresponding advantage of J2EE and. Net and its combination, such as using soap xml for related combination, or using java-com bridge to call related functions. And the advantages and disadvantages of related languages between them.
E. The selection should be based on the influence of B/S and C/S structure on the developed network.
5. Learn to convince each other. After all, not all customers are software experts, and their choices are sometimes not necessarily correct. Therefore, learning to convince the other party is an essential ability for system analysts.
3. Training methods:
1. Action plan:
(1 Set your future study goals.
A. What kind of person will you be in the future (mainly working role, such as programmer, senior programmer, system analyst).
B. What kind of person do you want to be in the near future (what are your job responsibilities now, if you only write code, you are a programmer, etc. )
C. knowledge necessary to complete the recent work (such as java programmers, learning the basic knowledge of java, etc.). ), key knowledge (such as key knowledge to be used in java, object-oriented, etc. ), as well as error-prone knowledge (compared with existing knowledge).
(2) After setting the learning goal, we should set the learning time and learning route according to the goal. And record it intuitively for future reference at any time.
(3) Always take some time to carefully check the completion of the plan, if the contents of the plan are not completed on time. Analyze the reasons and try to catch up with the contents of the plan. If you think the plan is wrong, you should carefully summarize the reasons for the failure of the plan, which will be of great help to your future.
Note: Don't be too optimistic about the arrangement of the plan. Try to take into account the various situations in the implementation, and at the same time arrange some buffer time appropriately, so that you can really act according to the plan, thus improving your confidence in acting according to the plan, and at the same time effectively avoiding things that become meaningless in the middle of the plan.
2. Cultivate your ability and learn knowledge according to your job role.
Key competencies:
(1. Memory ability: Learn to clearly remember the code you wrote and the modified code. We should improve efficiency.
(2) Logical thinking ability: Look at other people's complex logic codes and analyze the operations of complex logic.
(3) Global ability: Don't make mistakes in the East and in the West. (Building software is very important)
(4) Learning ability: Not every project is familiar to you, nor do you know all the knowledge in every project. Mastering the latest technology and the most useful knowledge is the most critical. To learn and improve your ability, this thing will always be good for you.
(5) communication skills; Learn humor, tell stories, make friends and learn manners.
(6) Self-control ability: If a person can't control himself, he won't achieve much in the future. Even if he has great development opportunities, he is easy to be used because he has no self-control ability, or he knows how to do it, but he just can't control his own desires. He often makes irreparable mistakes.
4. Example: the knowledge structure and learning process of java programmers;
(a) Learning the knowledge needed for related work
1.java language foundation (recommended: Java programming ideas)
Key:
(1.java object-oriented and corresponding program implementation.
(2) Java multithreading
(3) Java network socket
(4) Application program interface
2. Learn to use intelligent integrated development tools such as jbuilder and eclipse, and write your own code similar to routines according to the contents in the materials, but be careful not to copy directly, and you must write it yourself. At the same time, it is best to write it as a project for comparison.
3. If you use b/s structure, you should learn the knowledge of jsp (recommended: JSP 2.0 technical manual).
Key:
(1. Interface processing:
A. html- Hypertext Markup Language: used to display hypertext links, tables, various logos and other pages.
B. CSS- cascading style sheets: a set of formats that control the appearance of text. It is used to beautify HTML pages.
C. JavaScript-a scripting language embedded in the HTML page browser: allows the page to dynamically change at the client according to the user's operation or preset settings without sending it back to the server. For example, the correctness of form input is verified by the client.
(2) JSP elements: such as java code writing, corresponding flags -JSP: include, JSP: usebean, JSP: set property,
Jsp: Several pairs. Jsps such as jsp:getProperty.
(3) JavaBean and its call in jsp and related applications.
(4) Other technologies:
A. how to operate the database-use jdbc (you may need to supplement some database knowledge, such as oracle, sql server,
Including how to write efficient query sql, stored procedures and so on. ),
B. how to send e-mail-using javaMail,
C. How to learn how to use to upload and download files? If you manipulate files,
D. how to operate XML-use jdom and jaxp (at this time, you need to learn XML syntax such as dtd. )
E. How to call the method remotely-using rmi
F. how to use jms to realize message service
Some companies will use J2EE architecture, such as EJB, as business logic.
(1.EJB should distinguish between
(2.struts MVC
(3) Hibernate operation database
6. You'd better learn UML.
Learn to be a model with Ross
Five suggestions:
1. Don't feel poor, but understand that everyone has come one step at a time. (We should have confidence)
Tell yourself: Bill Gates, like us, was born a slap in the face.
Learn more and practice more, and there will be a way out.
Don't think that learning more will make you stronger. There are many experts in the world. Ask yourself, how many lines of code can you write per hour, and how many mistakes are there in writing code once? Write once without making mistakes, and you can write 1000 codes in an hour. That's the real expert.
Don't think that you will fall behind others if you don't have any projects to do. I have participated in many projects, but only a small role in them. If we can all write some open source projects in our spare time, or develop and design some useful open source projects ourselves, our level and ability will come up soon.
4. Don't think it's great that you have done many projects. Can you say that in your project, you can understand why the whole project is designed like this and why it is developed like this? I believe that the overwhelming majority of the answers are no. It's better to know more about the projects we have done, why they have done this and why they have developed so much, and look at their project documents more, so that we can learn a lot. Wouldn't it be better to apply their experience to projects you may take over in the future?
Don't think that just because you have great learning ability, you can finish reading a book quickly and master the content quickly?
This article should be helpful!