About programmer work efficiency

WBOY
Release: 2016-07-25 08:52:57
Original
1000 people have browsed it
This morning I came across an article by George Stocker, "How to Destroy Programmers' Work Efficiency", and an article by Joel Spolsky, "A Shot and a Change of Place." These two blog posts talk about programmer productivity issues, specifically patterns that reduce productivity. So I thought about sharing my practical experience of improving my productivity.
Passion
The first tip to improve your work efficiency is to be passionate about the projects you work on every day. You must be sincerely optimistic about the project you want to do. You have to imagine how cool it's going to be a year, two years, three years from now. A few times I took a moment to think: hey NDepend (my project) has evolved so much over the past two years. Two years ago, I imagined that all these new features and improvements it would have would be science fiction. Today it is a reality and has been shipped to real-life users around the world. So cool!
Patience and Faith
So not only passion, but even love and patience are needed. Measuring the work achievements of the past X years has made me realize that doing one feature at a time, one improvement, one bug fix, and one line of code is written. This one-at-a-time thinking keeps me improving. Every success in the past breeds more success in the future. Motivate yourself every hour to be more productive because there is nothing more important (professionally) than this.
It seemed like I spent the whole day solving an annoying bug today, and if I hadn't been so stupid all the time I probably would have fixed it in half an hour! There is no pressure at all. Too many things like this have happened in the past. Looking back on the road I have traveled over the years, I understand that this is the path I want to take. This is confidence.
Start now
The central point of a project should be that we know where to go. Short term (days, weeks), medium term (months), long term (years). What the short term means to me is that my code base is filled with priority comments, with priority 5 being more urgent than priority 4. This may sound like a very basic to-do list approach, but to-do lists have powerful advantages. Action plans appear where programming operations must occur. Therefore, starting work on an action plan eliminates the process of figuring out where to start programming priorities. Starting this behavior right away (or not starting it right away) is a productivity killer. So anything that helps you start writing code right away is a productivity asset.
Another benefit of action planning is that when all the planning is done, the job is done. Since all tasks surrounding programming (writing tests, code reviews, verification, etc.) can and must be arranged in action plans, no action plan is no longer a simple definition of work done.
Focus
Of course at some point the action plan has to be laid out and then the code has to crawl to where they most likely should be. Usually this is what happens when starting work on a thing (a product backlog item). At this point the product backlog items are transformed into (several or many) priority backlog items, with the priority depending on the size of the product backlog item. It might be a bug that takes an hour to fix, or a feature that will take 3 months to develop.
You shouldn’t have more than 10 priority to-do items at a time, because an important tip to increase productivity is to focus on what you’re doing. Therefore, this function can be broken down into 90 first-class priority to-do items and 10 second-class priority to-do items, and then we can select 10 of the 90 first-class priority to-do items to complete. If the Type 2 priority to-do you are currently working on is too worthwhile, you can convert it into a Type 3 priority to-do and so on.
In this way, every morning you only need to look up the to-do items in your workspace and you will know what to do immediately. You don't have to think about what to do today, just start right away and stay focused.
Goals
Imagining mid-term (months) and long-term (years) goals can cultivate work passion and day-to-day work efficiency. There must be two to-do lists kept to do this. Since NDepend closely follows the release of Visual Studio, our sprint period is about 12 to 18 months. So we have a mid-term list of things that need to be done between now and N months before we release the next major version. The mid-term list is driven by both ROI (return on investment, the ratio of feature performance to development investment) and user voice, which provides good input on the performance of each future feature. The same applies to long-term lists, except for lists that are not bound by a sprint period.
Psychology
So far, I’ve highlighted several project management and organizational experiences that illustrate how keeping passion intact can lead to increased productivity. But passion, patience, information, getting started, focus, and goal setting are all about psychology. Here are a few classic psychology practices for staying productive:
It’s certainly essential to have a healthy and happy life. Personally, I need other things in my life besides programming: friends, family, kids, and hobbies. There are a few hours every day that must be dedicated to something other than code. One must sleep well and work during normal hours. When you are most focused on work (usually early in the morning or late at night) you must determine the time and try to work during this special time. This may sound obvious to you (and me), but the super obnoxious individuals out there need to be aware of this. You can't write code for 14 hours a day and still be productive on a long-term project.
I find that exercise has become the most creative way to enhance my programming career. Running regularly is a productivity routine for me. Not only does this process allow me to come up with new ideas naturally, but endurance exercise also triggers the rapid secretion of endorphin hormones, which can very well relieve pain and stress. People who run can actually easily become addicted to this, which is a very enjoyable process. I regard exercise time as part of my working time. Doing this is very practical and never miss a meeting. Incidentally, I recently discovered that Alan Turing came up with a lot of his great ideas while running (he almost ran the 1948 Olympic marathon).
In addition to exercise, I also meditate every day, especially MBSR (Mindfulness-Based Stress Reduction). Doing this makes me quieter, more peaceful, and more focused. MBSR is very simple and can be done several times a day during a meeting of just a few minutes. It is mainly based on developing people's ability to feel the present moment through breath observation, awareness, and feeling of the environment. The key is to develop the ability to "not be happy with things and not be sad with yourself". We all know that if a person wants to build muscle, he must exercise, but few people understand that the brain can and must be trained to function well. In general, MBSR and meditation are used to train and develop the brain and cognitive abilities.
When linking psychology and work efficiency, we often hear the concept of "flow". "Being in a state of flow" means being completely focused on the current activity. Achieving the conditions for "flow" is the god of work efficiency: maintaining passion for work and solid skills. We often hear that it takes 10,000 hours of practice to master a skill. "Flow" happens more to experienced programmers. Another condition for the magical "flow" to occur is to accept tasks that are challenging enough. It's impossible to achieve "flow" by doing simple things. The good news is that programming is not an easy job.
Of course, avoiding interruptions is also a very important aspect when it comes to work efficiency. There are some interruptions that you can control, such as processing emails twice a day in batch mode instead of debating online, browsing social networks from time to time, etc. This is where meditation and exercise play an important role, because concentration is improved. . There are also uncontrollable interruptions, whether they're colleagues, meetings or kids (if you work from home). You have no choice but to deal with these interruptions and focus as quickly as possible.
For those of you who didn’t get to work with me, here’s a bonus theory. For example, I do 3 hours of coding work in a group arrangement, and then I go to the beach for an hour. This doesn't just work for me. I think of it as a reward if I want to go to the beach after I finish work. Reward theory may work for people who are not passionate about their work. The first responsibility of your career is to find a job that makes you passionate.
Receive LAMP Brothers’ original PHP tutorial CD/"Essential PHP in Details" for free. For details, please contact the official website customer service: http://www.lampbrother.net
PHPCMSSecondary development http: //yun.itxdl.cn/online/phpcms/index.php?u=5
WeChat development                                                                    
Mobile Internet Server Side Development http://yun.itxdl.cn/online/server/index.php?u=5
JavascriptCourse http:// yun.itxdl.cn/online/js/index.php?u=5
CTOTraining Camp                                                               

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!