This article is from Pingxi, a blog of killman. Liu.
, Original link in: http://blog.feihoo.com/2010/04/work-effcient-thoughts.html
I personally feel very touched after reading it. I would like to recommend it to you here.
How to improve work efficiency
In recent years, the efficiency has been quite high. Looking at the work efficiency of the past few years, there are few such neat and fast jobs that do not work overtime. Over the past few years, my work efficiency has been improved in the following aspects.
I. Centralized goal
Focus on goals.
In a period of high work efficiency, the work objectives are very clear. When I go to work every day, I want to understand what I want to do today. When I get off work every day, I want to know what I have achieved today and what I have not yet achieved. Although I come to read the stock news every morning, take a look at the stock news after lunch, and occasionally make a break in the afternoon, I am very focused at work, and I am not distracted at all.
Detaches tasks/problems unrelated to the current user.
Focusing on the target is not so easy to achieve. I'm impressed that the problems that I often encounter in my previous work are those at work. On the one hand, it may benefit from the enhancement of basic skills. Although some problems have been encountered recently, they can all be solved by simply reading, searching for documents, or browsing the source code of the problem-related libraries;
On the other hand, I have always avoided complexity and simplicity. First, I tend to look for simple and reliable solutions, and record the doubts in my mind into a list, turning over books outside of work, system Thinking and learning, instead of exploring related content. In short, focus on the current task, record new problems, and focus on solving them later.
For example, I used ibatis for the first time and met some tables that can use collections and ing to enhance the OO function of pojo. However, I am not familiar with these features of ibatis and it is feasible to use a simple solution, therefore, it is easy to use the solution directly (in my opinion, ibatis is mainly used to centralize SQL management, simplify SQL manipulation, and do not catch a cold on OO ).
Work list.
Whether it is development or design, a text-format to-do list located in the source code storage system together with the todo items in the IDE constitutes an important tool to focus on. The decomposition of work objectives is the basic work step, recording new problems (tasks) generated in the work. In this way, more and more sub-problems are involved, and more tasks are required in the project. Adjust the current job list regularly and divide these jobs based on their importance. Eliminate some problems every day and often think about the most important problems.
Simple but traceable design materials.
In the process of thinking and work, on the one hand, the project process is usually relatively long, and on the other hand, people with relatively rich experience always have multiple tasks in parallel. When the time is too long to remember or the task is switched, you often need to check the previous Code and design, and design materials that are easy to modify and have historical records are very meaningful to keep the design idea complete. (Design materials should also include important diagrams)
Formal and accurate requirement documents that can be relied on.
No matter how you say this one, you can check the requirement document if you are not sure about your requirements. If not, ask the person who can answer the question, entrust it to him, and do something else first. I think that in a previous company, I often have to assume a variety of roles, and even don't have to make a final decision on the demand. It is very annoying to make decisions between ambiguous requirements during design and development. For a design/development engineer, the requirement engineer is absolutely authoritative in terms of demand issues. If there are some suggestions, you can suggest them, but everything is subject to requirements/product personnel.
Unit test.
Unit Testing also helps to focus on coding. Unit testing allows me to focus on implementing the current function and other functions that need to be depended on. I always turn into an interface, so that the current function can be fully implemented after being tested. One day, one test lights up green, one interface is implemented, and all day is quite pleasant. Another benefit of unit testing is to rebuild it with confidence and create new features with confidence.
Ii. Ability to simplify Problems
Whether in the broad sense of work methods/attitudes, or in the design/implementation of specific problems, I think the most important personal ability is simplified. Simplicity is the core of all work methods/software design. Cut down the jobs that can be cut down (a record at most) to make it as economical and simple as possible.
In terms of work methods and attitudes, the work that really needs to be done is worth doing, and the work that should not be handled in the current work should be vigorously cut down. For example, unnecessary optimization, unnecessary scalability, unnecessary performance, unnecessary functions, unnecessary technologies, unnecessary processes, and unnecessary documents are all cut off,Everything can be none
.
Non-critical problems may also be encountered in the work. They are usually bypassed and a simpler solution is used. It is the easiest time to get stuck with these unimportant problems. For example, eclipse suddenly breaks down. The best way is to reinstall one;
Another example is that I used to build a continuous Integration Server on my own. Now I directly develop the habit of manually running it once I write the code (provided that it is sufficient ). Simplify your work! Simplified!
In terms of design/implementation, the best solution is the simplest, straightforward, and understandable solution at a glance. I remember that in a new environment, there was a statistical task that required both database and cache. I made a fine-grained design to ensure final consistency, and the State process was complete, the thread pool is used to concurrently Run batch processing and then merge. Although the control is perfect and fine-grained, the process and structure are complicated. Based on previous project experience, the above section provides a simpler example to divide tasks into multiple threads and store them separately. At this time, freeze data for statistics on all partitions. The status is halved, and the process is halved.
In fact, as a simple and direct incidental effect, the simplest and most direct method usually has the best performance.
The ability to simplify problems is the core capability of a person.
III. Basic Skills
Basic skills are complex. First of all, my understanding of the entire computer system, my understanding of the nature of the operating system, virtual machines, and databases, and my understanding of the language basics and libraries.Core Basic Skills
.
The second basic skill isLearning Ability
.
You can quickly read the core document to understand the core idea, and other things can always be found in the document. You can use the details as soon as you learn them.
The third basic skill isSearching and collecting documents and materials
.
If you want to run smoothly at work, you can also avoid the technologies and tools that you are not familiar with at the moment. unfamiliar things are difficult to use and are more difficult to use smoothly. In particular, do not touch complicated and flashy technologies. This is within the scope of simplification.
Iv. Tools
The core criteria for selecting a tool isSimple, simple, and trustworthy
.
Text format design with easy-to-Modify diagrams.
I like to use a simple text format to record the design, modify it at any time, and check it at any time. A few simple and direct images are attached, which can express more content more simply and directly.
Simple and reliable tools. I used it for a long time to build a Maven environment, and used Maven to manage dependencies, especially when working with Eclipse, it is often strange. Now I use ant or Maven only. MAVEN is not entangled with eclipse. If a tool encounters a strange phenomenon several times, you can simply drop it.
Version management tools. Not only does the source code need to be managed by the version, but all the knowledge of the entire project process should be managed by the version management system for centralized storage. Now I use subversion and git.