What is the most effective way for a developer to switch between tasks?

I am looking for a description of the type of workflow of the series of steps that you take to switch from one software development task to another. If the step includes a tool, please indicate which tool and how it is used. The purpose of the workflow is to ensure the maximum possible transition from task No. 1 to task No. 2 and return to task No. 1.

Consider this scenario ...

  • You are introducing a new user story, and while you have made progress to date, itโ€™s not completely done, and you have not yet completed your tests.
  • Your leadership comes to you with a high priority error that blocks your test group. You need to stop what you are doing and fix the error. An error in the assembly from three days ago, which is the most recent assembly that the team experienced.

You can fix the error in the new version of the sources, but it must be a stable version and cannot include the incomplete function that you are currently working on.

+6
survey
source share
6 answers

I would say that the steps you need to take in the scenario you are describing are 100% dependent on the development environment and the tools that you set up.

Using Perforce to control source code versions, we created a branching system in which releases are separate from development, and all development branches are from a single โ€œacceptโ€ branch. Each branch is used for one problem or for a set of very closely related questions. No other problems can be handled in the branch until the changes are integrated into the adoption branch.

Yes, that means we have many branches. Yes, we do a lot of synchronization (reception before the work branch) and integration (separation of work before adoption). But its value is innumerable when it comes to a simple transition from one task to another, a return to test construction, identifying two problems associated with a piece, etc.

After the development has done its job (including its own tests), the problem is tested by the QA team. First isolated in its own branch. After that, it integrates into the receiving branch, and regression testing is performed to find problems with independent problems biting each other. Therefore, when all releases for a release have been integrated into acceptance, the QA team performs a full regression and a new functionality test.

So, the adoption branch is always the "last" state of development for an application.

In this setup, the described scenario will look like:

  • Leave my current task as it is, maybe check for any changes so that you donโ€™t lose them if your computer crashes. If this means breaking the daily build of this thread, I would not register if it was not easy to fix compilation errors. (Please note that we have many applications in our application suite, and although my changes can be compiled in the application I'm working on, they can still break the compilation of other applications in our package). Our rule: each element may interfere with functionality, but should not interfere with the assembly process.

  • Find an โ€œemptyโ€ branch - a branch that is not currently used for any development work, or, if all branches are busy, create a new one.

  • Force synchronization of the adoption branch and the selected work branch so that my machine has the most recent state for both branches.

  • Synchronize (force, if necessary) the last state of the adoption branch to the working branch, so the selected working branch is the same as the acceptance branch.

  • Open this application suite in the IDE, debug and solve. Submit to the work branch.

  • Tell QA to look at it in the work branch. If they are satisfied with this, integrate the changes before adoption so that they can continue testing them.

  • Switch the IDE to work with the application package in the branch I worked in before.

  • Rinse and repeat.

+3
source share

Alt + Tab is how we do it.

+12
source share

Task switching is the subject of the brain. I do not think there is a tool for you. If there is, I am also interested.

Each person has his own way of preparation, some do not prepare at all and are in another, like a binding, some take more time, etc. It depends on the man / woman.

Of course, you can try to create some mental milestones (take a note, put a reminder, etc.) to return to it when you return to the task, but this again depends on other factors (how much time was switched to the task, how quiet office, getting to know the task, moon phases , etc.).

The most effective way for a developer to switch between tasks that I consider subjective. Meanwhile, have you read Human Task Switches considered harmful by Joel Spolsky?

+8
source share

Given your scenario,
You can check the stable version of the sources in another working copy, fix the error, fix it.
When you get back to your part-time job, upgrade and keep working.

+2
source share

When you are working on something, you usually have a few ideas, a few things that you plan to do, some things that are not clear and need to be resolved later. When you switch to another task, it is lost.

It was convenient for me to record them somewhere - to take a picture of the brain. Later it is easier to recover and return to the original task faster.

+1
source share

I mark every file that I work on inside the Task / Todo element with a reminder in approx. how much time will I be from him. Then I save and close each of these files so that they do not distract me / eliminate clutter / create a place for a new task on my desktop. I have a flea memory, so I need all the help I can get.

+1
source share

All Articles