Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js
Software and Web development can be really exciting. After years of development, it can reward you with a million dollars or became a groove. Many of us usually are about all can hope for just keeping heads above water. But I think this is not our goal when we dream at school and the university.
To earn more, many of us search for some additional work and can't bother about anything except hands-down programming. We can't take a rest, can't spend more time with the family and friends—we can't do anything other than work. This leads to stress and an unsatisfied life.
But wait. There is a way to make life better. A few time management principles can bring our lives to success and improve software and Web development to be really profitable and fascinating work.
Set Up Your Goals: Long Term and Short Term
To make life better, first of all you need to know what is a "better" personally for you. Where do you want to be next week, next quarter, next two years, or even next 20 years (if you're young enough). You must decide for yourself what are want from your life, and why you are still where you are.
Do not Do Lazy Planning
Napoleon said that only properly planned things can produce the desired result. Don't ignore this principle; invest time for planning. Remember, mussing is not planning. I like the classical citation: "Sometimes I sit and think and sometimes I just sit." Usually, this phenomenon can eat much time. If you find yourself mussing, switch to another work, look out the window, or simply relax your eyes.
Update your plans according to reality regularly.
If You Can't Plan, Just Track
Watch for yourself if you can't plan anything this time; you will be able to come back to planning later. Just track what you are doing on paper, an Excel sheet, or use task management software. Update at least hourly, not at the end of the day. This will help find common interrupters and recurring tasks; thus, you can plan these things in the future.
Look at your time journal and try to find things that don't really need to be done, things that could be done by someone else, work that can be done more effectively or quickly, and actions that waste others' time.
You can download a simple time tracking template here.
Collect All Tasks in a To-Do List
Sometimes, we doesn't have anything to do, but later we remember (or a manager remembers for us) a lot of important tasks that automatically became urgent. To avoid such situations, collect tasks in a to-do list. Add tasks to the list whenever they come from your boss, colleague, or your own mind. If you can't access the computer, don't try to remember the task; write it down on a scratch pad or any other media. Transfer it to the main list when possible.
Estimate every task and set deadlines yourself. This will help you avoid doing things at the last minute.
Drucker Dictum said: "Doing things right is not as important as doing the right things." In software and Web development, it is possible to spend a lot of time on tasks that produce insufficient value for a customer or even do not produce a value at all. For example, writing a regular expression to split a coma-delimited array or, even worse, writing a CORBA application to access two methods on a remote server. There is no silver bullet that can shoot all prioritization cases, but a few tips can help:
- Ask the customer or manager for task ordering and prioritization first. Be sure to do this beforehand; not every customer will answer immediately.
- If someone else depends on specific a task, do it first.
- For equal tasks, set priorities using task difficulty. Do the ugliest tasks first.
Delegate when Feasible
If you know people around you who are available to take a part of your work, do not hesitate to delegate it. Give objectives, not procedures; require responsibility and accountability. Describe the task clearly. Provide a "how to test" example.
The following rules can be used to determine whether to delegate a specific task:
- Will he/she do it better or quicker than you? If yes, no doubt, delegate it.
- Will you commit a task to somebody if you have more important tasks to do? If yes, delegate it.
- Can the available person complete the work without your assistance when you are out of office? If yes, delegate it.
- Of course, you can even delegate your work to your boss, but do not abuse that privilege.
In a multi-project environment, the whole team's work cannot be distributed equally to every member. Someone will have to do more and someone less. Using Goldrat's Theory of Constraints, a project cannot be completed until the slowest member completes his work. Thus, delegation must be used inside a team, from manager to developer. This process can be effective only in teams with honest and open communication, like in XP teams.
Perfect Is not Better than Good
When writing code, for example, it is more important to finish on time than worry about the perfect solution that fits for all. Get the job done and you can add more features later. Do your best and "get it right the first time." Do not save on coding conventions and code quality. Pure code will lead to many problems later and unnecessary time spending for fixing and debugging. Use unit tests; they will speed up high quality development and will provide more confidence in your code.
Split Difficult Tasks into Bite-Sized Pieces
People usually avoid difficult tasks. Break them down into small steps. Complete manageable chunks and soon you will notice that the problem is resolved. A very helpful approach is to add a "how to test" to each task. This will set up a micro goal and will allow you to determine task completion. Of course, if these tests can be automated, this will reduce time on repeating tests.
Identify Your Time Wasters
Usually, we deal with people around us. This can be our colleagues, friends, or relatives. They bother or gladden you in various ways. They can contact you directly or via phone, instant messaging, or e-mail. This leads to interruptions as well as time spending. An Interruption of 6–9 minutes will take an additional 4–5 minutes to recover. Five interruptions will shoot an hour. You must reduce the frequency and length of interruptions. But, you can't firewall yourself or ignore others. For example, ignoring your wife's phone calls will be really badly for you. The only way to reduce such time spending is to investigate repeatable time wasters. After you know the whole picture, you can decide where you can save and where you can't save. Be sure that your boss is not a time waster in any case.
Plan Times for Relaxation and Recreation
Keith Frayn, professor of human metabolism at Oxford University, told TV Plus: "Any normal person could survive for up to 60 days without food on just water." Without sleep, people can break much quickly. In 1964, high school student Randy Gardner attempted to break the Guinness Book of World Records for the longest time awake—260 hours. Stanley Coren describes the day-by-day impact on Randy in the book Sleep Thieves, as documented by John Ross of the US Navy Medical europsychiatric Research Unit in San Diego. Randy had trouble focusing his eyes on day 2, had hallucinations on day 4, and slurred speech and a short attention span by the last day.
Do not expect high productivity if you are tired. Sleep recharges our brains and helps us think more clearly. Plan your day adequately; do not save on sleeping.
Developers usually sit 8 hours a day and more in a work place near a computer. This leads to both emotional and physical diseases. One of our exposed organs is our eyes. Looking at the monitor, even an expensive one, for a long time will ruin our eyesight. To reduce the pernicious influence on our eyes, there are many techniques of eyes training. Type "training eyes" in Google and find suitable training for you. Schedule it daily, just before dinner, or at any other convenient time.
Do not Hesitate to Ask Friends or Colleagues for Helpful Advice
Almost every IT project has risks. They can be hidden or visible at the beginning. Developers have to resolve them. Working on a risk, even a small risk, can take days even weeks. To avoid this time spending, just ask advice or help from your colleagues or friends. I have many examples of how this rule reduced time on difficult tasks and prevented project failure. An example from my practice: Customers of our recent project required extra safety of the application from possible cracks. One part of the protection was downloading a component from a server and loading this DLL to the application without writing to a disk. After two hours of research, I didn't find any useful information. I paused for a minute and tried to recall who can help me with it. I asked a friend who worked as a developer in another company and he helped me. He sent me a link to a tutorial I looking for. The problem was resolved.
We all expect a reward or praise for completed work. Lack of a reward will kill our desire to work; that leads to reduced productivity. This is why we prefer working for others than doing something for ourselves. Promise yourself a reward for completing each task or finishing the total job. For example, let yourself watch an interesting movie when you finish developing a page or new feature.
This list of time management tips is just a starting point to a new, improved life. Leading by these principles from day to day will show the way to a successful career, robust health, and welfare.
My university teacher always told me that every detail is important. In most cases, if we did not achieve something, this happens due a little, but importantly, to what we forgot or skipped. Help yourself to reach your dreams. Avoid chaotic motion; plan and manage your life time.