📜 ⬆️ ⬇️

Out of my head. GTD in development

If you have a cup of cooled, desired coffee or tea on your table, it means that something is wrong. In any case, David Allen, the author of the famous GTD (Getting Things Done) method, would have thought so. We grab for a thousand cases, trying not to forget about domestic trivial things, we often forget about the goal, but remember the inevitably approaching deadlines. Sometimes the fear of an avalanche of tasks literally paralyzes the brain and apathy, procrastination, and depression occur. Work at such moments moves slowly, it seems that even the mouse cursor barely crawls on the monitor. This situation is the more dangerous, the more a person works in a team, especially when it comes to a team of developers.



The idea of ​​inviting David Allen to our GeekWeek-2015 conference was unexpected, but not accidental. The personal, at first glance, GTD concept gives good recommendations for each individual developer and the development process as a whole. Of course, the GTD method is not so “sharpened” under the software development process, as agile, but nevertheless, it can complement it or become the first step in the team’s transition to a flexible development methodology. What is it, GTD for a programmer?

We divide the use of GTD principles in development into two blocks: personal, when it comes to an individual, and team, when it comes to a company or a group of developers. In general, the principles are the same, but in a team they are much more difficult to implement, since it is guaranteed that there will be sabotage and resistance on the part of the workers or the team leader.
')

No man is an island


One of the foundations of the GTD method is the principle of moving tasks from a person’s memory to an external source. Thus, the human brain ceases to take care to keep all plans in mind, from minor to global, and begins to concentrate on the tasks that are really important at the moment and their implementation. Someone says that the GTD method can be effectively used to free up personal space and find a balance between work and, for example, a hobby or a family. However, from the point of view of a practical developer, GTD is needed primarily to maintain a balance between work and ... work.

Programmers, system architects, and project managers are continuously located within several priorities, tasks, or projects. Often, circumstances exclude the management of a single task, so you need to be able to quickly restructure. Such a throwing from project to project often generates stress, but not the one that arises from disliked work, but stress as a physiological and emotional phenomenon. The higher the alarm level, the more difficult it is to cope with the tasks. This is where GTD comes to the rescue.

Set filters on to-do list


First of all, you need to set limits by selecting the main among all tasks. Leaving the most important thing, you release time and energy and create an impulse for actions with much less labor costs than when you keep all the little things in your head. There is a routine, there are important projects, there are plans for the future. In this case, in all the categories listed there is the main thing. To select it, you need to perform several steps:

As a rule, the main one is in the first three groups. Accordingly, priority attention should be paid to troubling and unfinished business - after all, it is not for nothing that the exact translation of Getting Things Done is “to bring things to completion”.

Organize communication


It doesn’t matter whether a freelancer or a programmer works remotely or in a team, he is constantly in the field of communication: customer calls, management questions, requests from users and colleagues, informational messages from SDK vendors and so on ... These communications cannot be called insignificant, but you need to be able to competently handle .

Confidence that you have such a list is guaranteed to reduce the level of anxiety and help focus on solving each of the tasks.

There is a more global problem that also affects developers of any type of employment. Today, almost every week, new tools, guides, utilities for developers come out, messages about new versions of frameworks, new libraries, and even new programming languages ​​keep appearing. All this information arouses the extreme interest of professionals, and sometimes even fascinates and forces you to try something new (create a simple mobile application, write “Hello, world!” On Brainfuck or collect a new open-source project). There is only one way out: to distribute interests according to their importance in relation to current projects, short-term and long-term goals. Focusing on one task provides an opportunity to increase personal productivity, free up time and start exploring new information.

5 optimization steps


The GTD method identifies five stages of work on a to-do list.

Collection of information. It is necessary to collect all the tasks - just take and write down all your routine, unfinished, global affairs with a pen or text file. At the same time, it is important to remember that, for example, the task “Write a report in the Fast Report for Snowman LLC” hides several important and demanding subtasks: collect requirements from the client, compile and approve TK, request an array of data for testing the report, etc. ... It is necessary to record absolutely all the tasks - a little later you will group them.
Pay attention not only to those projects that are in the memory, but also to those that are in the computer - often there is not less chaos than in thoughts. It is necessary to separate files into folders corresponding to each project, separate personal documents from workers.

The processing. Process the information according to the scheme proposed by GTD: if something is already being executed, you need to continue the matter until the end, if you can do it in less than two minutes, do it right away.


Classic GTD processing algorithm

From the point of view of working on a key project for you, it is important to consider a few nuances.


List organization. After the first two and most difficult stages are completed, it is necessary to organize work with tasks. Here you can use a simple rule: divide the time into weeks, at the end of the week review the list and create a new one. All tasks should be divided into deadlines and priority. To manage tasks, you can use any of your favorite applications: these are mobile OneNote and Evernote, and Asana, and Redmine, and Google Calendar, and so on ...

At this stage, the main thing is to pay a lot of attention to working with current or several projects. To do this, you can use the associative maps (mindmap), which will reflect all the stages of work in the form of a visual structure of the map, in accordance with which you will move through the project. To create a mindmap there are many paid and free applications with interesting features. We like the convenient, free and Russified Freemind , in which we created an approximate look of an unfinished card that does not pretend to the truth:



Part 1



Part 2

It is not necessary to divide the tasks into simple and complex, you need to do everything in order, then time will be distributed rationally.

Revision made. At this stage, it is necessary to note what has been done, analyze the causes of failures, create a plan for the next stage (for example, a week).

Actually the action. Perform tasks should be based on available resources: forces, time, place of execution, as well as the established priority. If for a quick solution of the problem you lack some resource that will appear later, try to transfer the task to the moment of the appearance of the means of its best execution. For example, if you are working on the development of a desktop application and to make part of the changes, you need an updated and not yet purchased by your company, but planned SDK to be purchased in the near future, make the changes that can be made in the current version, and make the remaining changes task in the folder or a file with tasks for the future. Of course, the search for ways to solve the problem with the available means reveals you as a professional, but it requires a large and not always justified expenditure of your time and effort.

Here are some tips on how to use GTD principles if you are a developer on a team or working independently.


GTD cannot be introduced in one day - first some separate elements appear, then rules are formed, finally, a habit and a tangible result appear. The main thing is not to stop. By the way, not bad, if you can transfer part of your skills in GTD to the team you work with - this can significantly optimize work within the company.

There is safety in numbers


Despite the fact that GTD, as a rule, is aimed at an individual, it is applicable to the team, in which it is important to be able to define the vision of the project, goals, identify projects and distribute areas of responsibility. Especially since many organizations already exist and are successfully using, perhaps, the closest entity to the logic of GTD - the Gantt diagram. The Gantt chart very accurately reflects the project’s need for resources, tasks and subtasks, the approximate time to complete each task, the start and end dates for the task, the phases of the project that can start only after the previous stage and the release of the required resources.

However, often all the work on drawing up a chart of resources and employment are in vain. Linking GTD to software development, Robert Peak, a GTD evangelist and CTO of David Allen, a consulting company, who wrote technical projects and understands the topic is hardly worse than the CEO himself, wrote about the Gantt chart:

“I have seen so much time, energy, and money sunk into complex Gantt charts that were destroyed at the first click of the head’s fingers. Any company staking on ABC priority codes and tough reins for programmers to stay in the software development rearguard will be bitterly disappointed. ”

He also reveals the essence of the concept. The fact is that it is aimed not so much at planning as at the ability to return to the point of failure. We explain in more detail. There are moments in the life of any person and any team when they depart from their intended goals and all activities are plunged into chaos. This can occur both for external reasons and for reasons related to individual internal influences: a temporary change in the project development course, the emergence of a new investor with a new vision, a break for extra urgent work (for example, preparation for the exhibition). The task of GTD in the team is to easily return to the point where you had to move away from the work plan and continue to operate as before.

“Mind sweep is a component of GTD, quite simple, David (Allen - comment. Per.) Often refers to it as a kind of memory dump for“ psychic RAM ”. It is as if you periodically check your own brain to see what holds your attention, pull out and look at it. It’s as if you are collecting these lists of opportunities (projects and next steps), which serve as a safety net for you to make sure that everything you do is done correctly and combined with the rule of two minutes (if you can do something less than 2 minutes, do it - note lane) and thinking, aimed at the next action, gives you a static cast of your working state, with which you can easily return to the moment when you left off. ”

There are four basic actions in the development team, which themselves act as elements of a team GTD.

  1. Regression testing - already corrected parts of the source code are tested, as well as the functionality of the functionality associated with the modified code. As part of extreme programming, it illustrates GTD in terms of repeatability, revision, and unambiguous action.

  2. Working with documentation - the creation and testing of documentation allows you to just transfer important knowledge and tasks to paper. They do not need to be borne in mind either by users, testers, or developers - if necessary, you can refer to the documentation and clarify an unclear point or find an answer to a question about the work of the program.

  3. Code refactoring is the process of improving code without changing functionality. Adherents of extreme programming conduct periodic refactoring in order to improve the performance of the program, its understanding and readability of the code. There are companies and teams that avoid refactoring. In most cases, this is due to concerns that changes in the code will lead to a crash in the system. As a rule, this approach leads to stagnation and obsolescence of the program.

  4. Brainstorm. A process that happens in one form or another in any team. This is just a collection of information and ideas. During brainstorming and on its results, associative mindmaps can also be created.

In most cases, the programmer at work performs many more tasks than regular writing code. Moreover, the more experience and qualifications he has, the more heterogeneous tasks are assigned to him. At some point, a crisis occurs when duties and obligations begin to cause an employee and significantly reduce his productivity. Obviously, this can and should be fought, and not with prescriptive methods and repressive measures, but with the help of GTD, which aims at an evolutionary change in the approach to work. Numerous reviews of those who have tried this method tell about significant difficulties at the beginning and not less significant successes in the process. In the end, they say that the habit is formed in 21 days. Why not try?

PS: Listen to David Allen’s GTD method author’s free speech and ask him questions at the GeekWeek-2015 conference on November 17 (Tuesday) at 19:15 MSK. He will talk about GTD's approach to solving the problem of information overload and share the results of recent research in the field of human productivity.

PPS: Information for those who want to meet the speaker personally - this year David Allen is coming to Moscow with a master class.

Source: https://habr.com/ru/post/270865/


All Articles