How to improve software development efficiency and write code efficiency
────────── ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
Author: Willy Lin E-mail: linxuanwu9@yahoo.com.cn QQ: 342569746 copyright all, reproduced please bring the name of the author
Adaptive to readers in this article: Students who have just graduated, and have just entering software companies to develop people in software industry
First let's take a look at the situation that is just entering the software company:
1. You may often find that after writing a piece of code, the compiler is a lot of errors (whose syntax is not familiar)
─ Don't worry, this is something that every programmer must experience, this time you need more patience and care.
Read and correct each line of code, this is very important, this can develop your understanding of code, so you have to read the program, don't wait until the program is running, you know the results of your program.
─ How to avoid: Before writing code, you must carefully learn the grammar of your computer language, such as key points, easy tolerant points, and make some for formo. At the same time, you must write your own test code, but try not to copy the code example of others. Even if you copy, try not to copy every line in the learning phase. The code should be written differently.
For example: When learning Java knowledge points, you should build a project to write all the code to this project in order to learn from the analysis.
2. You may often find that after you write a code, compile, but run it out of many logical errors. (Cause: Understanding mistakes or logically want to be wrong)
-
─ Improve logical thinking and understanding
3. Get a need but I don't know where I started (I don't know much about the system)
4. Often used a long time for a small mistake, I don't know from there, can't find the result.
5. The things that are often made are there in the east, but there is less West (considering nothing)
6. Sometimes I have checked the time for a special function module, but there is no results to come out (the information is not included)
7. Sometimes whether the project manager calls you to do it, have you made a completely unnecessary west? (Communication is not timely)
8. Sometimes in order to complete a certain task in advance, overtime to the middle of the night, but it is not as efficient tomorrow, it is better not to overtime (pay attention to rest)
9. Sometimes I have already considered a lot of time, it can be guaranteed that it will not be wrong, but there are many mistakes that have been tested by testers (not careful or testing methods)
10. Sometimes, in order to avoid errors, it is often more than twice as the time is more than twice the time, and it is incorrect.
11. Sometimes I write a piece of code to the quality management personnel, but because the code is not specified, it causes rewriting? (Code is not standardized)
In order to write code (including, there is no problem, the demand is in line with, the robustness is good, the total use is small), then how should we do it, there is no method.
The answer is yes! !
It can be summarized as two key points: First, develop good program habits, and the other is to improve their own knowledge content for their own work.
One. Good programming habits
1. Take a draft before writing programs can be in the heart, preferably on paper: purpose to consider the implementation of the program from the whole.
If the company uses modeling, there is a modeling tool (Rose, Visio) that is the best.
2. Pay attention to rest, don't waste your own rest time, use your own time not only written, but often there is a problem with the quality of the code, logic often errors 3. Be good at collecting information on related professional development so that you can solve the problem faster. Promote companies to provide internal knowledge, such as knowledge forums, interior chats); advocate shared libraries in the company's internal technical information, improve the ability to solve problems.
4. Improve the relevant global grasp of the written modules, it is best to prepare before the write program is designed.
5. To learn to communicate with others such as non-engineers, learn to communicate different ways, and improve communication efficiency.
two. Different objectives of different goals
(1) Objective: programmer
Responsibilities: According to the detailed design document, or based on the design of the advanced programmer.
1. To learn to see related requirements documents and detailed design documents.
Note: You have to grasp the key points, key points, and related vulnerable points by reading these documents.
2. If the company will use UML to communicate with each other, then you have to understand the relevant knowledge of UML, you must pay attention to the case of the UML map, you will write code, which will be very miserable.
3. Learn the basic knowledge of the corresponding computer language, such as the grammar, key points, error point, how to make a corresponding error, how to write the key to the program
4. If you use the content of the database, under the premise of learning SQL, try to learn the relevant SQL content in the database in principle, of course, in order to improve the ability of the query, you can increase a point.
5. If you use the best-oriented language-oriented language-oriented design pattern, you can increase the spread of code, and maintainability, etc., you can understand the design principles between modules in detail. This can also improve the module. The correctness of the content written.
6. You must learn the universal coding specifications within the company.
7. Learning how to do unit tests. You must be familiar with the associated unit test tool.
8. To summarize the relevant knowledge, you must need to organize and learn the relevant information. In the information you have learned, you can find the questions of the problem faster when you encounter problems.
9. In developing you must record, you will have a lot of effort to avoid you in the future.
10. When you write the code, you must write the code in your heart, so you can develop habits and increase the speed of your code.
11. Try to share Connection as much as possible for database operations, and use it to reduce the number of Connection
(2) Objective: Senior Programmer
Responsibilities: Detailed design of system-related modules for demand documents, and is responsible for the writing of programmers' support and guidance and related core modules
So not only learn about the knowledge of the relevant programmer, but also learn more difficult knowledge.
1. Programmer's knowledge, such as design patterns, you must understand it, you have to apply design patterns to perform detailed designs for the corresponding modules.
2. To learn more about the tools of the relevant detailed designs, this can better improve the expression of their own design.
3. In order to improve the operating efficiency of the system
a. How to build the table structure of the database allows the application to query SQL faster. At this time, you must carefully learn the same database principle. Don't think that the higher the system's output efficiency, sometimes appropriate table redundancy can greatly improve the system's query efficiency. At the same time Construction of an index, view, and stored procedures are also one of the efficiency of improving the query of the system on the database. b. Learn multi-thread programming, but don't use the speed of the thread, the faster the number of threads, the number of general threads exceeds a certain number, the system running speed will slow down. In order to apply a lot of threads, the operating system must also be essential for synchronous and related processes and threads.
c. A good algorithm for designing a program can be more difficult than solving a complicated mathematical question, so there is a difficult knowledge of learning mathematics (such as linear algebra, discrete mathematics, probability theory, Mathematical statistics). In addition, in-depth calculation, and data structures, let mathematics issues to solve it.
4. In order to make the system design more scalability, stability, design patterns and software projects can not be less. So you must use the design pattern for the design level design.
5. If the company is designed with Rose (UML), you must be very accurate for UML, and you have to fully UML concept and application examples between programs in the group. , The object map, the meaning of the collaboration map, write some comments to deepen everyone's understanding of your design.
(3) Target: System Analyst
Responsibilities: Do a good job in relations with customers, and at the same time need to be correctly understood, choose appropriate development technology, and do communication with customers, learn to convince each other.
1. Learn to communicate with our customers: To properly understand the customer's needs while ensuring smooth communication.
2. The need for understanding needs can be described correctly and can be better to give others very well. At this time, learn to model software such as ROSE and other software. Database modeling tools such as PowerDesign et al. And related UML, data flow charts and knowledge of related content.
3. Not only should we fully understand the needs of our customers, but also have a much better understanding of future possible changes to demand.
4. After comprehensive understanding of the customer's needs, choose the right related techniques for development,:
At this time, you should learn a variety of knowledge.
a. Choose a database: DB2, InfoMix, Oracle, SQL Server, MySQL advantages and disadvantages, you can choose the most suitable database and reasons.
b. Design Database: Together to solidly analyze the design of the past database design and analyze such a designed database design and analyze the designed database design and analyze the design database. It may be used to use PowerDesign.
c. Write requirements documentation and summary design documentation, and learn to analyze the relevant needs to explain the relevant needs of the contents of the document, such as the calculation method of personnel, usually use Project to analyze the contents of the relevant items.
d. Select the appropriate program language and related architectures, the general mainstream architecture is the corresponding advantages of J2EE and .NET and the combination thereof, such as the combination of SOAP XML, or by Java-COM bridge The function call. Excellent disadvantages of related languages
e. It is also necessary to select the relevant content of the network impact on the development of the B / S and C / S structure.
5. Learn to convince each other. After all, the customer is not a software expert, and their choice is sometimes not correct, so I learned to convince each other, it is the ability to system analyst must.
three. Method of training: 1. Plan to act:
(1 Set your future learning goals
a. What kind of person must be a future (mainly working role, such as programmer, advanced programmer, system analyst)
b. What kind of person you have to become in the near future (what is the current job responsibility, if you only write code is programmer, etc.)
c. To complete the recent work, you must have knowledge (such as Java programmer, learning Java basic knowledge, etc.), key knowledge (such as the knowledge you want to use in Java, object-oriented, etc.), error-oriented knowledge (Compared to the original existing knowledge
(2 After setting your learning goals, there must be targeted corresponding target settings to set the row and learning route. And intuitive records, so that you can check it later.
(3 often take a certain amount of time carefully check the completion of the plan, if there is no content on time. Analyze the reason, try to catch the plan to catch the plan, if the confirmation is planned, it is necessary to earnestly summarize the reason for the failure, for you The future has a lot of help.
Note: Don't consider the various situations in the implementation of the planned pressing, simultaneous pressing some buffering times, so that you can act in accordance with planned, and this can effectively avoid planning There is something that is meaningless.
2. Learning and knowledge against your work role for your own capabilities.
Key capability:
(1. Memory ability: To learn the clear code of the code and the changed code of the self-written code, it is necessary to improve efficiency.
(2. Logical thinking ability: To see more complicated logic code, analyze complex logic.
(3. Global Ability: Don't change it again, but we are wrong. (Technical software is very important)
(4. Learning ability: Not every project is you familiar with the project, not everyone in each project, you know that you have to master the latest technology and most useful knowledge is the most critical. To learn , Improve your ability, this thing is always good for yourself.
(5. Communication skills; learn humor, learn to tell stories, learn to make friends, learn etiquette.
(6. Homemade Ability: If a person can't make homemade this person, there will be no big results, even if it is very chance to develop, but because there is no self-made ability, it is easy to use, or you know how to do it, but It is not to control your desire. And I will not be able to recover in the error.
four. Example: Java programmer's knowledge structure and learning process:
(1) Learning related work must
1. Java language foundation (Recommended book: "Java Programming Thoughts")
The essential:
(1. Java object-oriented and corresponding program reality
(2. Java multi-thread
(3. Java Network Socket
(4. Application interface
2. Learn to use intelligent integrated development tools JBuilder, Eclipse, etc. According to the content, self-written and routine similar code, but pay attention not to directly copy it, be sure to write. It is best to write into an engineering to compare.
3. If you use the B / S structure to learn JSP knowledge (Recommended book: "JSP 2.0 Technical Manual") Key:
(1. Interface processing:
a. HTML - Hypertext logo language: Used to display pages such as hypertext links, tables, various markers, etc.
b. CSS - CAMB: A set of formats for controlling the appearance of the text. Used to beautify the HTML page.
c. JavaScript - Script language embedded in an HTML page browser: Let the page can perform dynamic changes in the client according to the user's operation or prior settings, and do not need to return the server. For example: the correctness of the form input is the client verification.
(2.jsp Elements: such as Java Code Writing, Correspondence Sign --- JSP: Include, JSP: UseBean, JSP: SetProperty,
JSP: GetProperty et al..
(3. JavaBean and its calls and related applications in JSP.
(4. Other technology:
a. How to operate the database - use JDBC (may have some database knowledge, such as Oracle, SQL Server,
Includes how to write high efficiency query SQL, stored procedures, etc.),
b. How to send email- with javamail,
c. How to learn how to download it with the upload of the file, if you operate,
d. How to operate XML - use JDOM and JAXP (it is necessary to learn XML grammar such as DTD, etc.)
e. How to call remote method - use RMI
f. How to make a message service --- with JMS
5. Some companies will use the J2EE architecture such as EJB as business logic.
(It is clear in 1.EJB
(2. Struts MVC
(3. Hibernate Operation Database
6. It is best to learn UML
Study Rose modeling
Five advice:
1. Don't think that it is very poor, you must understand that everyone is coming in a footprint. (We have to be confident)
Telling from: Bill, it is also the same as us.
We only learn more, and you may have a way out.
2. Don't think that you have a very strong since you have learned. Many people in the world are, ask yourself, you can write a few lines of code every hour, how much error is written again, if you write there is no mistake, one When you write 1000 code, it is true master.
3. Don't think that there is no project to make it behind others. People have participated in many projects, but people are just a small role in the project. If we have some open source projects, or develop and design them themselves. Useful open source projects, levels and abilities are coming soon.
4. Don't think that you have done a lot of projects. You can say that you can do it, can you understand why the entire project is designed like this, why do you want to develop this? I believe most of them are negative answers. It is better to learn some of the projects that have been made, understand why they want to do this, why do you have to look at the documentation of their projects, we can understand a lot, this way to put their experience on your future, you may have to take over the future. Isn't this better?
5. Don't think that your own learning ability is very cattle, can you quickly read a book and quickly master its content?