Out of my head. GTD in development

    If on your table there is a cup of cooled down desired coffee or tea, then something is wrong. In any case, David Allen, author of the famous GTD (Getting Things Done) method, would have thought so. We grab onto a thousand things, trying at the same time not to forget about everyday trifles, 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 creeps along the monitor. This situation is all the more dangerous the more people work in a team, especially when it comes to a development team.



    The idea to invite David Allen to our GeekWeek 2015 conference was, though unexpected, but not accidental. The personal, at first glance, GTD concept gives good recommendations for each developer individually and the development process as a whole. Of course, the GTD method is not as “tailored" for the software development process as agile, but nevertheless, it can complement it or become the first step on the way to the transition of the team to a flexible development methodology. What is GTD for a programmer?

    We divide the application of GTD principles in development into two blocks: personal, when it comes to an individual person, and team when it comes to a company or a group of developers. In general, the principles are the same, but it is much more difficult to implement them in a team, since it is guaranteed that there will be sabotage and resistance from workers or team leaders.

    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 care about keeping in mind all the plans, 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 is 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, first of all, to maintain a balance between work and ... work.

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

    Set filters on the to-do list


    First of all, you need to set limits by choosing the main among all the tasks. Leaving the main thing, you free up time and effort and create an impulse for actions with much less labor costs than when you keep in mind all the little things. There is a routine, there are important projects, there are plans for the future. Moreover, in all of the above categories, there is the main thing. To select it, you need to perform several steps:
    • select started, but not completed tasks;
    • select matters of concern;
    • choose things that you don’t feel like doing and that are being put off all the time;
    • choose routine affairs, including household ones.

    As a rule, the main is located in the first three groups. Accordingly, priority should be given to worrying and unfinished business - it’s not for nothing that the exact translation of Getting Things Done is “bring things to completion”.

    Streamline communication


    It doesn’t matter whether a freelancer or a programmer works remotely or as a team, he is constantly in the field of communication: customer calls, management questions, requests from users and colleagues, information messages from SDK vendors, etc. ... These communications cannot be called insignificant, but they need to be able to be correctly processed .
    • Stop checking your e-mail every 5 minutes - set up pop-up notifications that you can look out of the corner of your eye. Put your mail in folders and read as you update at a specific time.

    • Separate all communications by context: Skype, mobile calls, landline phone, communication via mail, etc. ... Allocate a certain time for communication within each channel.

    • Check out work and personal chats. Perhaps if your new employee writes to you endlessly or the old colleague asks the same working questions, you should ask them to prepare questions, allocate time for communication and clarify all the difficult points.

    • Watch your web browser. Developers often watch related topics on forums or specialized sites. There they are lurched by interesting topics and discussions that have nothing to do with the current task. It’s better to postpone reading a really interesting topic, using bookmarks in the browser or special utilities for storing links (for example, the Pocket add-on, which can also be installed as an application on a mobile device and synchronize bookmarks).

    • Get a notebook and / or application where you will record all tasks with urgency and importance labels. The GTD for business management introduces the concepts of time, context (place), action. To correctly prioritize tasks, imagine a simple filter, as in Excel, for example. Assign each task a parameter of time (by hours or time of day), place (home, work, street, gym, store, etc.). And then divide the tasks in approximately this way: “request comments on the statement of work - work - 14:00” or “call the tire service - street - evening”. There are many applications for such recordings: from the Windows Task Scheduler, which you can use for your own purposes to Evernote, Rainlendar, and carefully written reminders on your smartphone.

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

    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 are released, and now and again there are reports of new versions of frameworks, new libraries and even new programming languages. All this information is of extreme interest to professionals, and sometimes it even captivates and makes you try something new (create a simple mobile application, write “Hello, world!” On Brainfuck or put together 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 makes it possible to increase personal productivity, free up time and begin to study new information.

    5 optimization steps


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

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

    Processing process. Process the information according to the scheme proposed by GTD: if something is already being executed, you need to continue the job to 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 several nuances.

    • To postpone non-urgent tasks, for example, the study of non-core materials that are not related to the current work.

    • Whenever possible, delegate tasks, for example, to colleagues or freelancers. If you quickly and efficiently write code, but do not do very well with the tasks of creating a site, advertising or design, contact the professionals. Even if this is your own project, investing in someone else's quality work will quickly pay off.

    • Learning to say no. This is perhaps one of the most difficult skills: there are always dozens of acquaintances who have flown Windows, an error crept into the code, requires Android firmware, and prays for the jailbreak of the iPhone. These small tasks take a lot of time. If you do not want to spoil the relationship, find several available manuals on the Web and send links to the afflicted.

    Organization list. After you have completed the first two and most difficult stages, you need to organize work with tasks. Here you can use a simple rule: divide the time into weeks, at the end of the week revise the list and create a new one. All tasks should be divided by deadlines and priority. For tasks, you can use any of the applications you like: 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 the current or several projects. To do this, you can use associative cards (mindmap), which will reflect all stages of work in the form of a visual map structure, in accordance with which you will move forward on the project. To create 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 view of an unfinished map that does not claim to be true:



    Part 1



    Part 2

    You should not divide tasks into simple and complex, you need to do everything in order, then the time will be allocated rationally.

    Revision of done.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.Tasks should be performed on the basis of available resources: strength, time, place of execution, as well as the established priority. If for a quick solution to a problem you do not have enough of a resource that appears later, try to transfer the task at the time the tool for its best execution appears. For example, if you are finalizing a desktop application and some changes require an updated and not yet bought by your company, but planned for purchase in the near future SDK, make those changes that can be made in the current version, and make the task for other changes 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 large and not always justifiable expenses of your time and effort.

    Here are some tips for using GTD principles if you are a team developer or self-employed.

    • Plan your project initially, and not along the way, split it into solvable subtasks.

    • Highlight the individual stages of work on the project and mark the importance and urgency of the work.

    • Bring each task to the end, without leaving it for later. Even if you know only a long way to solve a problem, solve it. In the course of further refactoring, it will be possible to get rid of a non-optimal solution.

    • Review task lists periodically to review completed and change plans.

    • Focus on one task at a time - this will save you time and effort.

    • Allocate time for each stage and give it maximum attention: on the collection of requirements, on development, on unit testing, etc.

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

    There is safety in numbers


    Despite the fact that GTD, as a rule, is aimed at an individual person, it also applies to a team in which it is important to be able to determine the vision of the project, goals, designate projects and assign responsibility areas. Moreover, in many organizations, perhaps the entity closest to the GTD logic is already existing and successfully used - the Gantt chart. The Gantt chart very accurately reflects the project's need for resources, tasks and subtasks, the approximate time of each task, the start and end dates of the task, the stages of the project that can only start after the previous stage and release the required resources.

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

    “I saw so much time, energy and money, sunk into the complex Gantt charts, which were destroyed at the first click of the leader’s fingers. Any company that relies on ABC codes of priorities and tight reins for programmers in order to remain in the forefront of software development will be bitterly disappointed. ”

    He 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 breakdown point. We explain in more detail. In the life of any person and any team, moments happen when they move away from their intended goals and all activity plunges into chaos. This can happen both for external reasons and for reasons related to individual internal influences: a temporary change in the project development course, the appearance of a new investor with a new vision, a break for long-term work (for example, preparation for the exhibition). The task of GTD in a team is to easily return to the point at which you had to move away from the work plan and continue to operate in the same mode.

    “Mind sweep (clearing the memory, clearing the mind - approx. Per.) Component of GTD is quite simple, David (Allen - approx. Per.) Often refers to it as a kind of memory dump for the“ psychic RAM ”. It is as if you are periodically checking with your own brain to see what is holding your attention, to pull it out and look at it. It’s as if you are collecting these lists of opportunities (projects and the following actions), which serve as a safety net for you to be sure that everything you do is done correctly and in combination with the two-minute rule (if you can do something less than in 2 minutes, do it - approx. per.) and thinking, aimed at the next action, gives you a static cast of your working condition, with which you can easily return to the moment when you broke off. "

    The development team has four main actions that themselves act as elements of a team GTD.

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

    2. Work 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 kept in mind by either users, testers, or developers - if necessary, you can refer to the documentation and clarify an obscure moment or find an answer to a question about 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 program performance, its understanding and code readability. There are companies and teams that avoid refactoring. In most cases, this is due to fears that changes in the code will lead to a crash in the system. Typically, this approach leads to inertia and obsolescence of the program.

    4. Brainstorm. A process that in one form or another takes place in any team. This is just a collection of information and ideas. Brainstorming and follow-up may also create mindmap associative maps.

    In most cases, a programmer at work performs much more tasks than just writing code. Moreover, the more experience and qualifications he has, the more diverse tasks are assigned to him. At some point, a crisis sets in when duties and obligations begin to burden the employee and significantly reduce his productivity. Obviously, this can and should be fought, and not with directive methods and repressive measures, but with the help of GTD, which is aimed 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 no less significant successes as a result of the process. In the end, they say that a habit is formed in 21 days. Why not give it a try?

    PS:You can listen to the online speech of the author of the GTD method David Allen for free and ask questions at the GeekWeek-2015 conference on November 17 (Tuesday) at 19:15 Moscow time. 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 get to know the speaker personally - this year David Allen will come to Moscow with a master class.

    Also popular now: